+-----+-----+
|
+-----V----------+ - manages ringbuffer
- + baseaudiosink + - manages scheduling (push/pull)
+ + audiobasesink + - manages scheduling (push/pull)
+-----+----------+ - manages clock/query/seek
| - manages scheduling of samples in the ringbuffer
| - manages caps parsing
- getrange based mode
- In getrange based mode, the baseaudiosink will use the callback function
+ In getrange based mode, the audiobasesink will use the callback function
of the ringbuffer to get a segsize samples from the peer element. These
samples will then be placed in the ringbuffer at the next play position.
It is assumed that the getrange function returns fast enough to fill the
DMA mode:
- Elements that can do DMA based access to the audio device have to subclass
- from the GstBaseAudioSink class and wrap the DMA ringbuffer in a subclass
+ from the GstAudioBaseSink class and wrap the DMA ringbuffer in a subclass
of GstRingBuffer.
The ringbuffer subclass should trigger a callback after writing or playing
Clocks:
- The GstBaseAudioSink class will use the ringbuffer to act as a clock provider.
+ The GstAudioBaseSink class will use the ringbuffer to act as a clock provider.
It can do this by using the play pointer and the delay to calculate the
clock time.
+++ /dev/null
-Media Types
------------
-
- video/x-raw
-
- width, G_TYPE_INT, mandatory
- The width of the image in pixels.
-
- height, G_TYPE_INT, mandatory
- The height of the image in pixels
-
- framerate, GST_TYPE_FRACTION, default 0/1
- The framerate of the video 0/1 for variable framerate
-
- max-framerate, GST_TYPE_FRACTION, default as framerate
- For variable framerates this would be the maximum framerate that
- is expected. This value is only valid when the framerate is 0/1
-
- views, G_TYPE_INT, default 1
- The number of views for multiview video. Each buffer contains
- multiple GstMetaVideo buffers that describe each view. use the frame id to
- get access to the different views.
-
- interlace-mode, G_TYPE_STRING, default progressive
- The interlace mode. The following values are possible:
-
- "progressive" : all frames are progressive
- "interleaved" : 2 fields are interleaved in one video frame. Extra buffer
- flags describe the field order.
- "mixed" : progressive and interleaved frames, extra buffer flags describe
- the frame and fields.
- "fields" : 2 fields are stored in one buffer, use the frame ID
- to get access to the required field. For multiview (the
- views property > 1) the second field of view N is at N * 2.
- Each view has only half the amount of lines as noted in the
- height property, pads specifying the "fields" property
- must be prepared for this.
-
- chroma-site, G_TYPE_STRING, default UNKNOWN
- The chroma siting of the video frames.
-
- "jpeg" : GST_VIDEO_CHROMA_SITE_JPEG
- "mpeg2": GST_VIDEO_CHROMA_SITE_MPEG2
- "dv" : GST_VIDEO_CHROMA_SITE_DV
-
- colorimetry, G_TYPE_STRING, default UNKNOWN
- The colorimetry of the video frames predefined colorimetry is given with
- the following values:
-
- "bt601"
- "bt709"
- "smpte240m"
-
- pixel-aspect-ratio, GST_TYPE_FRACTION, default 1/1
- The pixel aspect ration of the video
-
- format, G_TYPE_STRING, mandatory
- The format of the video
-
- * "I420" planar 4:2:0 YUV
-
- Component 0: Y
- depth: 8
- pstride: 1
- default offset: 0
- default rstride: RU4 (width)
- default size: rstride (component0) * RU2 (height)
-
- Component 1: U
- depth: 8
- pstride: 1
- default offset: size (component0)
- default rstride: RU4 (RU2 (width) / 2)
- default size: rstride (component1) * RU2 (height) / 2
-
- Component 2: V
- depth 8
- pstride: 1
- default offset: offset (component1) + size (component1)
- default rstride: RU4 (RU2 (width) / 2)
- default size: rstride (component2) * RU2 (height) / 2
-
- Image
- default size: size (component0) +
- size (component1) +
- size (component2)
-
- * "YV12" planar 4:2:0 YUV
-
- Same as I420 but with U and V planes swapped
-
- Component 0: Y
- depth: 8
- pstride: 1
- default offset: 0
- default rstride: RU4 (width)
- default size: rstride (component0) * RU2 (height)
-
- Component 1: U
- depth 8
- pstride: 1
- default offset: offset (component2) + size (component2)
- default rstride: RU4 (RU2 (width) / 2)
- default size: rstride (component1) * RU2 (height) / 2
-
- Component 2: V
- depth: 8
- pstride: 1
- default offset: size (component0)
- default rstride: RU4 (RU2 (width) / 2)
- default size: rstride (component2) * RU2 (height) / 2
-
- Image
- default size: size (component0) +
- size (component1) +
- size (component2)
-
- * "YUY2" packed 4:2:2 YUV
-
- +--+--+--+--+ +--+--+--+--+
- |Y0|U0|Y1|V0| |Y2|U2|Y3|V2| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: Y
- depth: 8
- pstride: 2
- offset: 0
-
- Component 1: U
- depth: 8
- offset: 1
- pstride: 4
-
- Component 2: V
- depth 8
- offset: 3
- pstride: 4
-
- Image
- default rstride: RU4 (width * 2)
- default size: rstride (image) * height
-
-
- * "YVYU" packed 4:2:2 YUV
-
- Same as "YUY2" but with U and V planes swapped
-
- +--+--+--+--+ +--+--+--+--+
- |Y0|V0|Y1|U0| |Y2|V2|Y3|U2| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: Y
- depth: 8
- pstride: 2
- offset: 0
-
- Component 1: U
- depth: 8
- pstride: 4
- offset: 3
-
- Component 2: V
- depth 8
- pstride: 4
- offset: 1
-
- Image
- default rstride: RU4 (width * 2)
- default size: rstride (image) * height
-
-
- * "UYVY" packed 4:2:2 YUV
-
- +--+--+--+--+ +--+--+--+--+
- |U0|Y0|V0|Y1| |U2|Y2|V2|Y3| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: Y
- depth: 8
- pstride: 2
- offset: 1
-
- Component 1: U
- depth: 8
- pstride: 4
- offset: 0
-
- Component 2: V
- depth 8
- pstride: 4
- offset: 2
-
- Image
- default rstride: RU4 (width * 2)
- default size: rstride (image) * height
-
-
- * "AYUV" packed 4:4:4 YUV with alpha channel
-
- +--+--+--+--+ +--+--+--+--+
- |A0|Y0|U0|V0| |A1|Y1|U1|V1| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: Y
- depth: 8
- pstride: 4
- offset: 1
-
- Component 1: U
- depth: 8
- pstride: 4
- offset: 2
-
- Component 2: V
- depth 8
- pstride: 4
- offset: 3
-
- Component 3: A
- depth 8
- pstride: 4
- offset: 0
-
- Image
- default rstride: width * 4
- default size: rstride (image) * height
-
-
- * "RGBx" sparse rgb packed into 32 bit, space last
-
- +--+--+--+--+ +--+--+--+--+
- |R0|G0|B0|X | |R1|G1|B1|X | ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: R
- depth: 8
- pstride: 4
- offset: 0
-
- Component 1: G
- depth: 8
- pstride: 4
- offset: 1
-
- Component 2: B
- depth 8
- pstride: 4
- offset: 2
-
- Image
- default rstride: width * 4
- default size: rstride (image) * height
-
- * "BGRx" sparse reverse rgb packed into 32 bit, space last
-
- +--+--+--+--+ +--+--+--+--+
- |B0|G0|R0|X | |B1|G1|R1|X | ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: R
- depth: 8
- pstride: 4
- offset: 2
-
- Component 1: G
- depth: 8
- pstride: 4
- offset: 1
-
- Component 2: B
- depth 8
- pstride: 4
- offset: 0
-
- Image
- default rstride: width * 4
- default size: rstride (image) * height
-
- * "xRGB" sparse rgb packed into 32 bit, space first
-
- +--+--+--+--+ +--+--+--+--+
- |X |R0|G0|B0| |X |R1|G1|B1| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: R
- depth: 8
- pstride: 4
- offset: 1
-
- Component 1: G
- depth: 8
- pstride: 4
- offset: 2
-
- Component 2: B
- depth 8
- pstride: 4
- offset: 3
-
- Image
- default rstride: width * 4
- default size: rstride (image) * height
-
- * "xBGR" sparse reverse rgb packed into 32 bit, space first
-
- +--+--+--+--+ +--+--+--+--+
- |X |B0|G0|R0| |X |B1|G1|R1| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: R
- depth: 8
- pstride: 4
- offset: 3
-
- Component 1: G
- depth: 8
- pstride: 4
- offset: 2
-
- Component 2: B
- depth 8
- pstride: 4
- offset: 1
-
- Image
- default rstride: width * 4
- default size: rstride (image) * height
-
- * "RGBA" rgb with alpha channel last
-
- +--+--+--+--+ +--+--+--+--+
- |R0|G0|B0|A0| |R1|G1|B1|A1| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: R
- depth: 8
- pstride: 4
- offset: 0
-
- Component 1: G
- depth: 8
- pstride: 4
- offset: 1
-
- Component 2: B
- depth 8
- pstride: 4
- offset: 2
-
- Component 3: A
- depth 8
- pstride: 4
- offset: 3
-
- Image
- default rstride: width * 4
- default size: rstride (image) * height
-
- * "BGRA" reverse rgb with alpha channel last
-
- +--+--+--+--+ +--+--+--+--+
- |B0|G0|R0|A0| |B1|G1|R1|A1| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: R
- depth: 8
- pstride: 4
- offset: 2
-
- Component 1: G
- depth: 8
- pstride: 4
- offset: 1
-
- Component 2: B
- depth 8
- pstride: 4
- offset: 0
-
- Component 3: A
- depth 8
- pstride: 4
- offset: 3
-
- Image
- default rstride: width * 4
- default size: rstride (image) * height
-
- * "ARGB" rgb with alpha channel first
-
- +--+--+--+--+ +--+--+--+--+
- |A0|R0|G0|B0| |A1|R1|G1|B1| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: R
- depth: 8
- pstride: 4
- offset: 1
-
- Component 1: G
- depth: 8
- pstride: 4
- offset: 2
-
- Component 2: B
- depth 8
- pstride: 4
- offset: 3
-
- Component 3: A
- depth 8
- pstride: 4
- offset: 0
-
- Image
- default rstride: width * 4
- default size: rstride (image) * height
-
- * "ABGR" reverse rgb with alpha channel first
-
- +--+--+--+--+ +--+--+--+--+
- |A0|R0|G0|B0| |A1|R1|G1|B1| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: R
- depth: 8
- pstride: 4
- offset: 1
-
- Component 1: G
- depth: 8
- pstride: 4
- offset: 2
-
- Component 2: B
- depth 8
- pstride: 4
- offset: 3
-
- Component 3: A
- depth 8
- pstride: 4
- offset: 0
-
- Image
- default rstride: width * 4
- default size: rstride (image) * height
-
- * "RGB" rgb
-
- +--+--+--+ +--+--+--+
- |R0|G0|B0| |R1|G1|B1| ...
- +--+--+--+ +--+--+--+
-
- Component 0: R
- depth: 8
- pstride: 3
- offset: 0
-
- Component 1: G
- depth: 8
- pstride: 3
- offset: 1
-
- Component 2: B
- depth 8
- pstride: 3
- offset: 2
-
- Image
- default rstride: RU4 (width * 3)
- default size: rstride (image) * height
-
- * "BGR" reverse rgb
-
- +--+--+--+ +--+--+--+
- |B0|G0|R0| |B1|G1|R1| ...
- +--+--+--+ +--+--+--+
-
- Component 0: R
- depth: 8
- pstride: 3
- offset: 2
-
- Component 1: G
- depth: 8
- pstride: 3
- offset: 1
-
- Component 2: B
- depth 8
- pstride: 3
- offset: 0
-
- Image
- default rstride: RU4 (width * 3)
- default size: rstride (image) * height
-
- * "Y41B" planar 4:1:1 YUV
-
- Component 0: Y
- depth: 8
- pstride: 1
- default offset: 0
- default rstride: RU4 (width)
- default size: rstride (component0) * height
-
- Component 1: U
- depth 8
- pstride: 1
- default offset: size (component0)
- default rstride: RU16 (width) / 4
- default size: rstride (component1) * height
-
- Component 2: V
- depth: 8
- pstride: 1
- default offset: offset (component1) + size (component1)
- default rstride: RU16 (width) / 4
- default size: rstride (component2) * height
-
- Image
- default size: size (component0) +
- size (component1) +
- size (component2)
-
- * "Y42B" planar 4:2:2 YUV
-
- Component 0: Y
- depth: 8
- pstride: 1
- default offset: 0
- default rstride: RU4 (width)
- default size: rstride (component0) * height
-
- Component 1: U
- depth 8
- pstride: 1
- default offset: size (component0)
- default rstride: RU8 (width) / 2
- default size: rstride (component1) * height
-
- Component 2: V
- depth: 8
- pstride: 1
- default offset: offset (component1) + size (component1)
- default rstride: RU8 (width) / 2
- default size: rstride (component2) * height
-
- Image
- default size: size (component0) +
- size (component1) +
- size (component2)
-
- * "Y444" planar 4:4:4 YUV
-
- Component 0: Y
- depth: 8
- pstride: 1
- default offset: 0
- default rstride: RU4 (width)
- default size: rstride (component0) * height
-
- Component 1: U
- depth 8
- pstride: 1
- default offset: size (component0)
- default rstride: RU4 (width)
- default size: rstride (component1) * height
-
- Component 2: V
- depth: 8
- pstride: 1
- default offset: offset (component1) + size (component1)
- default rstride: RU4 (width)
- default size: rstride (component2) * height
-
- Image
- default size: size (component0) +
- size (component1) +
- size (component2)
-
- * "v210" packed 4:2:2 10-bit YUV, complex format
-
- Component 0: Y
- depth: 10
-
- Component 1: U
- depth 10
-
- Component 2: V
- depth: 10
-
- Image
- default rstride: RU48 (width) * 128
- default size: rstride (image) * height
-
-
- * "v216" packed 4:2:2 16-bit YUV, Y0-U0-Y1-V1 order
-
- Component 0: Y
- depth: 16
- pstride: 4
- offset: 0
-
- Component 1: U
- depth 16
- pstride: 8
- offset: 2
-
- Component 2: V
- depth: 16
- pstride: 8
- offset: 6
-
- Image
- default rstride: RU8 (width * 2)
- default size: rstride (image) * height
-
- * "NV12" planar 4:2:0 YUV with interleaved UV plane
-
- Component 0: Y
- depth: 8
- pstride: 1
- default offset: 0
- default rstride: RU4 (width)
- default size: rstride (component0) * RU2 (height)
-
- Component 1: U
- depth 8
- pstride: 2
- default offset: size (component0)
- default rstride: RU4 (width)
-
- Component 2: V
- depth: 8
- pstride: 2
- default offset: offset (component1) + 1
- default rstride: RU4 (width)
-
- Image
- default size: RU4 (width) * RU2 (height) * 3 / 2
-
-
- * "NV21" planar 4:2:0 YUV with interleaved VU plane
-
- Component 0: Y
- depth: 8
- pstride: 1
- default offset: 0
- default rstride: RU4 (width)
- default size: rstride (component0) * RU2 (height)
-
- Component 1: U
- depth 8
- pstride: 2
- default offset: offset (component1) + 1
- default rstride: RU4 (width)
-
- Component 2: V
- depth: 8
- pstride: 2
- default offset: size (component0)
- default rstride: RU4 (width)
-
- Image
- default size: RU4 (width) * RU2 (height) * 3 / 2
-
- * "GRAY8" 8-bit grayscale
- * "Y800" same as "GRAY8"
-
- Component 0: Y
- depth: 8
- offset: 0
- pstride: 1
- default rstride: RU4 (width)
- default size: rstride (component0) * height
-
- Image
- default size: size (component0)
-
- * "GRAY16_BE" 16-bit grayscale, most significant byte first
-
- Component 0: Y
- depth: 16
- offset: 0
- pstride: 2
- default rstride: RU4 (width * 2)
- default size: rstride (component0) * height
-
- Image
- default size: size (component0)
-
- * "GRAY16_LE" 16-bit grayscale, least significant byte first
- * "Y16" same as "GRAY16_LE"
-
- Component 0: Y
- depth: 16
- offset: 0
- pstride: 2
- default rstride: RU4 (width * 2)
- default size: rstride (component0) * height
-
- Image
- default size: size (component0)
-
- * "v308" packed 4:4:4 YUV
-
- +--+--+--+ +--+--+--+
- |Y0|U0|V0| |Y1|U1|V1| ...
- +--+--+--+ +--+--+--+
-
- Component 0: Y
- depth: 8
- pstride: 3
- offset: 0
-
- Component 1: U
- depth 8
- pstride: 3
- offset: 1
-
- Component 2: V
- depth: 8
- pstride: 3
- offset: 2
-
- Image
- default rstride: RU4 (width * 3)
- default size: rstride (image) * height
-
-
- * "RGB16" rgb 5-6-5 bits per component
-
- +--+--+--+ +--+--+--+
- |R0|G0|B0| |R1|G1|B1| ...
- +--+--+--+ +--+--+--+
-
- Component 0: R
- depth: 5
- pstride: 2
-
- Component 1: G
- depth 6
- pstride: 2
-
- Component 2: B
- depth: 5
- pstride: 2
-
- Image
- default rstride: RU4 (width * 2)
- default size: rstride (image) * height
-
- * "BGR16" reverse rgb 5-6-5 bits per component
-
- +--+--+--+ +--+--+--+
- |B0|G0|R0| |B1|G1|R1| ...
- +--+--+--+ +--+--+--+
-
- Component 0: R
- depth: 5
- pstride: 2
-
- Component 1: G
- depth 6
- pstride: 2
-
- Component 2: B
- depth: 5
- pstride: 2
-
- Image
- default rstride: RU4 (width * 2)
- default size: rstride (image) * height
-
- * "RGB15" rgb 5-5-5 bits per component
-
- +--+--+--+ +--+--+--+
- |R0|G0|B0| |R1|G1|B1| ...
- +--+--+--+ +--+--+--+
-
- Component 0: R
- depth: 5
- pstride: 2
-
- Component 1: G
- depth 5
- pstride: 2
-
- Component 2: B
- depth: 5
- pstride: 2
-
- Image
- default rstride: RU4 (width * 2)
- default size: rstride (image) * height
-
- * "BGR15" reverse rgb 5-5-5 bits per component
-
- +--+--+--+ +--+--+--+
- |B0|G0|R0| |B1|G1|R1| ...
- +--+--+--+ +--+--+--+
-
- Component 0: R
- depth: 5
- pstride: 2
-
- Component 1: G
- depth 5
- pstride: 2
-
- Component 2: B
- depth: 5
- pstride: 2
-
- Image
- default rstride: RU4 (width * 2)
- default size: rstride (image) * height
-
- * "UYVP" packed 10-bit 4:2:2 YUV (U0-Y0-V0-Y1 U2-Y2-V2-Y3 U4 ...)
-
- Component 0: Y
- depth: 10
-
- Component 1: U
- depth 10
-
- Component 2: V
- depth: 10
-
- Image
- default rstride: RU4 (width * 2 * 5)
- default size: rstride (image) * height
-
- * "A420" planar 4:4:2:0 AYUV
-
- Component 0: Y
- depth: 8
- pstride: 1
- default offset: 0
- default rstride: RU4 (width)
- default size: rstride (component0) * RU2 (height)
-
- Component 1: U
- depth 8
- pstride: 1
- default offset: size (component0)
- default rstride: RU4 (RU2 (width) / 2)
- default size: rstride (component1) * (RU2 (height) / 2)
-
- Component 2: V
- depth: 8
- pstride: 1
- default offset: size (component0) + size (component1)
- default rstride: RU4 (RU2 (width) / 2)
- default size: rstride (component2) * (RU2 (height) / 2)
-
- Component 3: A
- depth: 8
- pstride: 1
- default offset: size (component0) + size (component1) +
- size (component2)
- default rstride: RU4 (width)
- default size: rstride (component3) * RU2 (height)
-
- Image
- default size: size (component0) +
- size (component1) +
- size (component2) +
- size (component3)
-
- * "RGB8_PALETTED" 8-bit paletted RGB
-
- Component 0: R
- depth: 8
-
- Component 1: G
- depth 8
-
- Component 2: B
- depth: 8
-
- Image
- default pstride: 1
- default rstride: RU4 (width)
- default size: rstride (image) * height
-
- * "YUV9" planar 4:1:0 YUV
-
- Component 0: Y
- depth: 8
- pstride: 1
- default offset: 0
- default rstride: RU4 (width)
- default size: rstride (component0) * height
-
- Component 1: U
- depth 8
- pstride: 1
- default offset: size (component0)
- default rstride: RU4 (RU4 (width) / 4)
- default size: rstride (component1) * (RU4 (height) / 4)
-
- Component 2: V
- depth: 8
- pstride: 1
- default offset: offset (component1) + size (component1)
- default rstride: RU4 (RU4 (width) / 4)
- default size: rstride (component2) * (RU4 (height) / 4)
-
- Image
- default size: size (component0) +
- size (component1) +
- size (component2)
-
- * "YVU9" planar 4:1:0 YUV (like YUV9 but UV planes swapped)
-
- Component 0: Y
- depth: 8
- pstride: 1
- default offset: 0
- default rstride: RU4 (width)
- default size: rstride (component0) * height
-
- Component 1: U
- depth 8
- pstride: 1
- default offset: offset (component2) + size (component2)
- default rstride: RU4 (RU4 (width) / 4)
- default size: rstride (component1) * (RU4 (height) / 4)
-
- Component 2: V
- depth: 8
- pstride: 1
- default offset: size (component0)
- default rstride: RU4 (RU4 (width) / 4)
- default size: rstride (component2) * (RU4 (height) / 4)
-
- Image
- default size: size (component0) +
- size (component1) +
- size (component2)
-
- * "IYU1" packed 4:1:1 YUV (Cb-Y0-Y1-Cr-Y2-Y3 ...)
-
- +--+--+--+ +--+--+--+
- |B0|G0|R0| |B1|G1|R1| ...
- +--+--+--+ +--+--+--+
-
- Component 0: Y
- depth: 8
- offset: 1
- pstride: 2
-
- Component 1: U
- depth 5
- offset: 0
- pstride: 2
-
- Component 2: V
- depth: 5
- offset: 4
- pstride: 2
-
- Image
- default rstride: RU4 (RU4 (width) + RU4 (width) / 2)
- default size: rstride (image) * height
-
- * "ARGB64" rgb with alpha channel first, 16 bits per channel
-
- +--+--+--+--+ +--+--+--+--+
- |A0|R0|G0|B0| |A1|R1|G1|B1| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: R
- depth: 16
- pstride: 8
- offset: 2
-
- Component 1: G
- depth 16
- pstride: 8
- offset: 4
-
- Component 2: B
- depth: 16
- pstride: 8
- offset: 6
-
- Component 3: A
- depth: 16
- pstride: 8
- offset: 0
-
- Image
- default rstride: width * 8
- default size: rstride (image) * height
-
- * "AYUV64" packed 4:4:4 YUV with alpha channel, 16 bits per channel (A0-Y0-U0-V0 ...)
-
- +--+--+--+--+ +--+--+--+--+
- |A0|Y0|U0|V0| |A1|Y1|U1|V1| ...
- +--+--+--+--+ +--+--+--+--+
-
- Component 0: Y
- depth: 16
- pstride: 8
- offset: 2
-
- Component 1: U
- depth 16
- pstride: 8
- offset: 4
-
- Component 2: V
- depth: 16
- pstride: 8
- offset: 6
-
- Component 3: A
- depth: 16
- pstride: 8
- offset: 0
-
- Image
- default rstride: width * 8
- default size: rstride (image) * height
-
- * "r210" packed 4:4:4 RGB, 10 bits per channel
-
- +--+--+--+ +--+--+--+
- |R0|G0|B0| |R1|G1|B1| ...
- +--+--+--+ +--+--+--+
-
- Component 0: R
- depth: 10
- pstride: 4
-
- Component 1: G
- depth 10
- pstride: 4
-
- Component 2: B
- depth: 10
- pstride: 4
-
- Image
- default rstride: width * 4
- default size: rstride (image) * height
-
+** outdated **
+
Interlaced Video
================
--- /dev/null
+Media Types
+-----------
+
+ video/x-raw
+
+ width, G_TYPE_INT, mandatory
+ The width of the image in pixels.
+
+ height, G_TYPE_INT, mandatory
+ The height of the image in pixels
+
+ framerate, GST_TYPE_FRACTION, default 0/1
+ The framerate of the video 0/1 for variable framerate
+
+ max-framerate, GST_TYPE_FRACTION, default as framerate
+ For variable framerates this would be the maximum framerate that
+ is expected. This value is only valid when the framerate is 0/1
+
+ views, G_TYPE_INT, default 1
+ The number of views for multiview video. Each buffer contains
+ multiple GstVideoMeta buffers that describe each view. use the frame id to
+ get access to the different views.
+
+ interlace-mode, G_TYPE_STRING, default progressive
+ The interlace mode. The following values are possible:
+
+ "progressive" : all frames are progressive
+ "interleaved" : 2 fields are interleaved in one video frame. Extra buffer
+ flags describe the field order.
+ "mixed" : progressive and interleaved frames, extra buffer flags describe
+ the frame and fields.
+ "fields" : 2 fields are stored in one buffer, use the frame ID
+ to get access to the required field. For multiview (the
+ views property > 1) the second field of view N is at N * 2.
+ Each view has only half the amount of lines as noted in the
+ height property, pads specifying the "fields" property
+ must be prepared for this. This mode requires multiple
+ GstVideoMeta metadata to describe the fields.
+
+ chroma-site, G_TYPE_STRING, default UNKNOWN
+ The chroma siting of the video frames.
+
+ "jpeg" : GST_VIDEO_CHROMA_SITE_JPEG
+ "mpeg2": GST_VIDEO_CHROMA_SITE_MPEG2
+ "dv" : GST_VIDEO_CHROMA_SITE_DV
+
+ colorimetry, G_TYPE_STRING, default UNKNOWN
+ The colorimetry of the video frames predefined colorimetry is given with
+ the following values:
+
+ "bt601"
+ "bt709"
+ "smpte240m"
+
+ pixel-aspect-ratio, GST_TYPE_FRACTION, default 1/1
+ The pixel aspect ration of the video
+
+ format, G_TYPE_STRING, mandatory
+ The format of the video
+
+ * "I420" planar 4:2:0 YUV
+
+ Component 0: Y
+ depth: 8
+ pstride: 1
+ default offset: 0
+ default rstride: RU4 (width)
+ default size: rstride (component0) * RU2 (height)
+
+ Component 1: U
+ depth: 8
+ pstride: 1
+ default offset: size (component0)
+ default rstride: RU4 (RU2 (width) / 2)
+ default size: rstride (component1) * RU2 (height) / 2
+
+ Component 2: V
+ depth 8
+ pstride: 1
+ default offset: offset (component1) + size (component1)
+ default rstride: RU4 (RU2 (width) / 2)
+ default size: rstride (component2) * RU2 (height) / 2
+
+ Image
+ default size: size (component0) +
+ size (component1) +
+ size (component2)
+
+ * "YV12" planar 4:2:0 YUV
+
+ Same as I420 but with U and V planes swapped
+
+ Component 0: Y
+ depth: 8
+ pstride: 1
+ default offset: 0
+ default rstride: RU4 (width)
+ default size: rstride (component0) * RU2 (height)
+
+ Component 1: U
+ depth 8
+ pstride: 1
+ default offset: offset (component2) + size (component2)
+ default rstride: RU4 (RU2 (width) / 2)
+ default size: rstride (component1) * RU2 (height) / 2
+
+ Component 2: V
+ depth: 8
+ pstride: 1
+ default offset: size (component0)
+ default rstride: RU4 (RU2 (width) / 2)
+ default size: rstride (component2) * RU2 (height) / 2
+
+ Image
+ default size: size (component0) +
+ size (component1) +
+ size (component2)
+
+ * "YUY2" packed 4:2:2 YUV
+
+ +--+--+--+--+ +--+--+--+--+
+ |Y0|U0|Y1|V0| |Y2|U2|Y3|V2| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: Y
+ depth: 8
+ pstride: 2
+ offset: 0
+
+ Component 1: U
+ depth: 8
+ offset: 1
+ pstride: 4
+
+ Component 2: V
+ depth 8
+ offset: 3
+ pstride: 4
+
+ Image
+ default rstride: RU4 (width * 2)
+ default size: rstride (image) * height
+
+
+ * "YVYU" packed 4:2:2 YUV
+
+ Same as "YUY2" but with U and V planes swapped
+
+ +--+--+--+--+ +--+--+--+--+
+ |Y0|V0|Y1|U0| |Y2|V2|Y3|U2| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: Y
+ depth: 8
+ pstride: 2
+ offset: 0
+
+ Component 1: U
+ depth: 8
+ pstride: 4
+ offset: 3
+
+ Component 2: V
+ depth 8
+ pstride: 4
+ offset: 1
+
+ Image
+ default rstride: RU4 (width * 2)
+ default size: rstride (image) * height
+
+
+ * "UYVY" packed 4:2:2 YUV
+
+ +--+--+--+--+ +--+--+--+--+
+ |U0|Y0|V0|Y1| |U2|Y2|V2|Y3| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: Y
+ depth: 8
+ pstride: 2
+ offset: 1
+
+ Component 1: U
+ depth: 8
+ pstride: 4
+ offset: 0
+
+ Component 2: V
+ depth 8
+ pstride: 4
+ offset: 2
+
+ Image
+ default rstride: RU4 (width * 2)
+ default size: rstride (image) * height
+
+
+ * "AYUV" packed 4:4:4 YUV with alpha channel
+
+ +--+--+--+--+ +--+--+--+--+
+ |A0|Y0|U0|V0| |A1|Y1|U1|V1| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: Y
+ depth: 8
+ pstride: 4
+ offset: 1
+
+ Component 1: U
+ depth: 8
+ pstride: 4
+ offset: 2
+
+ Component 2: V
+ depth 8
+ pstride: 4
+ offset: 3
+
+ Component 3: A
+ depth 8
+ pstride: 4
+ offset: 0
+
+ Image
+ default rstride: width * 4
+ default size: rstride (image) * height
+
+
+ * "RGBx" sparse rgb packed into 32 bit, space last
+
+ +--+--+--+--+ +--+--+--+--+
+ |R0|G0|B0|X | |R1|G1|B1|X | ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: R
+ depth: 8
+ pstride: 4
+ offset: 0
+
+ Component 1: G
+ depth: 8
+ pstride: 4
+ offset: 1
+
+ Component 2: B
+ depth 8
+ pstride: 4
+ offset: 2
+
+ Image
+ default rstride: width * 4
+ default size: rstride (image) * height
+
+ * "BGRx" sparse reverse rgb packed into 32 bit, space last
+
+ +--+--+--+--+ +--+--+--+--+
+ |B0|G0|R0|X | |B1|G1|R1|X | ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: R
+ depth: 8
+ pstride: 4
+ offset: 2
+
+ Component 1: G
+ depth: 8
+ pstride: 4
+ offset: 1
+
+ Component 2: B
+ depth 8
+ pstride: 4
+ offset: 0
+
+ Image
+ default rstride: width * 4
+ default size: rstride (image) * height
+
+ * "xRGB" sparse rgb packed into 32 bit, space first
+
+ +--+--+--+--+ +--+--+--+--+
+ |X |R0|G0|B0| |X |R1|G1|B1| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: R
+ depth: 8
+ pstride: 4
+ offset: 1
+
+ Component 1: G
+ depth: 8
+ pstride: 4
+ offset: 2
+
+ Component 2: B
+ depth 8
+ pstride: 4
+ offset: 3
+
+ Image
+ default rstride: width * 4
+ default size: rstride (image) * height
+
+ * "xBGR" sparse reverse rgb packed into 32 bit, space first
+
+ +--+--+--+--+ +--+--+--+--+
+ |X |B0|G0|R0| |X |B1|G1|R1| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: R
+ depth: 8
+ pstride: 4
+ offset: 3
+
+ Component 1: G
+ depth: 8
+ pstride: 4
+ offset: 2
+
+ Component 2: B
+ depth 8
+ pstride: 4
+ offset: 1
+
+ Image
+ default rstride: width * 4
+ default size: rstride (image) * height
+
+ * "RGBA" rgb with alpha channel last
+
+ +--+--+--+--+ +--+--+--+--+
+ |R0|G0|B0|A0| |R1|G1|B1|A1| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: R
+ depth: 8
+ pstride: 4
+ offset: 0
+
+ Component 1: G
+ depth: 8
+ pstride: 4
+ offset: 1
+
+ Component 2: B
+ depth 8
+ pstride: 4
+ offset: 2
+
+ Component 3: A
+ depth 8
+ pstride: 4
+ offset: 3
+
+ Image
+ default rstride: width * 4
+ default size: rstride (image) * height
+
+ * "BGRA" reverse rgb with alpha channel last
+
+ +--+--+--+--+ +--+--+--+--+
+ |B0|G0|R0|A0| |B1|G1|R1|A1| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: R
+ depth: 8
+ pstride: 4
+ offset: 2
+
+ Component 1: G
+ depth: 8
+ pstride: 4
+ offset: 1
+
+ Component 2: B
+ depth 8
+ pstride: 4
+ offset: 0
+
+ Component 3: A
+ depth 8
+ pstride: 4
+ offset: 3
+
+ Image
+ default rstride: width * 4
+ default size: rstride (image) * height
+
+ * "ARGB" rgb with alpha channel first
+
+ +--+--+--+--+ +--+--+--+--+
+ |A0|R0|G0|B0| |A1|R1|G1|B1| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: R
+ depth: 8
+ pstride: 4
+ offset: 1
+
+ Component 1: G
+ depth: 8
+ pstride: 4
+ offset: 2
+
+ Component 2: B
+ depth 8
+ pstride: 4
+ offset: 3
+
+ Component 3: A
+ depth 8
+ pstride: 4
+ offset: 0
+
+ Image
+ default rstride: width * 4
+ default size: rstride (image) * height
+
+ * "ABGR" reverse rgb with alpha channel first
+
+ +--+--+--+--+ +--+--+--+--+
+ |A0|R0|G0|B0| |A1|R1|G1|B1| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: R
+ depth: 8
+ pstride: 4
+ offset: 1
+
+ Component 1: G
+ depth: 8
+ pstride: 4
+ offset: 2
+
+ Component 2: B
+ depth 8
+ pstride: 4
+ offset: 3
+
+ Component 3: A
+ depth 8
+ pstride: 4
+ offset: 0
+
+ Image
+ default rstride: width * 4
+ default size: rstride (image) * height
+
+ * "RGB" rgb
+
+ +--+--+--+ +--+--+--+
+ |R0|G0|B0| |R1|G1|B1| ...
+ +--+--+--+ +--+--+--+
+
+ Component 0: R
+ depth: 8
+ pstride: 3
+ offset: 0
+
+ Component 1: G
+ depth: 8
+ pstride: 3
+ offset: 1
+
+ Component 2: B
+ depth 8
+ pstride: 3
+ offset: 2
+
+ Image
+ default rstride: RU4 (width * 3)
+ default size: rstride (image) * height
+
+ * "BGR" reverse rgb
+
+ +--+--+--+ +--+--+--+
+ |B0|G0|R0| |B1|G1|R1| ...
+ +--+--+--+ +--+--+--+
+
+ Component 0: R
+ depth: 8
+ pstride: 3
+ offset: 2
+
+ Component 1: G
+ depth: 8
+ pstride: 3
+ offset: 1
+
+ Component 2: B
+ depth 8
+ pstride: 3
+ offset: 0
+
+ Image
+ default rstride: RU4 (width * 3)
+ default size: rstride (image) * height
+
+ * "Y41B" planar 4:1:1 YUV
+
+ Component 0: Y
+ depth: 8
+ pstride: 1
+ default offset: 0
+ default rstride: RU4 (width)
+ default size: rstride (component0) * height
+
+ Component 1: U
+ depth 8
+ pstride: 1
+ default offset: size (component0)
+ default rstride: RU16 (width) / 4
+ default size: rstride (component1) * height
+
+ Component 2: V
+ depth: 8
+ pstride: 1
+ default offset: offset (component1) + size (component1)
+ default rstride: RU16 (width) / 4
+ default size: rstride (component2) * height
+
+ Image
+ default size: size (component0) +
+ size (component1) +
+ size (component2)
+
+ * "Y42B" planar 4:2:2 YUV
+
+ Component 0: Y
+ depth: 8
+ pstride: 1
+ default offset: 0
+ default rstride: RU4 (width)
+ default size: rstride (component0) * height
+
+ Component 1: U
+ depth 8
+ pstride: 1
+ default offset: size (component0)
+ default rstride: RU8 (width) / 2
+ default size: rstride (component1) * height
+
+ Component 2: V
+ depth: 8
+ pstride: 1
+ default offset: offset (component1) + size (component1)
+ default rstride: RU8 (width) / 2
+ default size: rstride (component2) * height
+
+ Image
+ default size: size (component0) +
+ size (component1) +
+ size (component2)
+
+ * "Y444" planar 4:4:4 YUV
+
+ Component 0: Y
+ depth: 8
+ pstride: 1
+ default offset: 0
+ default rstride: RU4 (width)
+ default size: rstride (component0) * height
+
+ Component 1: U
+ depth 8
+ pstride: 1
+ default offset: size (component0)
+ default rstride: RU4 (width)
+ default size: rstride (component1) * height
+
+ Component 2: V
+ depth: 8
+ pstride: 1
+ default offset: offset (component1) + size (component1)
+ default rstride: RU4 (width)
+ default size: rstride (component2) * height
+
+ Image
+ default size: size (component0) +
+ size (component1) +
+ size (component2)
+
+ * "v210" packed 4:2:2 10-bit YUV, complex format
+
+ Component 0: Y
+ depth: 10
+
+ Component 1: U
+ depth 10
+
+ Component 2: V
+ depth: 10
+
+ Image
+ default rstride: RU48 (width) * 128
+ default size: rstride (image) * height
+
+
+ * "v216" packed 4:2:2 16-bit YUV, Y0-U0-Y1-V1 order
+
+ Component 0: Y
+ depth: 16
+ pstride: 4
+ offset: 0
+
+ Component 1: U
+ depth 16
+ pstride: 8
+ offset: 2
+
+ Component 2: V
+ depth: 16
+ pstride: 8
+ offset: 6
+
+ Image
+ default rstride: RU8 (width * 2)
+ default size: rstride (image) * height
+
+ * "NV12" planar 4:2:0 YUV with interleaved UV plane
+
+ Component 0: Y
+ depth: 8
+ pstride: 1
+ default offset: 0
+ default rstride: RU4 (width)
+ default size: rstride (component0) * RU2 (height)
+
+ Component 1: U
+ depth 8
+ pstride: 2
+ default offset: size (component0)
+ default rstride: RU4 (width)
+
+ Component 2: V
+ depth: 8
+ pstride: 2
+ default offset: offset (component1) + 1
+ default rstride: RU4 (width)
+
+ Image
+ default size: RU4 (width) * RU2 (height) * 3 / 2
+
+
+ * "NV21" planar 4:2:0 YUV with interleaved VU plane
+
+ Component 0: Y
+ depth: 8
+ pstride: 1
+ default offset: 0
+ default rstride: RU4 (width)
+ default size: rstride (component0) * RU2 (height)
+
+ Component 1: U
+ depth 8
+ pstride: 2
+ default offset: offset (component1) + 1
+ default rstride: RU4 (width)
+
+ Component 2: V
+ depth: 8
+ pstride: 2
+ default offset: size (component0)
+ default rstride: RU4 (width)
+
+ Image
+ default size: RU4 (width) * RU2 (height) * 3 / 2
+
+ * "GRAY8" 8-bit grayscale
+ * "Y800" same as "GRAY8"
+
+ Component 0: Y
+ depth: 8
+ offset: 0
+ pstride: 1
+ default rstride: RU4 (width)
+ default size: rstride (component0) * height
+
+ Image
+ default size: size (component0)
+
+ * "GRAY16_BE" 16-bit grayscale, most significant byte first
+
+ Component 0: Y
+ depth: 16
+ offset: 0
+ pstride: 2
+ default rstride: RU4 (width * 2)
+ default size: rstride (component0) * height
+
+ Image
+ default size: size (component0)
+
+ * "GRAY16_LE" 16-bit grayscale, least significant byte first
+ * "Y16" same as "GRAY16_LE"
+
+ Component 0: Y
+ depth: 16
+ offset: 0
+ pstride: 2
+ default rstride: RU4 (width * 2)
+ default size: rstride (component0) * height
+
+ Image
+ default size: size (component0)
+
+ * "v308" packed 4:4:4 YUV
+
+ +--+--+--+ +--+--+--+
+ |Y0|U0|V0| |Y1|U1|V1| ...
+ +--+--+--+ +--+--+--+
+
+ Component 0: Y
+ depth: 8
+ pstride: 3
+ offset: 0
+
+ Component 1: U
+ depth 8
+ pstride: 3
+ offset: 1
+
+ Component 2: V
+ depth: 8
+ pstride: 3
+ offset: 2
+
+ Image
+ default rstride: RU4 (width * 3)
+ default size: rstride (image) * height
+
+
+ * "RGB16" rgb 5-6-5 bits per component
+
+ +--+--+--+ +--+--+--+
+ |R0|G0|B0| |R1|G1|B1| ...
+ +--+--+--+ +--+--+--+
+
+ Component 0: R
+ depth: 5
+ pstride: 2
+
+ Component 1: G
+ depth 6
+ pstride: 2
+
+ Component 2: B
+ depth: 5
+ pstride: 2
+
+ Image
+ default rstride: RU4 (width * 2)
+ default size: rstride (image) * height
+
+ * "BGR16" reverse rgb 5-6-5 bits per component
+
+ +--+--+--+ +--+--+--+
+ |B0|G0|R0| |B1|G1|R1| ...
+ +--+--+--+ +--+--+--+
+
+ Component 0: R
+ depth: 5
+ pstride: 2
+
+ Component 1: G
+ depth 6
+ pstride: 2
+
+ Component 2: B
+ depth: 5
+ pstride: 2
+
+ Image
+ default rstride: RU4 (width * 2)
+ default size: rstride (image) * height
+
+ * "RGB15" rgb 5-5-5 bits per component
+
+ +--+--+--+ +--+--+--+
+ |R0|G0|B0| |R1|G1|B1| ...
+ +--+--+--+ +--+--+--+
+
+ Component 0: R
+ depth: 5
+ pstride: 2
+
+ Component 1: G
+ depth 5
+ pstride: 2
+
+ Component 2: B
+ depth: 5
+ pstride: 2
+
+ Image
+ default rstride: RU4 (width * 2)
+ default size: rstride (image) * height
+
+ * "BGR15" reverse rgb 5-5-5 bits per component
+
+ +--+--+--+ +--+--+--+
+ |B0|G0|R0| |B1|G1|R1| ...
+ +--+--+--+ +--+--+--+
+
+ Component 0: R
+ depth: 5
+ pstride: 2
+
+ Component 1: G
+ depth 5
+ pstride: 2
+
+ Component 2: B
+ depth: 5
+ pstride: 2
+
+ Image
+ default rstride: RU4 (width * 2)
+ default size: rstride (image) * height
+
+ * "UYVP" packed 10-bit 4:2:2 YUV (U0-Y0-V0-Y1 U2-Y2-V2-Y3 U4 ...)
+
+ Component 0: Y
+ depth: 10
+
+ Component 1: U
+ depth 10
+
+ Component 2: V
+ depth: 10
+
+ Image
+ default rstride: RU4 (width * 2 * 5)
+ default size: rstride (image) * height
+
+ * "A420" planar 4:4:2:0 AYUV
+
+ Component 0: Y
+ depth: 8
+ pstride: 1
+ default offset: 0
+ default rstride: RU4 (width)
+ default size: rstride (component0) * RU2 (height)
+
+ Component 1: U
+ depth 8
+ pstride: 1
+ default offset: size (component0)
+ default rstride: RU4 (RU2 (width) / 2)
+ default size: rstride (component1) * (RU2 (height) / 2)
+
+ Component 2: V
+ depth: 8
+ pstride: 1
+ default offset: size (component0) + size (component1)
+ default rstride: RU4 (RU2 (width) / 2)
+ default size: rstride (component2) * (RU2 (height) / 2)
+
+ Component 3: A
+ depth: 8
+ pstride: 1
+ default offset: size (component0) + size (component1) +
+ size (component2)
+ default rstride: RU4 (width)
+ default size: rstride (component3) * RU2 (height)
+
+ Image
+ default size: size (component0) +
+ size (component1) +
+ size (component2) +
+ size (component3)
+
+ * "RGB8_PALETTED" 8-bit paletted RGB
+
+ Component 0: R
+ depth: 8
+
+ Component 1: G
+ depth 8
+
+ Component 2: B
+ depth: 8
+
+ Image
+ default pstride: 1
+ default rstride: RU4 (width)
+ default size: rstride (image) * height
+
+ * "YUV9" planar 4:1:0 YUV
+
+ Component 0: Y
+ depth: 8
+ pstride: 1
+ default offset: 0
+ default rstride: RU4 (width)
+ default size: rstride (component0) * height
+
+ Component 1: U
+ depth 8
+ pstride: 1
+ default offset: size (component0)
+ default rstride: RU4 (RU4 (width) / 4)
+ default size: rstride (component1) * (RU4 (height) / 4)
+
+ Component 2: V
+ depth: 8
+ pstride: 1
+ default offset: offset (component1) + size (component1)
+ default rstride: RU4 (RU4 (width) / 4)
+ default size: rstride (component2) * (RU4 (height) / 4)
+
+ Image
+ default size: size (component0) +
+ size (component1) +
+ size (component2)
+
+ * "YVU9" planar 4:1:0 YUV (like YUV9 but UV planes swapped)
+
+ Component 0: Y
+ depth: 8
+ pstride: 1
+ default offset: 0
+ default rstride: RU4 (width)
+ default size: rstride (component0) * height
+
+ Component 1: U
+ depth 8
+ pstride: 1
+ default offset: offset (component2) + size (component2)
+ default rstride: RU4 (RU4 (width) / 4)
+ default size: rstride (component1) * (RU4 (height) / 4)
+
+ Component 2: V
+ depth: 8
+ pstride: 1
+ default offset: size (component0)
+ default rstride: RU4 (RU4 (width) / 4)
+ default size: rstride (component2) * (RU4 (height) / 4)
+
+ Image
+ default size: size (component0) +
+ size (component1) +
+ size (component2)
+
+ * "IYU1" packed 4:1:1 YUV (Cb-Y0-Y1-Cr-Y2-Y3 ...)
+
+ +--+--+--+ +--+--+--+
+ |B0|G0|R0| |B1|G1|R1| ...
+ +--+--+--+ +--+--+--+
+
+ Component 0: Y
+ depth: 8
+ offset: 1
+ pstride: 2
+
+ Component 1: U
+ depth 5
+ offset: 0
+ pstride: 2
+
+ Component 2: V
+ depth: 5
+ offset: 4
+ pstride: 2
+
+ Image
+ default rstride: RU4 (RU4 (width) + RU4 (width) / 2)
+ default size: rstride (image) * height
+
+ * "ARGB64" rgb with alpha channel first, 16 bits per channel
+
+ +--+--+--+--+ +--+--+--+--+
+ |A0|R0|G0|B0| |A1|R1|G1|B1| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: R
+ depth: 16
+ pstride: 8
+ offset: 2
+
+ Component 1: G
+ depth 16
+ pstride: 8
+ offset: 4
+
+ Component 2: B
+ depth: 16
+ pstride: 8
+ offset: 6
+
+ Component 3: A
+ depth: 16
+ pstride: 8
+ offset: 0
+
+ Image
+ default rstride: width * 8
+ default size: rstride (image) * height
+
+ * "AYUV64" packed 4:4:4 YUV with alpha channel, 16 bits per channel (A0-Y0-U0-V0 ...)
+
+ +--+--+--+--+ +--+--+--+--+
+ |A0|Y0|U0|V0| |A1|Y1|U1|V1| ...
+ +--+--+--+--+ +--+--+--+--+
+
+ Component 0: Y
+ depth: 16
+ pstride: 8
+ offset: 2
+
+ Component 1: U
+ depth 16
+ pstride: 8
+ offset: 4
+
+ Component 2: V
+ depth: 16
+ pstride: 8
+ offset: 6
+
+ Component 3: A
+ depth: 16
+ pstride: 8
+ offset: 0
+
+ Image
+ default rstride: width * 8
+ default size: rstride (image) * height
+
+ * "r210" packed 4:4:4 RGB, 10 bits per channel
+
+ +--+--+--+ +--+--+--+
+ |R0|G0|B0| |R1|G1|B1| ...
+ +--+--+--+ +--+--+--+
+
+ Component 0: R
+ depth: 10
+ pstride: 4
+
+ Component 1: G
+ depth 10
+ pstride: 4
+
+ Component 2: B
+ depth: 10
+ pstride: 4
+
+ Image
+ default rstride: width * 4
+ default size: rstride (image) * height
+
--- /dev/null
+playbin2
+--------
+
+The purpose of this element is to decode and render the media contained in a
+given generic uri. The element extends GstPipeline and is typically used in
+playback situations.
+
+Required features:
+
+ - accept and play any valid uri. This includes
+ - rendering video/audio
+ - overlaying subtitles on the video
+ - optionally read external subtitle files
+ - allow for hardware (non raw) sinks
+ - selection of audio/video/subtitle streams based on language.
+ - perform network buffering/incremental download
+ - gapless playback
+ - support for visualisations with configurable sizes
+ - ability to reject files that are too big, or of a format that would require
+ too much CPU/memory usage.
+ - be very efficient with adding elements such as converters to reduce the
+ amount of negotiation that has to happen.
+ - handle chained oggs. This includes having support for dynamic pad add and
+ remove from a demuxer.
+
+Components
+----------
+
+* decodebin2
+
+ - performs the autoplugging of demuxers/decoders
+ - emits signals when for steering the autoplugging
+ - to decide if a non-raw media format is acceptable as output
+ - to sort the possible decoders for a non-raw format
+ - see also decodebin2 design doc
+
+* uridecodebin
+
+ - combination of a source to handle the given uri, an optional queueing element
+ and one or more decodebin2 elements to decode the non-raw streams.
+
+* playsink
+
+ - handles display of audio/video/text.
+ - has request audio/video/text input pad. There is only one sinkpad per type.
+ The requested pads define the configuration of the internal pipeline.
+ - allows for setting audio/video sinks or does automatic sink selection.
+ - allows for configuration of visualisation element.
+ - allows for enable/disable of visualisation, audio and video.
+
+* playbin2
+
+ - combination of one or more uridecodebin elements to read the uri and subtitle
+ uri.
+ - support for queuing new media to support gapless playback.
+ - handles stream selection.
+ - uses playsink to display.
+ - selection of sinks and configuration of uridecodebin with raw output formats.
+
+
+Gapless playback
+----------------
+
+playbin2 has an "about-to-finish" signal. The application should configure a new
+uri (and optional suburi) in the callback. When the current media finishes, this
+new media will be played next.
+
+
+
+++ /dev/null
-playbin2
---------
-
-The purpose of this element is to decode and render the media contained in a
-given generic uri. The element extends GstPipeline and is typically used in
-playback situations.
-
-Required features:
-
- - accept and play any valid uri. This includes
- - rendering video/audio
- - overlaying subtitles on the video
- - optionally read external subtitle files
- - allow for hardware (non raw) sinks
- - selection of audio/video/subtitle streams based on language.
- - perform network buffering/incremental download
- - gapless playback
- - support for visualisations with configurable sizes
- - ability to reject files that are too big, or of a format that would require
- too much CPU/memory usage.
- - be very efficient with adding elements such as converters to reduce the
- amount of negotiation that has to happen.
- - handle chained oggs. This includes having support for dynamic pad add and
- remove from a demuxer.
-
-Components
-----------
-
-* decodebin2
-
- - performs the autoplugging of demuxers/decoders
- - emits signals when for steering the autoplugging
- - to decide if a non-raw media format is acceptable as output
- - to sort the possible decoders for a non-raw format
- - see also decodebin2 design doc
-
-* uridecodebin
-
- - combination of a source to handle the given uri, an optional queueing element
- and one or more decodebin2 elements to decode the non-raw streams.
-
-* playsink
-
- - handles display of audio/video/text.
- - has request audio/video/text input pad. There is only one sinkpad per type.
- The requested pads define the configuration of the internal pipeline.
- - allows for setting audio/video sinks or does automatic sink selection.
- - allows for configuration of visualisation element.
- - allows for enable/disable of visualisation, audio and video.
-
-* playbin2
-
- - combination of one or more uridecodebin elements to read the uri and subtitle
- uri.
- - support for queuing new media to support gapless playback.
- - handles stream selection.
- - uses playsink to display.
- - selection of sinks and configuration of uridecodebin with raw output formats.
-
-
-Gapless playback
-----------------
-
-playbin2 has an "about-to-finish" signal. The application should configure a new
-uri (and optional suburi) in the callback. When the current media finishes, this
-new media will be played next.
-
-
-