Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Table of Contents
maxLevel1

...

  • 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
themeMidnight
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
themeMidnight
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
languagebash
themeMidnight
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
languagebash
themeMidnight
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
languagebash
themeMidnight
#!/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
languagebash
themeMidnight
#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

...

...

2018.3

  • Summary:
    • Add first version of driver.
  • Commits:
    • 484cdb2 platform: xilinx: Add mem to mem Multi-Scaler driver (XM2MSC)


Related Links