Table of Contents maxLevel 1
...
- The driver is tested with YUY2, NV16, NV12, RGB, GRAY8, UYVY and BGR Gstreamer formats only.
- Please check section below on Stride and Height align.
Kernel Configuration
The following config options should be enabled in order to build Xilinx Multi-Scaler driver
CONFIG_VIDEO_XILINX
CONFIG_VIDEO_DEV
...
CONFIG_VIDEO_XILINX_MULTISCALER
To check if the options are enabled run the following:
Code Block | ||
---|---|---|
| ||
petalinux-config -c kernel |
When the GUI opens, you can use '/' to search for each config.
The driver is available at,
https://github.com/Xilinx/linux-xlnx/blob/master/drivers/media/platform/xilinx/xilinx-multi-scaler.c
Device Tree Binding
The device tree node will be automatically generated, if the core is configured in the HW design, using the Device Tree BSP.
Steps to generate device-tree is documented here,
http://www.wiki.xilinx.com/Build+Device+Tree+Blob
And a sample binding is shown below and the description of DT property is documented here
Code Block | ||
---|---|---|
| ||
v_multi_scaler_1: v_multi_scaler@a0000000 { clock-names = "ap_clk"; clocks = <&misc_clk_0>; compatible = "xlnx,v-multi-scaler-1.0", "xlnx,v-multi-scaler-v1.0"; interrupt-names = "interrupt"; interrupt-parent = <&gic>; interrupts = <0 89 4>; reg = <0x0 0xa0000000 0x0 0x20000>; reset-gpios = <&gpio 78 1>; xlnx,dma-addr-width = <0x20>; xlnx,max-chan = <8>; xlnx,max-height = <2160>; xlnx,max-width = <3840>; xlnx,num-taps = <12>; xlnx,pixels-per-clock = /bits/ 8 <2>; xlnx,vid-formats = "xrgb8888", "bgr888", "xbgr8888", "xbgr2101010", "uyvy", "y8", "y10", "vuy888", "xvuy8888", "yuvx2101010", "yuyv", "nv12", "nv16", "xv20", "xv15"; }; |
...
Code Block | ||||
---|---|---|---|---|
| ||||
gst-launch-1.0 videotestsrc num-buffers=10 ! video/x-raw, width=1280, height=720, format=RGB ! v4l2video0convertv4l2convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=640, height=480, format=RGB ! filesink location=tmp0.rgb |
...
Code Block | ||||
---|---|---|---|---|
| ||||
gst-launch-1.0 videotestsrc num-buffers=10 ! video/x-raw, width=1280, height=720, format=RGB ! v4l2video0convertv4l2convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=640, height=480, format=RGB ! filesink location=640X480.rgb |
...
Code Block | ||||
---|---|---|---|---|
| ||||
#!/bin/bash gst-launch-1.0 videotestsrc num-buffers=3 ! video/x-raw, width=1280, height=720, format=RGB ! v4l2video1convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=640, height=480, format=RGB ! filesink location=tmp1.rgb & sleep 3 gst-launch-1.0 videotestsrc num-buffers=3 ! video/x-raw, width=1280, height=720, format=RGB ! v4l2video2convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=640, height=480, format=RGB ! filesink location=tmp2.rgb & sleep 3 gst-launch-1.0 videotestsrc num-buffers=3 ! video/x-raw, width=1280, height=720, format=RGB ! v4l2video3convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=640, height=480, format=RGB ! filesink location=tmp3.rgb & sleep 3 gst-launch-1.0 videotestsrc num-buffers=3 ! video/x-raw, width=1280, height=720, format=RGB ! v4l2video4convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=640, height=480, format=RGB ! filesink location=tmp4.rgb & sleep 3 gst-launch-1.0 videotestsrc num-buffers=3 ! video/x-raw, width=1280, height=720, format=RGB ! v4l2video5convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=640, height=480, format=RGB ! filesink location=tmp5.rgb & sleep 3 gst-launch-1.0 videotestsrc num-buffers=3 ! video/x-raw, width=1280, height=720, format=RGB ! v4l2video6convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=640, height=480, format=RGB ! filesink location=tmp6.rgb & sleep 3 gst-launch-1.0 videotestsrc num-buffers=3 ! video/x-raw, width=1280, height=720, format=RGB ! v4l2video7convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=640, height=480, format=RGB ! filesink location=tmp7.rgb & sleep 3 gst-launch-1.0 videotestsrc num-buffers=10 ! video/x-raw, width=1280, height=720, format=RGB ! v4l2video0convertv4l2convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=640, height=480, format=RGB ! filesink location=tmp0.rgb |
...
Code Block | ||||
---|---|---|---|---|
| ||||
#Create input file for abrscaler gst-launch-1.0 videotestsrc num-buffers=10 ! video/x-raw, width=1280, height=720, format=RGB ! v4l2video0convertv4l2convert capture-io-mode=4 output-io-mode=4 ! video/x-raw, width=1920, height=1080, format=RGB ! filesink location=testsrc_rgb_time_10frames.rgb #Run ABR Test gst-launch-1.0 filesrc location=testsrc_rgb_time_10frames.rgb num-buffers=10 blocksize=6220800 do-timestamp=true ! "video/x-raw, width=1920, height=1080, format=RGB, framerate=30/1, interlace-mode=progressive, colorimetry=sRGB" ! xlnxabrscaler device="/dev/video0" name=sc \ sc.src_0 ! "video/x-raw, width=1600, height=900, format=RGB" ! queue ! filesink location=1600x900_rgb_50frames.rgb \ sc.src_1 ! "video/x-raw, width=1280, height=720, format=RGB" ! queue ! filesink location=1280x720_rgb_50frames.rgb \ sc.src_2 ! "video/x-raw, width=800, height=600, format=RGB" ! queue ! filesink location=800x600_rgb_50frames.rgb \ sc.src_3 ! "video/x-raw, width=832, height=480, format=RGB" ! queue ! filesink location=832x480_rgb_50frames.rgb \ sc.src_4 ! "video/x-raw, width=640, height=480, format=RGB" ! queue ! filesink location=640x480_rgb_50frames.rgb \ sc.src_5 ! "video/x-raw, width=480, height=320, format=RGB" ! queue ! filesink location=480x320_rgb_50frames.rgb \ sc.src_6 ! "video/x-raw, width=320, height=240, format=RGB" ! queue ! filesink location=320x240_rgb_50frames.rgb \ sc.src_7 ! "video/x-raw, width=176, height=144, format=RGB" ! queue ! filesink location=176x144_rgb_50frames.rgb |
...
Change Log
2023.2
- Summary
- Removed old documentation about gst-inspect.
2023.1
- Summary
- Fix corruption for YUV422 8 and 10 bpc
- Commits
2022.2
- No changes
2022.1
- Summary
- Fix warning for unchecked return value
- Commits
2021.2
- Summary
- Change print level from error to debug
- Commits
2021.1
- No changes
2020.2
- Summary
- Add streaming capabilities
- Derive caps from video node
- Fix Coverity warnings
- Commits
- v4l: xilinx: multi-scaler: Added streaming capabilities to device
- v4l: xilinx: multi-scaler: Derive the caps from video device node
- v4l: xilinx: multi-scaler: Fix warnings for NULL_RETURNS
- v4l: xilinx: multi-scaler: Fix warnings for INCOMPATIBLE_PARAM
- v4l: xilinx: multi-scaler: Fix warnings for MIXED_ENUM_TYPE
- v4l: xilinx: multi-scaler: Fix warnings for UNUSED_VALUE
2020.1
- Summary
- Minor fixes
- Commits
2019.2
- Summary
- No changes
2019.1
- Summary:
...
2018.3
- Summary:
- Add first version of driver.
- Commits:
- 484cdb2 platform: xilinx: Add mem to mem Multi-Scaler driver (XM2MSC)