cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Highlighted
Teacher
Teacher
998 Views
Registered: ‎06-16-2013

How to capture HDMI signal

Jump to solution

Hi all

 

I'd like to capture HDMI signal with vcu_trd or vcu_hdmirx (VCU TRD 2019.1) by gstreamer .

 

[Environment]

Board : ZCU106

Video Source : Laptop PC
Video Sink : network or storage

 

 

First, I make sure the status of HDMI by following commands.

 

-----
# cat /sys/devices/platform/amba_pl@0/a0000000.v_hdmi_rx_ss/hdmi_info

Stream Info
-------------
        Color Format: RGB
        Color Depth: 8
        Pixels Per Clock: 2
        Mode: Progressive
        Frame Rate: 60Hz
        Resolution: 1920x1080@60Hz
        Pixel Clock: 148500000

Stream Timing
----------------

        HSYNC Timing: hav=1920, hfp=88, hsw=44(hsp=1), hbp=148, htot=2200
        VSYNC Timing: vav=1080, vfp=04, vsw=05(vsp=1), vbp=036, vtot=1125


Rx Info
--------
Mode: HDMI
VIC : 16
Scrambled: 0

Audio
------
Format : L-PCM
Channels : 2
ACR CTS : 148326
ACR N : 6144


Link quality
------------
Link quality channel 0 : excellent (0)
Link quality channel 1 : excellent (0)
Link quality channel 2 : excellent (0)

 

# cat /sys/devices/platform/amba_pl@0/a0000000.v_hdmi_rx_ss/hdmi_log

 

HDMI RX log
------
Initializing HDMI RX core....
Reset HDMI RX Subsystem....
RX cable is connected....
RX TMDS reference clock change
RX Stream Init
RX mode changed to HDMI
RX Stream Start
RX Stream is Up

 

 

# cat /sys/devices/platform/amba_pl@0/a0000000.v_hdmi_rx_ss/vphy_info
TX: QPLL0
RX: CPLL
TX state: idle
RX state: idle

QPLL0 settings
-------------
M : 0 - N : 0 - D : 0

CPLL settings
-------------
M : 1 - N1 : 5 - N2 : 4 - D : 4

RX MMCM settings
-------------
Mult : 10 - Div : 1 - Clk0Div : 20 - Clk1Div : 10 - Clk2Div : 20

TX MMCM settings
-------------
Mult : 0 - Div : 0 - Clk0Div : 0 - Clk1Div : 0 - Clk2Div : 0

DRU Settings
-------------
Version : 7
DRU is disabled

Rx Ref Clk: 148318208 Hz
DRU Ref Clk: 156250000 Hz

 

 

# cat /sys/devices/platform/amba_pl@0/a0000000.v_hdmi_rx_ss/vphy_log

 

VPHY log
------
GT init start
GT init done
RX frequency event
RX timer event
RX DRU disable
CPLL reconfig done
GT RX reconfig start
GT RX reconfig done
CPLL lock
RX reset done
RX MMCM reconfig done
RX MMCM lock

 

 

# gst-device-monitor-1.0
Probing devices...


Device found:

        name : Monitor of Built-in Audio Stereo
        class : Audio/Source
        caps : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
                   audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
                   audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
        properties:
                   device.description = "Monitor\ of\ Built-in\ Audio\ Stereo"
                   device.class = monitor
                   alsa.card = 0
                   alsa.card_name = "DisplayPort\ monitor"
                   alsa.long_card_name = "DisplayPort\ monitor"
                   device.bus_path = /devices/platform/amba/fd4a0000.zynqmp-display/fd4a0000.zynqmp-display:zynqmp_dp_snd_card/sound/card0
                   sysfs.path = /devices/platform/amba/fd4a0000.zynqmp-display/fd4a0000.zynqmp-display:zynqmp_dp_snd_card/sound/card0
                   device.form_factor = internal
                   device.string = 0
                   module-udev-detect.discovered = 1
                   device.icon_name = audio-card
        gst-launch-1.0 pulsesrc device=alsa_output.0.stereo-fallback.monitor ! ...


