hyperion.ng video grabber for webOS

Overview

hyperion-webos

hyperion.ng grabber for webOS.

This piece of software does high-framerate/low-latency capture of contents displayed directly on webOS TVs and transmits these frames to hyperion.ng over the network.

Requires root.

Based on reverse-engineered internal system APIs. Still highly experimental.

If you are looking for a user-friendly UI that ships this piece of software check PicCap. This application mainly is the underlaying service for this software.

Known issues

  • libvt: may cause flickering or "No Signal" until reboot
  • Everything is based on highly platform-specific reverse-engineered internal system APIs. Standard no-warranty clauses apply.

Backends

This software uses multiple capture backends, that may work differently on some webOS versions/hardware platforms.

Backend Description Video UI Framerate webOS
libdile_vt Low-level library used internally by libvt ✘¹ 60 3.x+
libvt High-level video rendering library, uses OpenGL, may cause flickering/"No signal" until reboot ✘¹ ~30 3.x+
libvtcapture High-level video capture library, uses Luna bus, could possibly work without root (not now) ~25 5.x+

¹ - UI capture could be added at some point in the future

Running

hyperion-webos together with *_backend.so libraries need to be copied onto the TV, eg. into /tmp directory.

cd /tmp
./hyperion-webos --help
./hyperion-webos -S -b libdile_vt -a 10.0.0.1

Issues reporting

When reporting issues please include result of the following command:

grep -h -E '"(hardware_id|core_os_release|product_id|webos_manufacturing_version|board_type)"' /var/run/nyx/*

This contains model/hardware/region/software version, without any uniquely identifiable information.

If a segfault/crash occurs, a crashlog file will be generated in /var/log/reports/librdx or /tmp/faultmanager/crash/. This contains process memory dump and backtrace, but should not contain any uniquely identifiable information. (though, this is not guaranteed)

Comments
  • Doesn't work for webos 4.9 ...

    Doesn't work for webos 4.9 ...

    Super project, thanks! But it doesn't work for me. Here is the log:

    root@LGwebOSTV:/media/developer/apps/usr/palm/services/org.webosbrew.piccap.service# /media/developer/apps/usr/palm/services/org.webosbrew.piccap.service/hyperion-webos_libvt -a 192.168.1.97 [EGL] Display, major = 1, minor = 4 [EGL] Surface size: 192x108 [EGL] init complete [VT] VT_CreateVideoWindow [VT] window_id=0 [VT] VT_AcquireVideoWindowResource [VT] resource_id=85 [VT] VT_CreateContext [VT] VT_CreateContext Failed

    "board_type": "K5LP_DVB", "hardware_id": "HE_DTV_W19P_AFADABAA", "product_id": "60UM7100PLB", "core_os_release": "4.9.0-53904", "webos_manufacturing_version": "05.00.15",

    Can I fix it somehow?

    dile_vt 
    opened by Sanek78 30
  • Errors on LG TV

    Errors on LG TV

    My lg tv is rooted and i got the source to compile using the ndk. But when running i get an egl error:

    hyperion-webos: /source/src/capture.c:206: egl_init: Assertion `eglGetError() == EGL_SUCCESS' failed.
    

    Also when im skipping the egl part i get the error:

    [VT] VT_IsSystemSupported Failed. This TV doesn't support VT.
    

    Maybe you can give me a hint how to debug this and maybe what other api i could try to capture the screen?

    opened by zlokomatic 21
  • WebOS 3.4, somehow it doesn't work ;(

    WebOS 3.4, somehow it doesn't work ;(

    Hi,

    is there a way to get piccap or hyperion-webos working on webOS 3.4 (OLED E6V from 2016). Unfortunately I get the following error messages with libdile_vt and libvt. The recording resolution doesn't seem to matter.

    regards an thanks for the great work Micha

    ` "board_type": "M16_DVB", "hardware_id": "HE_DTV_W16M_AFADABAA", "product_id": "OLED65E6V-Z", "core_os_release": "3.4.0-6107", "webos_manufacturing_version": "05.60.15",

    root@LGwebOSTV:/tmp/hyperion# LD_LIBRARY_PATH=. ./hyperion-webos --address 192.168.0.150 --port 19400 --fps 60 --width 320 --height 240 --backend libvt -S 0.000s [INFO main ] Starting up... 0.018s [INFO capture_preinit ] Preinit called. Copying config.. 0.028s [INFO egl_init ] [EGL] Display, major = 1, minor = 4 0.032s [INFO egl_init ] [EGL] Surface size: 320x240 0.033s [INFO egl_init ] [EGL] init complete 0.034s [INFO capture_init ] [VT] VT_CreateVideoWindow 0.034s [INFO capture_init ] [VT] window_id=0 0.034s [INFO capture_init ] [VT] VT_AcquireVideoWindowResource 5.030s [ ERR capture_init ] [VT] VT_AcquireVideoWindowResource Failed 5.031s [ ERR capture_main ] Error! capture_init: -1 5.031s [ ERR main ] ERROR: Capture main init failed! root@LGwebOSTV:/tmp/hyperion# LD_LIBRARY_PATH=. ./hyperion-webos --address 192.168.0.150 --port 19400 --fps 60 --width 320 --height 240 --backend libdile_vt -S 0.000s [INFO main ] Starting up... 0.006s [INFO capture_preinit ] Preinit called. Copying config.. 0.006s [INFO capture_init ] Init called 0.006s [INFO capture_start ] Capture start called. KADP_DE_SetDHDRInit : Done. 0.068s [WARN capture_start ] DISPLAY dump location failed, attempting SCALER... 0.201s [INFO capture_start ] [DILE_VT] framerate divider: 1 0.301s [INFO capture_start ] [DILE_VT] frametime: 79996; estimated fps before divider: 12.50063 0.341s [INFO capture_start ] [DILE_VT] frametime: 19996; estimated fps after divider: 50.01000 0.341s [INFO capture_start ] [DILE_VT] vfbs: 3; planes: 2 0.342s [INFO capture_start ] [DILE_VT] pixelFormat: 4; width: 320; height: 240; stride: 1920... 0.392s [ ERR capture_main ] Error! capture_start. Code: -12 0.393s [ ERR main ] ERROR: Capture main init failed! root@LGwebOSTV:/tmp/hyperion# `

    dile_vt 
    opened by TechnoHoschi 17
  • Permission denied

    Permission denied

    Hello,

    "board_type": "K3LP_DVB",
    "hardware_id": "HE_DTV_W17P_AFADABAA",
    "product_id": "49UJ630V-ZA",
    "core_os_release": "3.9.0-62906",
    "webos_manufacturing_version": "06.00.20",
    

    i am a newbie I have downloaded code from this page https://github.com/webosbrew/hyperion-webos/actions/runs/1568099580 Copied all files to tmp/hyperion-webos image

    But when i try to start it with this image

    i get image

    Could you please help me! Thanks!

    opened by RestOp 13
  • Error - malloc(): unsorted double linked list corrupted

    Error - malloc(): unsorted double linked list corrupted

    Platform: LG WebOS 6.2.0-35

    When running PicCap with Hyperion, Hyperion becomes unresponsive shortly after launcing PicCap. Log shows:

    Mar 19 13:44:55 raspberrypi hyperiond[1737]: malloc(): unsorted double linked list corrupted
    Mar 19 13:44:55 raspberrypi hyperiond[1737]: Hyperion caught signal :SIGABRT
    

    Would appreciate your insight on the problem.

    opened by begemotik 12
  • [3.4.0][libvt] VT_CreateContext Failed

    [3.4.0][libvt] VT_CreateContext Failed

    "board_type": "M16_DVB",`
    "hardware_id": "HE_DTV_W16N_AFADABAA",`
    "product_id": "43UH750V-ZA",`
    "core_os_release": "3.4.0-5908",`
    "webos_manufacturing_version": "05.60.25",
    

    running ./hyperion-webos -b libvt -a 192.168.1.26 -S fail to execute with the following log

    0.001s [INFO main                ] Starting up...
         0.017s [INFO capture_preinit     ] Preinit called. Copying config..
         0.030s [INFO egl_init            ] [EGL] Display, major = 1, minor = 4
         0.035s [INFO egl_init            ] [EGL] Surface size: 360x180
         0.036s [INFO egl_init            ] [EGL] init complete
         0.037s [INFO capture_init        ] [VT] VT_CreateVideoWindow
         0.037s [INFO capture_init        ] [VT] window_id=0
         0.038s [INFO capture_init        ] [VT] VT_AcquireVideoWindowResource
         0.038s [INFO capture_init        ] [VT] resource_id=85
         0.038s [INFO capture_init        ] [VT] VT_CreateContext
    KADP_DE_SetDHDRInit : Done.
         0.102s [ ERR capture_init        ] [VT] VT_CreateContext Failed
         0.102s [ ERR capture_main        ] Error! capture_init: -1
         0.103s [ ERR main                ] ERROR: Capture main init failed!
    

    I've already tried libdile_vt backend and it stop before that

    0.000s [INFO main                ] Starting up...
         0.006s [INFO capture_preinit     ] Preinit called. Copying config..
         0.006s [INFO capture_init        ] Init called
         0.006s [INFO capture_start       ] Capture start called.
    KADP_DE_SetDHDRInit : Done.
         0.068s [ ERR capture_main        ] Error! capture_start. Code: -2
         0.069s [ ERR main                ] ERROR: Capture main init failed!
    
    opened by PaoloVallesi 11
  • [3.4.0][libdile_vt] Image crop on all HDMI sources and WebOS streaming app

    [3.4.0][libdile_vt] Image crop on all HDMI sources and WebOS streaming app

    Edit: more info in this comment


    Everything works fine while watching tv channels. On HDMI source or any WebOS app like netflix, disney+, prime video or youtube, video received on hyperion server is cropped to the top left corner, see images below (ignore the text overlay that shows up on chromecast when pausing a video): hyperion_signal hyperion_source

    On the HDMI source HDR is disabled. but the same issue occurs on netflix or any other streaming app that support HDR.

    My configuration (piccap):

    {
        "returnValue": true,
        "backend": "libdile_vt",
        "port": 19400,
        "width": 192,
        "height": 108,
        "captureUI": true,
        "ip": "192.168.1.201",
        "fps": 0,
        "backmsg": "Settings got successfully!",
        "captureVideo": true,
        "autostart": true
    }
    

    Hardware:

    "board_type": "M16_DVB",
    "hardware_id": "HE_DTV_W16N_AFADABAA",
    "product_id": "43UH750V-ZA",
    "core_os_release": "3.4.0-5908",
    "webos_manufacturing_version": "05.60.25"
    
    dile_vt 
    opened by PaoloVallesi 10
  • Failed to load backend library: libvtcapture_backend.so

    Failed to load backend library: libvtcapture_backend.so

    Hi @Informatic seems with the recent commits, I can no longer use libvtcapture as the backend. The hyperion-webos_libvtcapture that ships in PicCap still works though.

    root@LGwebOSTV:/tmp# LD_LIBRARY_PATH=. ./hyperion-webos -a 192.168.0.191 -b libvtcapture
    Error! Failed to load backend library: libvtcapture_backend.so, error: libhalgal.so.1: cannot open shared object file: No such file or directory
    Error! detect_backend.
    root@LGwebOSTV:/tmp# ldconfig -p | grep libhalgal
            libhalgal.so.2 (libc6) => /usr/lib/libhalgal.so.2
            libhalgal.so (libc6) => /usr/lib/libhalgal.so
    root@LGwebOSTV:/tmp# grep -h -E '"(hardware_id|core_os_release|product_id|webos_manufacturing_version|board_type)"' /var/run/nyx/*
        "board_type": "O20_DVB",
        "hardware_id": "HE_DTV_W21O_AFABATAA",
        "product_id": "OLED55G16LA",
        "core_os_release": "6.0.1-454907",
        "webos_manufacturing_version": "03.11.23",
    
    opened by tavalin 10
  • Unicapture. libvtcapture: LSRegisterPubPriv FAILED

    Unicapture. libvtcapture: LSRegisterPubPriv FAILED

    System Info:

        "board_type": "LM21U_DVB",
        "hardware_id": "HE_DTV_W21U_AFADATAA",
        "product_id": "86NANO926PB",
        "core_os_release": "6.2.0-39",
        "webos_manufacturing_version": "03.21.40",
    

    Hyperion-WebOS version: latest unicapture branch build (https://github.com/webosbrew/hyperion-webos/actions/runs/2693316650)

    Commandline invocation: ./hyperion-webos -v -a 192.168.31.98 -b libvtcapture

    Short fail log:

         0.125s [ DBG unicapture_init_backend] libvtcapture_backend.so: loading...
         0.125s [ DBG unicapture_init_backend] libvtcapture_backend.so: loaded, initializing...
         0.125s [INFO capture_init        ] Starting vtcapture initialization.
         0.130s [WARN capture_init        ] vtCapture_create() failed: LSRegisterPubPriv FAILED
         0.130s [ ERR unicapture_init_backend] libvtcapture_backend.so: init failure, code: -2
    

    Full log:

    # ./hyperion-webos -v -a 192.168.31.98 -b libvtcapture
         0.000s [INFO main                ] Starting up (version: heads/unicapture-0-g852a91d)...
         0.001s [INFO main                ] Running via CLI
         0.001s [INFO service_init        ] Autodetecting UI backend...
         0.002s [ DBG unicapture_init_backend] libgm_backend.so: loading...
         0.002s [WARN unicapture_init_backend] Unable to load libgm_backend.so: libgm.so.1: cannot open shared object file: No such file or directory
         0.002s [WARN unicapture_try_backends] try_backends: backend: libgm_backend.so failed with code: -1
         0.067s [ DBG unicapture_init_backend] libhalgal_backend.so: loading...
         0.067s [ DBG unicapture_init_backend] libhalgal_backend.so: loaded, initializing...
         0.068s [INFO capture_init        ] Graphical capture enabled. Begin init..
    initializing lock 'MADP_SYS'
    [Utopia][MSOS]: [ERROR][MsOS_CreateMutex][2244]    [MsOS_CreateMutex][2244] Update max number of msos mutex: 256
    [Utopia][MSOS]: [INFO][MsOS_SHM_Init][1097]     Mappd share memory: 0xt7120A000
    [Utopia][MSOS]: [INFO][_MsOS_InitEventGroup][4053]     Flag=MSOS_SHM_QUERY Addr=0x71212130
    [utopia info] utopia init
    [utopia info] default using kernel mode utopia
    [Utopia][PWS]: Function = PWSRegisterToUtopia, Line = 1134, PWS Register finished
    [Utopia][MFE_EX]: MFERegisterToUtopia
    [Utopia][AUDIO]: AUDIORegisterToUtopia is invoked
    [Utopia][AUDIO]: AUDIORegisterToUtopia : Success to register resource 'audio0' of 1 resource
    HDMITxRegisterToUtopia..................
    [Utopia][SYS]: Function = SYSOpen, Line = 1722, [SYS INFO] OPEN INSTANCE...
    [Utopia][MSOS]: [WARN][MsOS_Init][5846]     Already inited.
    [Utopia][MSOS]: [INFO][MsOS_SHM_Init][1070]     Already inited.
    [Utopia][SYS]: [MDrv_SYS_Init][199] Already inited.
    
    KeyCustomerList[1].chipid:e8
    [Utopia][IPAUTH]: Wrong hash key
    [Utopia][IPAUTH]: 0003227400660000
    [Utopia][IPAUTH]: MDrv_SYS_GetChipID:fc
    [Utopia][IPAUTH]: Wrong Chip ID
    [Utopia][IPAUTH]: [Auth NG]
    [Utopia][IPAUTH]: AUTH STATUS:0
    initializing lock 'HAL_GAL'
    initializing lock 'GRAPHIC'
    [Utopia][MSOS]: [INFO][MsOS_SHM_Init][1070]     Already inited.
    root=/dev/mmcblk0p27  ro  rootfstype=squashfs PM ethaddr=B0:37:95:A3:FE:91 mmcoops=dump wdtlog=dump@1M quiet loglevel=0 console=ttyS0,115200 rootwait ssc_enable=<NULL> modelopt=001020100 hwopt=202210001104002001 ToolOpt=201326872:12307:1251801:65:15066675:825547531 modelName=86NANO926PB serialNum=110RAVF0W919 countryGrp=22 debugMode=5 devtmpfs.mount=1 chip=LM21UA0 snapshot resume=/dev/mmcblk0p48 tvregion=DVB NR_BANK=0x0 vmalloc=408M LX_MEM=0x1c500000 EMAC_MEM=0x100000 DRAM_LEN=0x80000000 LX_MEM2=0x43800000,0x58c00000 LX_MEM3=0xe0000000,0x0 DRAM_SIZE1=0x80000000 DRAM_SIZE2=0x0 KERNEL_PROTECT MIU_DEBUG_LEVEL=5 MIU_HIT_INTERRUPT=ON MIU_HIT_PANIC=OFF criu_enabled portProtection emmc_size=0x1d1fff000 BOOTLOGO_IN_MBOOT ENV_VAR_OFFSET=0x0 ENV_VAR_SIZE=0x10000 ENV=EMMC SECURITY=ON sver=0.01.179 bver=0.01.179 innolux=0 tcontype=0 SkipFlag_PMIC=<NULL> get_tconEnumFrom=<NULL> bForceVfreq60HZ=<NULL> enable_tcon_panel=0 bVfreq120to60HZ=0 CMA0=PVRDOWNLOAD,miu=0,hid=23,sz=0xc00000,st=0x19400000 CMA1=PVRUPLOAD,miu=0,hid=24,sz=0x400000,st=0x1a000000 CMA2=CIPLUS,miu=0,hid=27,sz=0x1000000,st=0x18400000 CMA3=GOP,miu=0,hid=29,sz=0x8400000,st=0x23800000 CMA6=PIP,miu=0,hid=25,sz=0x1800000,st=0x1a400000 CMA7=ACPU1,miu=0,hid=26,sz=0x400000,st=0x1bc00000 CMA8=ACPU2,miu=0,hid=30,sz=0x400000,st=0x1c000000 tee_mode=optee pwm=0 cmdEnd
    
    [TCON] MApi_XC_Get_Tcon_Type 6521: u8tcontype = 0
         0.111s [INFO capture_init        ] HAL_GAL_Init done! Exit: 0
    [Utopia][GOP API]:    MApi_GOP_GWIN_Delete32FB:3904   FBId = 142
         0.115s [INFO capture_init        ] HAL_GAL_CreateSurface done! SurfaceID: 0
         0.117s [INFO capture_init        ] HAL_GAL_CaptureFrameBuffer done! 0
         0.117s [INFO capture_init        ] HAL_GAL: gfx open ok result: 23
         0.119s [INFO capture_init        ] HAL_GAL: mmap() success
         0.119s [ DBG unicapture_init_backend] libhalgal_backend.so: success
         0.119s [ DBG unicapture_try_backends] try_backends: libhalgal_backend.so succeeded
         0.125s [ DBG unicapture_init_backend] libvtcapture_backend.so: loading...
         0.125s [ DBG unicapture_init_backend] libvtcapture_backend.so: loaded, initializing...
         0.125s [INFO capture_init        ] Starting vtcapture initialization.
         0.130s [WARN capture_init        ] vtCapture_create() failed: LSRegisterPubPriv FAILED
         0.130s [ ERR unicapture_init_backend] libvtcapture_backend.so: init failure, code: -2
         0.130s [ DBG service_register    ] Using LSRegister
         0.132s [ ERR service_register    ] Unable to register on Luna bus: Invalid permissions for org.webosbrew.piccap.service
         0.132s [WARN main                ] Service register failed: -1
    
    opened by ZeBriD 9
  • Switching to a native service

    Switching to a native service

    So I'm ready rewriting hyperion-webos to a native webOS-service. It's also possible to run it from command line, logs will be redirected to PmLog. I don't know why, but we have a huge performance improvement with using libvtcapture and the native service. Maybe it's the same for other backends. The UI (PicCap) is also more responsive.

    @Informatic @tuxuser @mariotaku Can some of you please review my changes? Doesn't want to break something.

    The CI-Task has to be updated. Want to fix it when https://github.com/webosbrew/tv-native-apis/pull/13 is merged.

    Thanks!

    opened by TBSniller 9
  • Realistic chance of release in near future?

    Realistic chance of release in near future?

    First of all, thanks for your great work. Some questions:

    1. How is the current functionality? What is working, what is not?
    2. Do we have a realistic chance to see a release soon?
    3. Is this based on Hyperion.ng?
    4. Which protocols are currently supported? Can I use WLED?

    Thanks and best regards, Andre

    opened by snipah 9
  • Is there a way to extend the frame that detects the color?

    Is there a way to extend the frame that detects the color?

    The tv shows everithing in panoramic view and HyperHDR doesn't detect the frame because it is too far. Can I do the detection frame longer?

    And another question, is there any option that captures better the colors? I don't mind using more resources.

    opened by BorjaJajas 2
  • Daemon wird beim TV einschalten nicht gestartet

    Daemon wird beim TV einschalten nicht gestartet

    Hallo an Alle!

    Ich hab es geschaft meinen LG TV zu Rooten und alles soweit einzurichten nur wenn ich den TV einschalte bzw. neu Boote muss ich immer im hyperion/HyperHDR auf start gehen den nur dann Stehet bei Daemon running "YES" und dann funktioniert alles. Autostart ist aktiviert aber Daemon Startet nicht, was kann ich tun um das zu beheben? image0

    opened by Sladan1980 5
  • LUT mapping

    LUT mapping

    This PR aims at solving the color accuracy issues seen with the LG capture APIs. Essentially, this is like HyperHDR's HDR tone mapping feature but integrated into hyperion-webos itself. The data format is also the same and as such lut tables from HyperHDR can be used as is. However, opposed to HyperHDR the tone mapping is always active because we are seeing color inaccuraries even on SDR content.

    I am providing my LUT file that I calculated using machine learning by showing pregenerated color table images and capturing them. Then the network learned given an input capture color to predict the input color. The predictions were carried out for the full 8-bit color space and saved into a LUT file. The generated LUT is not perfect for many reasons possibly the most prominent one being that multiple input colors match the same captured color. Yet still, without LUT mapping colors are quite off. For instance, solid red captures as [228, 80, 52], green as [110, 255, 100] and blue as [44, 0, 184] which is quite far off the real value.

    I am marking this as WIP because I haven't tested configuration reloading.

    LUT table

    opened by sundermann 0
  • QUIRK: Fix quickstart on webOS 3.x TVs QUIRK_DILE_VT_DESTROY_ON_STOP

    QUIRK: Fix quickstart on webOS 3.x TVs QUIRK_DILE_VT_DESTROY_ON_STOP

    In latest unicapture changes, we have changed how TVs powerstate is processed. In older versions we have used to completly stop capture on standby. Now we only stop capture and let capture interfaces in memory. The problem with older webOS TVs is, that in standby it regardless kills hyperion-webos after awake, which leads to not fully shut down capture interfaces and because of that a new interface can't be created.

    This PR will introduce another quirk QUIRK_DILE_VT_DESTROY_ON_STOP, which will destroy DILE_VT interface, when a standby is in progress, so it can be created on next TV awake, without the need of disabling QuickStart+ or completly reboot TV.

    This addresses https://github.com/webosbrew/hyperion-webos/issues/95

    @tuxuser Can you please review?

    opened by TBSniller 2
  • Hyperios does not start anymore since the latest update of PicCap -libdile_vt_backend.so: init failure, code: -1

    Hyperios does not start anymore since the latest update of PicCap -libdile_vt_backend.so: init failure, code: -1

    Hi, I was using PicCap v0.23 now for like few month. Autostart was not working for hyperion, but was like ok-ish to go in to settings and manually re-start the hyperion service. But with the latest update of PicCap v0.41 it is even not possible to restart it via the PicCap gui. Only a Full TV reboot does help. The GUI capture is working fine since the latest update incl autostart, but not the video capture. Reloading, restarting the service does not help, only a FULL TV reboot, then it works fine, till standby. By returning from standby the video capture does not work anymore (only gui capture). I'd really appreciate if you could help.

    Here are some details, my TV

    
        "board_type": "O18_DVB",
        "hardware_id": "HE_DTV_W18O_AFABABAA",
        "product_id": "OLED65C8LLA",
        "core_os_release": "4.4.0-9",
        "webos_manufacturing_version": "05.40.09",
    

    here is the log

    -rwxrwxrwx    1 1001     121            278 Sep 24 23:25 services.json
    LGwebOSTV[j][/media/developer/apps/usr/palm/services/org.webosbrew.piccap.service]#  ./hyperion-webos -b libdi
    le_vt -a 192.168.200.214
         0.001s [INFO main                ] Starting up (version: heads/main-0-gab718e5)...
         0.001s [INFO main                ] Running via CLI
         0.001s [INFO service_init        ] Autodetecting UI backend...
    [004933.598955:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x63d60
    
    [004933.599036:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x64190
    
    [004933.599066:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x65680
    
    [004933.599092:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x65ab0
    
    [004933.599124:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x64e20
    
    [004933.599149:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x65250
    
    [004933.599185:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x66b48
    
    [004933.599211:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x66f78
    
    [004933.599236:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x66b48
    
    [004933.599259:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x66f78
    
    [004933.599283:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x63d60
    
    [004933.599306:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x64190
    
    [004933.599488:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x673a8
    
    [004933.599518:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x677d8
    
    [004933.599545:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x65680
    
    [004933.599571:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x65ab0
    
    [004933.599596:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x673a8
    
    [004933.599620:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x677d8
    
    [004933.599674:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x673a8
    
    [004933.599698:hyperion-webos->hyperion-webos] <warning> GM_TEMPLATE_HASH_Insert : node already found..ptr = 0x677d8
    
    [004933.599735:hyperion-webos->hyperion-webos] [_GM_UseGFXHWDirectly][905] _GM_UseGFXHWDirectly OK
    
         0.017s [INFO capture_init        ] Capture start called.
         0.017s [INFO capture_init        ] Attempting DILE_VT_Create...
         0.020s [WARN capture_init        ] Failed to get DILE_VT context!
         0.021s [ ERR unicapture_init_backend] libdile_vt_backend.so: init failure, code: -1
         0.072s [INFO connection_loop     ] Connecting hyperion-client..
         0.072s [INFO connection_loop     ] hyperion-client connected!
         0.073s [INFO unicapture_vsync_handler] vsync thread starting...
         0.073s [INFO unicapture_run      ] UI capture started
         0.078s [INFO power_callback      ] Power status callback message: { "subscribed": true, "returnValue": true, "state": "Active" }
         0.110s [INFO picture_callback    ] picture_callback: dynamicRange: sdr --> SDR mode
         0.138s [INFO set_hdr_state       ] Detected daemon flavor: 1 (Hyperion.NG)
         0.138s [WARN set_hdr_state       ] set_hdr_state: Daemon is not HyperHDR -> Not submitting HDR state!
         0.138s [ ERR picture_callback    ] videooutput_callback: set_hdr_state failed, ret: -2
    ^C     2.058s [INFO int_handler         ] SIGINT detected, stopping...
         2.069s [INFO unicapture_run      ] Shutting down...
         2.072s [INFO connection_loop     ] Ending connection loop
         2.077s [INFO unicapture_vsync_handler] vsync thread finished
    
    
    bug dile_vt 
    opened by denimjeans 14
  • Renice hyperion-webos process for lower CPU usage

    Renice hyperion-webos process for lower CPU usage

    Since our process is running as native service, we have encountered high CPU usage. Reason might be service register, which makes hyperion-webos able to use more CPU time than in older versions without luna bus registration. This leads to more unresponsive webOS UI and apps.

    To reduce CPU usage it's currently possible to:

    • Lower capture resolution
    • Lower FPS & disable vSync
    • Disable UI capture
    • Use renice after each start

    We should implement a priority change using setpriority(), which can be set by parameter.

    feature request 
    opened by TBSniller 5
Releases(0.2.0)
  • 0.2.0(Oct 2, 2022)

    • Fixed NEON compiler flags, to bring back buildroot toolchain: https://github.com/webosbrew/hyperion-webos/pull/98 (Thx @smx-smx)
    • Bring back buildroot toolchain: https://github.com/webosbrew/hyperion-webos/pull/97
    • Disable powerstate/HDR switch: https://github.com/webosbrew/hyperion-webos/pull/87 (Thx @sundermann)
    • Add HyperHDR local socket support: https://github.com/webosbrew/hyperion-webos/pull/86 (Thx @sundermann)
    Source code(tar.gz)
    Source code(zip)
    hyperion-webos(545.83 KB)
    libdile_vt_backend.so(18.62 KB)
    libgm_backend.so(7.32 KB)
    libhalgal_backend.so(7.73 KB)
    libvtcapture_backend.so(12.39 KB)
  • 0.1.0(Sep 25, 2022)

    Release for https://github.com/webosbrew/hyperion-webos/pull/43 "New" synchronous capture backend interface, unified for both UI and Video layer capture, where all pixel format conversion, scaling and blending is extracted into a common "unicapture" module.

    • backends now expose a simple, unified synchronous interface for a specific layer capture (ie. we now have separate backends for video layers - dile_vt, vtcapture, and ui layers - gm and halgal)
    • unicapture module is responsible for backend initialization, frame keeping (vsync) and merging/blending/conversion of different layers.
    • converter is responsible for converting frames between colorspaces (via libyuv), intentionally used only in unicapture
    • service is a module that binds unicapture module with hyperion_client and exposes Luna bus management service
    • settings is a module responsible for converting settings_t structure to/from JSON objects and files (stored in config.json file)
    • main only handles initialization and startup of service

    Notable changes:

    • Added support for UI capture when combined with dile_vt
    • Added UI/video backend autodetection (default)
    • Added support for automatic pausing of capture when the TV is going to suspend mode (QuickStart+)
    • Added "vsync": false option that will help with issues like #30 ("fake" vsync signal will be issued every 1/FPS seconds, instead of using video backend waiting method)
    • Unified support for novideo/nogui options in all backends
    • Fixed/improved FPS counting/limiting on all platforms
    • /status luna service endpoint returns current framerate and info about currently running capture modules
    • Disabling autostart will remove the init.d symlink properly now
    • General stability improvements
    • Code has been reformatted using clangd/clang-format

    Known issues:

    • TODO: Backend/resolution change requires service restart

    Supersedes:

    • #47
    • #48 - added vsync flag
    • #40 - fixed frame pace handling including optional vsync
    • #21 - contains support for libgm & libhal_gal UI capture support
    Source code(tar.gz)
    Source code(zip)
    hyperion-webos(328.82 KB)
    libdile_vt_backend.so(18.58 KB)
    libgm_backend.so(7.29 KB)
    libhalgal_backend.so(7.69 KB)
    libvtcapture_backend.so(12.36 KB)
Owner
webOS Brew
Homebrew project for webOS TV
webOS Brew
Advanced discord token grabber builder with GUI

Token-Grabber-Builder Advanced discord token grabber builder with GUI Screenshot Features Hidden console High execution speed Grab discord tokens Stea

RadonCoding 2 Dec 2, 2021
Vireo is a lightweight and versatile video processing library written in C++11

Overview Vireo is a lightweight and versatile video processing library that powers our video transcoding service, deep learning recognition systems an

Twitter 874 Dec 27, 2022
Play video by fonts in a console window by composing characters

FontVideo Play video by fonts in a console window by composing characters. Using FFmpeg API to decode the input file, then the video stream is rendere

0xaa55 9 Jul 16, 2022
Streaming video over USB 3.0 using MAX10 FPGA and CYUSB3014 synchronous slave mode.

DECA_USB3_Cam Streaming video over USB 3.0 using MAX10 FPGA and CYUSB3014 synchronous slave mode. Video: Block diagram _______

Dmitry Koroteev 9 Apr 18, 2022
📽 A simple X11+SDL2 animated wallpaper setter and video player

anipaper ?? A simple X11+SDL2 animated wallpaper setter and video player Introduction Anipaper (ANImated Wallpaper) is a simple 'wallpaper setter' for

Davidson Francis 14 Dec 21, 2022
The CRT filter that I used in my "what is that editor" video

Bisqwit’s CRT filter This is the CRT filter that I used in my ”What is That Editor” video, at https://www.youtube.com/watch?v=ZMBQmhO8KqI. It received

Joel Yliluoma 47 Jan 5, 2023
Lee Thomason 299 Dec 10, 2022
A video input (V4L2) to NDI converter that works with Raspberry Pi (32-bit and 64-bit), and Intel/AMD CPUs

V4L2 to NDI V4L2 to NDI is an application that connects to attached V4L2 devices and encodes the video signal into NDI It uses the NDI library, allowi

Luke Plassman 52 Dec 30, 2022
Just another short video app (not tiktok) but 3 in 1.

Short videos app - India Another short videos app for Hindi audience. Made with 3 different apis: Moj app Josh app Chingari app Authetication No authe

Not Your Surya 2 Jan 6, 2022
Companion repository to the "Modern Embedded Systems Programming" video course.

What is it? This repository is a companion to the "Modern Embedded Systems Programming" video course, which consists of focused, fast-paced, hands-on

Quantum Leaps 216 Dec 31, 2022
Hashlink/heaps video support

hlvideo Hashlink video support Windows Setup Download and build AOM from hlvideo root directory

Heaps.io 2 Dec 15, 2022
A generic post-processing injector for games and video software.

ReShade This is a generic post-processing injector for games and video software. It exposes an automated way to access both frame color and depth info

null 2.9k Dec 28, 2022
High-quality Interactive Audio/Video Windows SDK

腾讯云实时音视频 TRTC SDK English | 简体中文 产品介绍 腾讯实时音视频(Tencent Real-Time Communication,TRTC),将腾讯多年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开

LiteAVSDK 14 Sep 14, 2022
An app to enable fluent, cross-language video chat.

project_vouvos A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started i

pq43 4 Jun 1, 2022
Hyperion Engine is a 3D game engine written in C++

Hyperion Engine About Hyperion Engine is a 3D game engine written in C++. We aim to make Hyperion be easy to understand and use, while still enabling

null 293 Jan 1, 2023
GUI frontend for moonlight-embedded, (currently) runs on webOS

Moonlight TV Moonlight TV is a GUI front end for Moonlight GameStream Client. With some components from moonlight-embedded. It was originally designed

Mariotaku 443 Dec 30, 2022
An extremely hacky VNC server for WebOS - Works by reading directly from the GPU's framebuffer.

webos-vncserver An extremely hacky VNC server for WebOS - Works by reading directly from the GPU's framebuffer. Requires root privileges.

David Buchanan 21 Nov 25, 2022
Advanced C++ Discord Token Grabber ( FUD )

DTGPlusPlus C++ Discord Token Grabber ( FUD ) ?? Features » High Speed High Execution Rate Using Win32 API Low Size Without Dependence ( Support Win X

null 6 Nov 9, 2021
Advanced discord token grabber builder with GUI

Token-Grabber-Builder Advanced discord token grabber builder with GUI Screenshot Features Hidden console High execution speed Grab discord tokens Stea

RadonCoding 2 Dec 2, 2021
Video++, a C++14 high performance video and image processing library.

Video++ Video++ is a video and image processing library taking advantage of the C++14 standard to ease the writing of fast video and image processing

Matthieu Garrigues 692 Dec 28, 2022