Skip to content

tiovxmultiscaler

Rahul T R edited this page May 25, 2023 · 27 revisions

TIOVX Multi Scaler

tiovxvmultiscaler is used to convert video frames between different video resolutions (downscaling only).

Constraints

The element can only:

  • Perform downscale
  • Downscale by a maximum of 4x

The downscale supported source caps the node can compute it's also available to the user by an INFO debug level message, i.e, it could be obtained this way:

GST_DEBUG=tiovxmultiscaler:4 gst-launch-1.0 videotestsrc ! video/x-raw,width=1280,height=720 ! \
tiovxmultiscaler ! video/x-raw,width=320,height=240 ! fakesink -e

Hierarchy

GObject
 ╰──GInitiallyUnowned
     ╰──GstObject
         ╰──GstElement
             ╰──GstTIOVXSimo
                 ╰──GstTIOVXMultiScaler

Pad templates

sink

      video/x-raw
                 format: { (string)NV12, (string)GRAY8, (string)GRAY16_LE }
                  width: [ 1, 8192 ]
                 height: [ 1, 8192 ]
      video/x-raw(memory:batched)
                 format: { (string)NV12, (string)GRAY8, (string)GRAY16_LE }
                  width: [ 1, 8192 ]
                 height: [ 1, 8192 ]
           num-channels: [ 1, 16 ]

Availability – always

Direction – sink

Object type – GstTIOVXMultiScalerPad

Pad properties:

  • pool-size: Size of the buffer pool

    flags: readable, writable

     Unsigned Integer.

     Range: 2 - 16

     Default: 2

  • roi-height: Height of the cropped region of interest

    flags: readable, writable

     Unsigned Integer.

     Range: 0 - 4294967295

     Default: 0

  • roi-startx: Starting X coordinate of the cropped region of interest

    flags: readable, writable

     Unsigned Integer.

     Range: 0 - 4294967295

     Default: 0

  • roi-starty: Starting Y coordinate of the cropped region of interest

    flags: readable, writable

     Unsigned Integer.

     Range: 0 - 4294967295

     Default: 0

  • roi-width: Width of the cropped region of interest

    flags: readable, writable

     Unsigned Integer.

     Range: 0 - 4294967295

     Default: 0

src_%u

      video/x-raw
                 format: { (string)NV12, (string)GRAY8, (string)GRAY16_LE }
                  width: [ 1, 8192 ]
                 height: [ 1, 8192 ]
      video/x-raw(memory:batched)
                 format: { (string)NV12, (string)GRAY8, (string)GRAY16_LE }
                  width: [ 1, 8192 ]
                 height: [ 1, 8192 ]
           num-channels: [ 1, 16 ]

Availability – On Request

Direction – src

Object type – GstTIOVXMultiScalerPad

Pad properties:

  • pool-size: Size of the buffer pool

    flags: readable, writable

     Unsigned Integer.

     Range: 2 - 16

     Default: 2

  • roi-height: Height of the cropped region of interest

    flags: readable, writable

     Unsigned Integer.

     Range: 0 - 4294967295

     Default: 0

  • roi-startx: Starting X coordinate of the cropped region of interest

    flags: readable, writable

     Unsigned Integer.

     Range: 0 - 4294967295

     Default: 0

  • roi-starty: Starting Y coordinate of the cropped region of interest

    flags: readable, writable

     Unsigned Integer.

     Range: 0 - 4294967295

     Default: 0

  • roi-width: Width of the cropped region of interest

    flags: readable, writable

     Unsigned Integer.

     Range: 0 - 4294967295

     Default: 0

Properties

name

The name of the object

String

Default value : "tiovxmultiscaler0"

parent

The parent of the object

Flags : Read / Write

GstObject

Default value : N/A

target

TIOVX target to use by this element

Flags : Read / Write

Enum

Enum "GstTIOVXColorConvertTarget

(0): VPAC_MSC1

(1): VPAC_MSC2

Default value : VPAC_MSC1 (0)

Pipeline examples

Single output

gst-launch-1.0                                                                                \
videotestsrc is-live=true num-buffers=5 ! "video/x-raw,format=NV12,width=1280,height=720" !   \
tiovxmultiscaler name=multi                                                                   \
multi. ! "video/x-raw,format=NV12,width=640,height=480" ! queue ! fakesink silent=false -v -e

5 outputs

gst-launch-1.0 \
videotestsrc is-live=true num-buffers=5 ! "video/x-raw,width=1920,height=1080" !                           \
tiovxmultiscaler name=multi                                                                                \
multi.src_0 ! "video/x-raw,width=1280, height=720" ! queue ! filesink location=out0_1280x720_nv12.raw      \
multi.src_1 ! "video/x-raw, width=640, height=480" ! queue ! filesink location=out1_640x480_nv12.raw       \
multi.src_2 ! "video/x-raw,width=1920,height=1080" ! queue ! filesink location=out2_320x240_nv12.raw       \
multi.src_3 ! "video/x-raw, width=640, height=480" ! queue ! filesink location=out3_640x480_nv12.raw       \
multi.src_4 ! "video/x-raw,width=1280, height=720" ! queue ! filesink location=out4_1280x720_nv12.raw -v -e

Batched processing

gst-launch-1.0                                                                                                  \
videotestsrc is-live=true num-buffers=10 pattern=ball ! video/x-raw, width=1280, height=720, format=NV12 ! mux. \
videotestsrc is-live=true num-buffers=10 pattern=0    ! video/x-raw, width=1280, height=720, format=NV12 ! mux. \
tiovxmux name=mux ! "video/x-raw(memory:batched), width=1280, height=720, format=NV12" !                        \
tiovxmultiscaler name=multi                                                                                     \
multi. ! "video/x-raw(memory:batched), width=640, height=480" ! tiovxdemux name=demux_a                         \
demux_a. ! queue ! filesink location=/tmp/test.raw                                                              \
demux_a. ! queue ! filesink location=/tmp/test1.raw                                                             \
multi. ! "video/x-raw(memory:batched), width=320, height=240" ! tiovxdemux name=demux_b                         \
demux_b. ! queue ! filesink location=/tmp/test2.raw                                                             \
demux_b. ! queue ! filesink location=/tmp/test3.raw

ROI

gst-launch-1.0                                                                                                      \ 
videotestsrc is-live=true num-buffers=5 ! "video/x-raw,format=NV12,width=1280,height=720" !                         \
tiovxmultiscaler name=multi src_0::roi-startx=100 src_0::roi-starty=100 src_0::roi-width=640 src_0::roi-height=480   \
multi. ! "video/x-raw,format=NV12,width=320,height=240" ! queue ! fakesink silent=false -v -e
Clone this wiki locally