Device found:

 

        name : Built-in Audio Stereo
        class : Audio/Sink
        caps : audio/x-raw, format=(string){ S16LE, S16BE, F32LE, F32BE, S32LE, S32BE, S24LE, S24BE, S24_32LE, S24_32BE, U8 }, layout=(string)interleaved, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
                   audio/x-alaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
                   audio/x-mulaw, rate=(int)[ 1, 2147483647 ], channels=(int)[ 1, 32 ];
        properties:
                   alsa.resolution_bits = 16
                   device.api = alsa
                   device.class = sound
                   alsa.class = generic
                   alsa.subclass = generic-mix
                   alsa.name = ""
                   alsa.id = "\(null\)\ xilinx-dp-snd-codec-dai-0"
                   alsa.subdevice = 0
                   alsa.subdevice_name = "subdevice\ \#0"
                   alsa.device = 0
                   alsa.card = 0
                   alsa.card_name = "DisplayPort\ monitor"
                   alsa.long_card_name = "DisplayPort\ monitor"
                   device.bus_path = /devices/platform/amba/fd4a0000.zynqmp-display/fd4a0000.zynqmp-display:zynqmp_dp_snd_card/sound/card0
                   sysfs.path = /devices/platform/amba/fd4a0000.zynqmp-display/fd4a0000.zynqmp-display:zynqmp_dp_snd_card/sound/card0
                   device.form_factor = internal
                   device.string = hw:0
                   device.buffering.buffer_size = 65536
                   device.buffering.fragment_size = 32768
                   device.access_mode = mmap+timer
                   device.profile.name = stereo-fallback
                   device.profile.description = Stereo
                   device.description = "Built-in\ Audio\ Stereo"
                   module-udev-detect.discovered = 1
                   device.icon_name = audio-card
        gst-launch-1.0 ... ! pulsesink device=alsa_output.0.stereo-fallback


Device found:

 

        name : vcap_hdmi output 0
        class : Video/Source
        caps : video/x-raw, format=(string)NV12, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 32768 ], height=(int)[ 1, 8191 ], interlace-mode=(string)alternate;
                   video/x-raw, format=(string)NV12, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 32768 ], height=(int)[ 1, 8191 ], interlace-mode=(string){ progressive, interleaved };
                   video/x-raw, format=(string)NV12, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 32768 ], height=(int)[ 1, 8191 ], interlace-mode=(string)alternate;
                   video/x-raw, format=(string)NV12, framerate=(fraction)[ 0/1, 2147483647/1 ], width=(int)[ 16, 32768 ], height=(int)[ 1, 8191 ], interlace-mode=(string){ progressive, interleaved };
        properties:
                   udev-probed = true
                   device.bus_path = "platform-amba_pl\@0:vcap_hdmi"
                   sysfs.path = "/sys/devices/platform/amba_pl\@0/amba_pl\@0:vcap_hdmi/video4linux/video0"
                   device.subsystem = video4linux
                   device.product.name = "vcap_hdmi\ output\ 0"
                   device.capabilities = :
                   device.api = v4l2
                   device.path = /dev/video0
                   v4l2.device.driver = xilinx-vipp
                   v4l2.device.card = "vcap_hdmi\ output\ 0"
                   v4l2.device.bus_info = platform:vcap_hdmi:0
                   v4l2.device.version = 267008 (0x00041300)
                   v4l2.device.capabilities = 2216693760 (0x84201000)
                   v4l2.device.device_caps = 69210112 (0x04201000)
        gst-launch-1.0 v4l2src ! ...
-----

 

The results seems fine. So, I run the following command to make sure pipeline on gstreamer.
However, I'm facing "Internal data stream error" on v4l2src0.

 

# gst-launch-1.0 --gst-debug-level=4 -v v4l2src device=/dev/video0 io-mode=4 num-buffers=1800 ! capsfilter caps="video/x-raw, format=(string)RGB, framerate=(fraction)60/1, width=(int)1920, height=(int)1080, interlace-mode=(string)progressive, pixel-aspect-ratio=(fraction)1/1" ! queue max-size-bytes=0 ! fakesink

 

I guess I need something to control HDMI Rx (or /dev/video0).
But I don't know how to control it.

 

Would anyone help me ?

 

Best regards,

0 Kudos
1 Solution

Accepted Solutions
Highlighted
Xilinx Employee
Xilinx Employee
923 Views
Registered: ‎08-02-2007
5 Replies
Highlighted
Teacher
Teacher
960 Views
Registered: ‎06-16-2013

I already knew how to capture HDMI signal with "vcu_gst_app input.cfg".

 

However, I'd like to know how to set the setting of like "vcu_gst_app input.cfg" by linux standard command. (ex. v4l2-ctl and media-ctl)

How do I do it ?

 

Best regards,

0 Kudos
Highlighted
Xilinx Employee
Xilinx Employee
924 Views
Registered: ‎08-02-2007
Highlighted
Teacher
Teacher
899 Views
Registered: ‎06-16-2013

Hi @xud 

 

Thank you for your reply.

I will check it later.

But I might ask some question.

 

Best regards,

0 Kudos
Highlighted
Moderator
Moderator
860 Views
Registered: ‎11-09-2015

Hi @watari 

Do you have any update on this topic?

If your question is answered or your issue is solved, please kindly mark the response which helped as solution (click on "Accept as solution" button below the reply)

If this is not solved/answered, please reply in the topic giving more information on your current status.

Thanks and Regards,


Florent
Product Application Engineer - Xilinx Technical Support EMEA
**~ Don't forget to reply, give kudos, and accept as solution.~**
0 Kudos
Highlighted
Teacher
Teacher
830 Views
Registered: ‎06-16-2013

Hi @florentw 

 

Sorry for my late reply.

 

Unfortunately, I don't have enough time to try it. So, I haven't solved it yet.

However, it was good information for me.

 

So, I close this issue.

 

Best regards