summaryrefslogtreecommitdiff
path: root/docs/design/part-mediatype-video-raw.txt
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@collabora.co.uk>2011-12-20 10:08:46 +0100
committerWim Taymans <wim.taymans@collabora.co.uk>2011-12-20 10:08:46 +0100
commite1e9d68050fe249c824f3aeddbb25bf125906367 (patch)
treec7f0c2d3be63987753f4037eaec23754fb93d006 /docs/design/part-mediatype-video-raw.txt
parent6e1b51d02c3beae5b136e08b7a89eede8bf2000c (diff)
docs: small update to design docs
Diffstat (limited to 'docs/design/part-mediatype-video-raw.txt')
-rw-r--r--docs/design/part-mediatype-video-raw.txt1052
1 files changed, 1052 insertions, 0 deletions
diff --git a/docs/design/part-mediatype-video-raw.txt b/docs/design/part-mediatype-video-raw.txt
new file mode 100644
index 000000000..e46e567b2
--- /dev/null
+++ b/docs/design/part-mediatype-video-raw.txt
@@ -0,0 +1,1052 @@
+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
+