1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

4k HDR Capable HDMI Splitter (supposedly)

Discussion in 'Hardware Support' started by sl81, 23 January 2017.

  1. Awawa

    Awawa Member

    Messages:
    90
    Hardware:
    RPi1/Zero, RPi3, +nodeMCU/ESP8266
    PassThrough works with ezcap 269, no problems with TV 4k60 & HDR or any other resolution/FPS (I had some problems before with VSP01201 and UTV007)
    For capture: HDR colors are degraded but can be somehow fixed on startup with:
    Code:
    /usr/bin/v4l2-ctl --set-ctrl contrast=220
    /usr/bin/v4l2-ctl --set-ctrl saturation=255
    /usr/bin/v4l2-ctl --set-ctrl brightness=128
    /usr/bin/v4l2-ctl --set-ctrl hue=16
    
    I'm happy with it.
    BTW there is update for ezcap 269 that finally can be flashed but there is no changelog or whatever ...this is so chinese.
     
  2. RaymondMouthaan

    RaymondMouthaan New Member

    Messages:
    11
    Hardware:
    RPi3, +Arduino
    Hi all,

    As a huge fan of Hyperion, I recently upgraded my home cinema system to a 4K setup. Now I am looking for a good solution for hyperion to control my ledstrip and after reading this thread I got confused which HDMI splitter I should buy.

    My setup includes the following gear:
    • Sony Bravia A8G 4K oled TV
    • Marantz SR7013 AV Surround Receiver
    • Apple TV 4K
    • Vero4K+
    • Sony Playstation 4
    All devices are connected to the SR7013 thru HDMI and acts as a HDMI switch, it has an HDMI output (arc), which goes to a HDMI splitter (UHD 4K). From the HDMI splitter output 1 goes directly to the Sony Bravia, while output 2 goes to the HDMI AV. From the HDMI AV a connection goes to a grabber, which is connected to a Raspberry PI 3B. This RPI is the Hyperion server, running the latest compiled HyperionNG. Attached to this RPI is an Arduino Nano, with a sketch installed, which controls a ws2815 (12V) ledstrip attached to the Sony Bravia and has 267 leds (top: 85, left: 49, right: 49, bottom: 84 and a gap of 1 led).

    After running some Hyperion Effects all looks good, the leds work well. However, the HDMI splitter (without scaling) and HDMI AV are from my previous 1080p setup and need to be replaced by a better solution to support 4K, HDR etc. Most important is that from source to TV the best picture quality is displayed. Secondly that all sources are working with Hyperion, so that the ledsstrip works. I've added a drawing of how all is connected.

    I've read about the ezcap269, Vertex Fury and Vertex Diva but is unclear to me if those sollutions work.

    Any advice is very much welcome :).
     

    Attached Files:

  3. Awawa

    Awawa Member

    Messages:
    90
    Hardware:
    RPi1/Zero, RPi3, +nodeMCU/ESP8266
    I posted in this thread about Ezcap 269.
    You can compare how it treat HDR and check if it fits you.
    Original HDR10 in SDR via software conversion that was captured OK as a reference.
    [​IMG]

    Previous firmware and no tweaks -> bleak colors. This is the problem of 99.99% matrix/capture cards on the market (even Elgato S60+ can capture it as the closed proprietary format only):
    [​IMG]

    And almost correct image with the newest firmware upgrade for Ezcap 269 + some software tune
    Code:
    /usr/bin/v4l2-ctl --set-ctrl contrast=220
    /usr/bin/v4l2-ctl --set-ctrl saturation=255
    /usr/bin/v4l2-ctl --set-ctrl brightness=100
    /usr/bin/v4l2-ctl --set-ctrl hue=2
    [​IMG]

    Another way to go is HDFury $$$.
     
    Last edited: 19 July 2020
    • Like Like x 1
  4. RaymondMouthaan

    RaymondMouthaan New Member

    Messages:
    11
    Hardware:
    RPi3, +Arduino
    @rasp, thanks for your reply!
    So basically I have to options, either buy an Ezcap 269 + latest firmware + software tune on the hyperion server or a HDFury? Which of the HDFury products would do the job right? Diva https://www.hdfury.eu/shop/hdfurydiva/ , Vertex 2 https://www.hdfury.eu/shop/hdfury-vertex-2/ or maybe another?

    Do I still need the HdmiAV + grabber and only replace the splitter with either an Ezcap or HDFury?

    sorry for all the questions, just want to make sure before placing an order.
     
  5. Awawa

    Awawa Member

    Messages:
    90
    Hardware:
    RPi1/Zero, RPi3, +nodeMCU/ESP8266
    I'm not sure but I suppose that only Diva and HDfury x4 can handle it but in different ways/configs. This is the best solution as it can detect HDR/SDR source.
    With Ezcap I can force my player to output every movie as a bt2020/HDR so I dont need to switch color format. If you have multiple sources then you need to add HDR capable switch to ezcap (HDR source1/source2/...->switch->Ezcap->TV). Ezcap is a capture card so you dont need another one.
     
  6. RaymondMouthaan

    RaymondMouthaan New Member

    Messages:
    11
    Hardware:
    RPi3, +Arduino
    Last edited: 19 July 2020
  7. Awawa

    Awawa Member

    Messages:
    90
    Hardware:
    RPi1/Zero, RPi3, +nodeMCU/ESP8266
    ezcap 269 has 2 output. First: hdmi passthrought to the TV and second: usb 3.0 that you connect to hyperion NG (also works with Rpi3 USB 2.0). You dont need splitter in that configuration.
     
  8. pclin

    pclin Active Member

    Messages:
    193
    Hardware:
    +nodeMCU/ESP8266
    Hi, can you post the output of
    Code:
    v4l2-ctl --list-formats-ext
    for the ezcap 269.

    I am interested in the card, but I need the information and cannot find anything about it.

    greetings pclin
     
  9. Awawa

    Awawa Member

    Messages:
    90
    Hardware:
    RPi1/Zero, RPi3, +nodeMCU/ESP8266
  10. RaymondMouthaan

    RaymondMouthaan New Member

    Messages:
    11
    Hardware:
    RPi3, +Arduino
  11. Awawa

    Awawa Member

    Messages:
    90
    Hardware:
    RPi1/Zero, RPi3, +nodeMCU/ESP8266
    You have found the correct one. One HDMI as input and two outputs (one output HDMI to TV and one USB3.0... yes, it's one USB for power supply and video capture for Hyperion, you don't need second HDMI as an output at all).
     
    • Thank you Thank you x 1
  12. Awawa

    Awawa Member

    Messages:
    90
    Hardware:
    RPi1/Zero, RPi3, +nodeMCU/ESP8266
    On your chart you can remove: grabber hdmi2av splitter and replace them with just one ezcap.
     
  13. RaymondMouthaan

    RaymondMouthaan New Member

    Messages:
    11
    Hardware:
    RPi3, +Arduino
    OMG, you r right! .. I was confused, but indeed there is no need for a second HDMI output since it connects directly to the raspberry pi where Hyperion runs :). I'll order it asap and replace the grabber, hdmi2av and splitter. Ill let you know when I got it.

    Thanks for helping me out here, very much appreciated!
     
    • Like Like x 1
  14. Awawa

    Awawa Member

    Messages:
    90
    Hardware:
    RPi1/Zero, RPi3, +nodeMCU/ESP8266
    I'm glad I could help ;) Keep in mind that you need new Hyperion NG branch on Rpi3. The old version (non-NG) doesn't support MJPEG used by this grabber.
     
    • Thank you Thank you x 1
  15. RaymondMouthaan

    RaymondMouthaan New Member

    Messages:
    11
    Hardware:
    RPi3, +Arduino
    Yes, certainly. As we speak I have the pre-compile 2.0-alpha.6 running, because the master branch gave me errors (https://github.com/hyperion-project/hyperion.ng/issues/881) while starting it. Also the Hyperion App for iOS gave weird behaviour on the master. Solid colours did not work :facepalm:. So that made me switch back to the pre-compile .deb.
     
    Last edited: 19 July 2020
  16. Andrew_xXx

    Andrew_xXx Software Developer

    Messages:
    47
    What did the firmware upgrade change?
     
  17. Awawa

    Awawa Member

    Messages:
    90
    Hardware:
    RPi1/Zero, RPi3, +nodeMCU/ESP8266
  18. RaymondMouthaan

    RaymondMouthaan New Member

    Messages:
    11
    Hardware:
    RPi3, +Arduino
    @rasp and other, today I received the ezcap269, I flashed the latest firmware and replace the switch and grabber from my previous setup. On the RPI3B I executed the commands:

    Code:
    /usr/bin/v4l2-ctl --set-ctrl contrast=220
    /usr/bin/v4l2-ctl --set-ctrl saturation=255
    /usr/bin/v4l2-ctl --set-ctrl brightness=128
    /usr/bin/v4l2-ctl --set-ctrl hue=16
    
    The AV Receiver output goes to the input of the ezcap269, while the output of the ezcap269 goes to the Sony Bravia. All sources (AppleTV 4K, Vero4K+ (Kodi) and PS4) are connected to the AV Receiver. The HyperionNG version I installed is the precompiled version from here https://github.com/hyperion-project...pha.6/Hyperion-2.0.0-alpha.6-Linux-armv7l.deb, All settings are per default, only the Plaform Capture is disabled and instead I enabled USB Capture and left all settings for it as default. Led Hardware is configured as Adalight where Output path is /ttyUSB0 and the LED layout has the settings corresponding with my ledstrip.

    When the AppleTV 4K is setup to output 4K SD, the signal is send the AV to the ezcap269 and to the TV, while HyperionNG gets the signal to control the ledstrip. So far so good. Then I switch to the Vero4K+, since Kodi is setup the output 1080p, the AV receiver sends 1080p to the ezcap269 and also to the TV. In both cases the colours of the ledstrip look pretty much the same as the colours on TV. I do notice some delay between the colours on TV and the Ledstrip, but this issue might be solved on the master of HyperionNG? (I read a couple of pages back you noticed the same issue).

    Beside the delay, I faced another issue, but this probably not related to HyperionNG and perhaps not even related to ezcap269. So this might be off-topic. But when I switch back to the AppleTV as a source (where it was Vero4K / Kodi at 1080p before), the AppleTV switches to 1080p as output instead of 4K SD. And the option to select 4K SD is not available. For some reason the AppleTV no longer detects a device attached to it which supports 4K, while it could before. The only way to get the AppleTV back to 4K SD, is to remove the ezcap269 from the setup and directly connect the output of the AV receiver to the TV. Switching forward and backward between AppleTV and Vero4K (Kodi) without ezcap269, works perfectly fine, but once I put back in the ezcap269, AppleTV looses 4K, this makes the whole ambilight setup unusable :-( Hopefully one of you guys have an idea how to solve this.
     
  19. Awawa

    Awawa Member

    Messages:
    90
    Hardware:
    RPi1/Zero, RPi3, +nodeMCU/ESP8266
    Yes I can confirm that. The reason is that part of the code that copies byte by byte, color by color (I know that this is more complicated issue and code should be platform independent) in V4L2Grabber.cpp:

    Code:
    #ifdef HAVE_JPEG_DECODER
            QRect rect(_cropLeft, _cropTop, imageFrame.width() - _cropLeft - _cropRight, imageFrame.height() - _cropTop - _cropBottom);
            imageFrame = imageFrame.copy(rect);
            imageFrame = imageFrame.scaled(imageFrame.width() / _pixelDecimation, imageFrame.height() / _pixelDecimation,Qt::KeepAspectRatio);
    
            if ((image.width() != unsigned(imageFrame.width())) || (image.height() != unsigned(imageFrame.height())))
                image.resize(imageFrame.width(), imageFrame.height());
    
            for (int y=0; y<imageFrame.height(); ++y)
                for (int x=0; x<imageFrame.width(); ++x)
                {
                    QColor inPixel(imageFrame.pixel(x,y));
                    ColorRgb & outPixel = image(x,y);
                    outPixel.red   = inPixel.red();
                    outPixel.green = inPixel.green();
                    outPixel.blue  = inPixel.blue();
                }
        }
        else
    #endif
    
    But even 640x480 and decimation==1 is too much for Rpi3 and causes very big lag.
    This patch below works very fast for 1024x768 and decimation>=2. Decimation == 1 breaks the www live feed (capture works OK) for unknown to me reason, probably memory sharing:
    Code:
    #ifdef HAVE_JPEG_DECODER
            if (_cropLeft>0 || _cropTop>0 || _cropBottom>0 || _cropRight>0)
            {
                QRect rect(_cropLeft, _cropTop, imageFrame.width() - _cropLeft - _cropRight, imageFrame.height() - _cropTop - _cropBottom);
                imageFrame = imageFrame.copy(rect);
            }
            if (_pixelDecimation>1)
                imageFrame = imageFrame.scaled(imageFrame.width() / _pixelDecimation, imageFrame.height() / _pixelDecimation,Qt::KeepAspectRatio);
    
            if ((image.width() != unsigned(imageFrame.width())) || (image.height() != unsigned(imageFrame.height())))
                image.resize(imageFrame.width(), imageFrame.height());
            memcpy(image.memptr(),imageFrame.bits(),image.width()*image.height()*sizeof(ColorRgb));
        }
        else
    #endif
     
    Last edited: 22 July 2020
  20. RaymondMouthaan

    RaymondMouthaan New Member

    Messages:
    11
    Hardware:
    RPi3, +Arduino
    @rasp, So I assume you modified the cpp as above and recompiled to make it faster, but its not the final solution adopted into HyperionNG?