summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorwm4 <wm4@nowhere>2019-11-08 17:20:57 +0100
committerwm4 <wm4@nowhere>2019-11-08 21:22:49 +0100
commit1edb3d061bd88e86cba05e9383d6decb4a13950b (patch)
tree18b5438f040464f841c5e0b9ae0a877175759c75
parenta6c8b4efa59628a755755c510aa9ee6db2728fb9 (diff)
downloadmpv-1edb3d061bd88e86cba05e9383d6decb4a13950b.tar.bz2
mpv-1edb3d061bd88e86cba05e9383d6decb4a13950b.tar.xz
test: add dumping of img_format metadata
This is fragile enough that it warrants getting "monitored". This takes the commented test program code from img_format.c, makes it output to a text file, and then compares it to a "ref" file stored in git. Originally, I wanted to do the comparison etc. in a shell or Python script. But why not do it in C. So mpv calls /usr/bin/diff as a sub-process now. This test will start producing different output if FFmpeg adds new pixel formats or pixel format flags, or if mpv adds new IMGFMT (either aliases to FFmpeg formats or own formats). That is unavoidable, and requires manual inspection of the results, and then updating the ref file. The changes in the non-test code are to guarantee that the format ID conversion functions only translate between valid IDs.
-rw-r--r--test/img_format.c211
-rw-r--r--test/ref/img_formats.txt1802
-rw-r--r--test/tests.c42
-rw-r--r--test/tests.h22
-rw-r--r--video/fmt-conversion.c4
-rw-r--r--video/img_format.c95
-rw-r--r--wscript_build.py1
7 files changed, 2079 insertions, 98 deletions
diff --git a/test/img_format.c b/test/img_format.c
new file mode 100644
index 0000000000..ff3af4c005
--- /dev/null
+++ b/test/img_format.c
@@ -0,0 +1,211 @@
+#include <libavutil/frame.h>
+#include <libavutil/pixdesc.h>
+
+#include "tests.h"
+#include "video/fmt-conversion.h"
+#include "video/img_format.h"
+#include "video/mp_image.h"
+#include "video/sws_utils.h"
+
+static int imgfmts[IMGFMT_AVPIXFMT_END - IMGFMT_AVPIXFMT_START + 100];
+static int num_imgfmts;
+static enum AVPixelFormat pixfmt_unsup[100];
+static int num_pixfmt_unsup;
+static bool imgfmts_initialized;
+
+static int cmp_imgfmt_name(const void *a, const void *b)
+{
+ char *name_a = mp_imgfmt_to_name(*(int *)a);
+ char *name_b = mp_imgfmt_to_name(*(int *)b);
+
+ return strcmp(name_a, name_b);
+}
+
+static void find_all_imgfmts(void)
+{
+ if (imgfmts_initialized)
+ return;
+
+ const AVPixFmtDescriptor *avd = av_pix_fmt_desc_next(NULL);
+ for (; avd; avd = av_pix_fmt_desc_next(avd)) {
+ enum AVPixelFormat fmt = av_pix_fmt_desc_get_id(avd);
+ int mpfmt = pixfmt2imgfmt(fmt);
+ if (!mpfmt) {
+ assert(num_pixfmt_unsup < MP_ARRAY_SIZE(pixfmt_unsup));
+ pixfmt_unsup[num_pixfmt_unsup++] = fmt;
+ }
+ }
+
+ for (int fmt = IMGFMT_START; fmt <= IMGFMT_END; fmt++) {
+ struct mp_imgfmt_desc d = mp_imgfmt_get_desc(fmt);
+ enum AVPixelFormat pixfmt = imgfmt2pixfmt(fmt);
+ if (d.id || pixfmt != AV_PIX_FMT_NONE) {
+ assert(num_imgfmts < MP_ARRAY_SIZE(imgfmts)); // enlarge that array
+ imgfmts[num_imgfmts++] = fmt;
+ }
+ }
+
+ qsort(imgfmts, num_imgfmts, sizeof(imgfmts[0]), cmp_imgfmt_name);
+
+ imgfmts_initialized = true;
+}
+
+static const char *comp_type(enum mp_component_type type)
+{
+ switch (type) {
+ case MP_COMPONENT_TYPE_UINT: return "uint";
+ case MP_COMPONENT_TYPE_FLOAT: return "float";
+ default: return "unknown";
+ }
+}
+
+static void run(struct test_ctx *ctx)
+{
+ find_all_imgfmts();
+
+ FILE *f = test_open_out(ctx, "img_formats.txt");
+
+ for (int z = 0; z < num_imgfmts; z++) {
+ int mpfmt = imgfmts[z];
+ enum AVPixelFormat pixfmt = imgfmt2pixfmt(mpfmt);
+ const AVPixFmtDescriptor *avd = av_pix_fmt_desc_get(pixfmt);
+
+ fprintf(f, "%s: ", mp_imgfmt_to_name(mpfmt));
+ if (mpfmt >= IMGFMT_AVPIXFMT_START && mpfmt < IMGFMT_AVPIXFMT_END)
+ fprintf(f, "[GENERIC] ");
+
+ int fcsp = mp_imgfmt_get_forced_csp(mpfmt);
+ if (fcsp)
+ fprintf(f, "fcsp=%s ", m_opt_choice_str(mp_csp_names, fcsp));
+ fprintf(f, "ctype=%s\n", comp_type(mp_imgfmt_get_component_type(mpfmt)));
+
+ struct mp_imgfmt_desc d = mp_imgfmt_get_desc(mpfmt);
+ if (d.id) {
+ fprintf(f, " Legacy desc: ");
+ #define FLAG(t, c) if (d.flags & (t)) fprintf(f, "[%s]", c);
+ FLAG(MP_IMGFLAG_BYTE_ALIGNED, "ba")
+ FLAG(MP_IMGFLAG_ALPHA, "a")
+ FLAG(MP_IMGFLAG_YUV_P, "yuvp")
+ FLAG(MP_IMGFLAG_YUV_NV, "nv")
+ FLAG(MP_IMGFLAG_YUV, "yuv")
+ FLAG(MP_IMGFLAG_RGB, "rgb")
+ FLAG(MP_IMGFLAG_LE, "le")
+ FLAG(MP_IMGFLAG_BE, "be")
+ FLAG(MP_IMGFLAG_PAL, "pal")
+ FLAG(MP_IMGFLAG_HWACCEL, "hw")
+ fprintf(f, "\n");
+ fprintf(f, " planes=%d, chroma=%d:%d align=%d:%d bits=%d cbits=%d\n",
+ d.num_planes, d.chroma_xs, d.chroma_ys, d.align_x, d.align_y,
+ d.plane_bits, d.component_bits);
+ fprintf(f, " {");
+ for (int n = 0; n < MP_MAX_PLANES; n++) {
+ fprintf(f, "%d/%d/[%d:%d] ", d.bytes[n], d.bpp[n],
+ d.xs[n], d.ys[n]);
+ }
+ fprintf(f, "}\n");
+ } else {
+ fprintf(f, " [NODESC]\n");
+ }
+
+ if (!(d.flags & MP_IMGFLAG_HWACCEL) && pixfmt != AV_PIX_FMT_NONE) {
+ AVFrame *fr = av_frame_alloc();
+ fr->format = pixfmt;
+ fr->width = 128;
+ fr->height = 128;
+ int err = av_frame_get_buffer(fr, MP_IMAGE_BYTE_ALIGN);
+ assert(err >= 0);
+ struct mp_image *mpi = mp_image_alloc(mpfmt, fr->width, fr->height);
+ if (mpi) {
+ // A rather fuzzy test, which might fail even if there's no bug.
+ for (int n = 0; n < 4; n++) {
+ if (!!mpi->planes[n] != !!fr->data[n]) {
+ #ifdef AV_PIX_FMT_FLAG_PSEUDOPAL
+ if (n == 1 && (avd->flags & AV_PIX_FMT_FLAG_PSEUDOPAL))
+ continue;
+ #endif
+ fprintf(f, " Warning: p%d: %p %p\n", n,
+ mpi->planes[n], fr->data[n]);
+ }
+ if (mpi->stride[n] != fr->linesize[n]) {
+ fprintf(f, " Warning: p%d: %d %d\n", n,
+ mpi->stride[n], fr->linesize[n]);
+ }
+ }
+ } else {
+ fprintf(f, " [NOALLOC]\n");
+ }
+ talloc_free(mpi);
+ av_frame_free(&fr);
+ }
+
+ struct mp_regular_imgfmt reg;
+ if (mp_get_regular_imgfmt(&reg, mpfmt)) {
+ fprintf(f, " Regular: planes=%d compbytes=%d bitpad=%d "
+ "chroma=%dx%d ctype=%s\n",
+ reg.num_planes, reg.component_size, reg.component_pad,
+ reg.chroma_w, reg.chroma_h, comp_type(reg.component_type));
+ for (int n = 0; n < reg.num_planes; n++) {
+ struct mp_regular_imgfmt_plane *plane = &reg.planes[n];
+ fprintf(f, " %d: {", n);
+ for (int i = 0; i < plane->num_components; i++) {
+ if (i > 0)
+ fprintf(f, ", ");
+ fprintf(f, "%d", plane->components[i]);
+ }
+ fprintf(f, "}\n");
+ }
+ }
+
+ // This isn't ours, but changes likely affect us.
+ if (avd) {
+ fprintf(f, " AVD: name=%s chroma=%d:%d flags=0x%"PRIx64, avd->name,
+ avd->log2_chroma_w, avd->log2_chroma_h, avd->flags);
+ #define FLAGAV(t, c) if (avd->flags & (t)) \
+ {fprintf(f, "%s[%s]", pre, c); pre = ""; }
+ char *pre = " ";
+ FLAGAV(AV_PIX_FMT_FLAG_BE, "be")
+ FLAGAV(AV_PIX_FMT_FLAG_PAL, "pal")
+ FLAGAV(AV_PIX_FMT_FLAG_BITSTREAM, "bs")
+ FLAGAV(AV_PIX_FMT_FLAG_HWACCEL, "hw")
+ FLAGAV(AV_PIX_FMT_FLAG_PLANAR, "planar")
+ FLAGAV(AV_PIX_FMT_FLAG_RGB, "rgb")
+ FLAGAV(AV_PIX_FMT_FLAG_ALPHA, "alpha")
+ FLAGAV(AV_PIX_FMT_FLAG_BAYER, "bayer")
+ FLAGAV(AV_PIX_FMT_FLAG_FLOAT, "float")
+ fprintf(f, "\n");
+ for (int n = 0; n < avd->nb_components; n++) {
+ const AVComponentDescriptor *cd = &avd->comp[n];
+ fprintf(f, " %d: p=%-2d st=%-2d o=%-2d sh=%-2d d=%d\n",
+ n, cd->plane, cd->step, cd->offset, cd->shift, cd->depth);
+ }
+ for (int n = avd->nb_components; n < 4; n++) {
+ const AVComponentDescriptor *cd = &avd->comp[n];
+ assert(!cd->plane && !cd->step && !cd->offset && !cd->shift &&
+ !cd->depth);
+ }
+ }
+
+ const AVPixFmtDescriptor *avd2 = av_pix_fmt_desc_next(NULL);
+ for (; avd2; avd2 = av_pix_fmt_desc_next(avd2)) {
+ enum AVPixelFormat pixfmt2 = av_pix_fmt_desc_get_id(avd2);
+ int mpfmt2 = pixfmt2imgfmt(pixfmt2);
+ if (mpfmt2 == mpfmt && pixfmt2 != pixfmt)
+ fprintf(f, " Ambiguous alias: %s\n", avd2->name);
+ }
+ }
+
+ for (int z = 0; z < num_pixfmt_unsup; z++) {
+ const AVPixFmtDescriptor *avd = av_pix_fmt_desc_get(pixfmt_unsup[z]);
+ fprintf(f, "Unsupported: %s\n", avd->name);
+ }
+
+ fclose(f);
+
+ assert_text_files_equal(ctx, "img_formats.txt", "img_formats.txt",
+ "This can fail if FFmpeg adds new formats or flags.");
+}
+
+const struct unittest test_img_format = {
+ .name = "img_format",
+ .run = run,
+};
diff --git a/test/ref/img_formats.txt b/test/ref/img_formats.txt
new file mode 100644
index 0000000000..f73b83bdd5
--- /dev/null
+++ b/test/ref/img_formats.txt
@@ -0,0 +1,1802 @@
+0bgr: fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=24 cbits=8
+ {4/32/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {0, 3, 2, 1}
+ AVD: name=0bgr chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=4 o=3 sh=0 d=8
+ 1: p=0 st=4 o=2 sh=0 d=8
+ 2: p=0 st=4 o=1 sh=0 d=8
+0rgb: fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=24 cbits=8
+ {4/32/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {0, 1, 2, 3}
+ AVD: name=0rgb chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=4 o=1 sh=0 d=8
+ 1: p=0 st=4 o=2 sh=0 d=8
+ 2: p=0 st=4 o=3 sh=0 d=8
+abgr: fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=32 cbits=8
+ {4/32/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {4, 3, 2, 1}
+ AVD: name=abgr chroma=0:0 flags=0xa0 [rgb][alpha]
+ 0: p=0 st=4 o=3 sh=0 d=8
+ 1: p=0 st=4 o=2 sh=0 d=8
+ 2: p=0 st=4 o=1 sh=0 d=8
+ 3: p=0 st=4 o=0 sh=0 d=8
+argb: fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=32 cbits=8
+ {4/32/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {4, 1, 2, 3}
+ AVD: name=argb chroma=0:0 flags=0xa0 [rgb][alpha]
+ 0: p=0 st=4 o=1 sh=0 d=8
+ 1: p=0 st=4 o=2 sh=0 d=8
+ 2: p=0 st=4 o=3 sh=0 d=8
+ 3: p=0 st=4 o=0 sh=0 d=8
+ayuv64: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuv][le]
+ planes=1, chroma=0:0 align=1:1 bits=64 cbits=16
+ {8/64/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=2 bitpad=0 chroma=1x1 ctype=uint
+ 0: {4, 1, 2, 3}
+ AVD: name=ayuv64le chroma=0:0 flags=0x80 [alpha]
+ 0: p=0 st=8 o=2 sh=0 d=16
+ 1: p=0 st=8 o=4 sh=0 d=16
+ 2: p=0 st=8 o=6 sh=0 d=16
+ 3: p=0 st=8 o=0 sh=0 d=16
+ayuv64be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuv][be]
+ planes=1, chroma=0:0 align=1:1 bits=64 cbits=16
+ {8/64/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=ayuv64be chroma=0:0 flags=0x81 [be][alpha]
+ 0: p=0 st=8 o=2 sh=0 d=16
+ 1: p=0 st=8 o=4 sh=0 d=16
+ 2: p=0 st=8 o=6 sh=0 d=16
+ 3: p=0 st=8 o=0 sh=0 d=16
+bayer_bggr16: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=0
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_bggr16le chroma=0:0 flags=0x120 [rgb][bayer]
+ 0: p=0 st=2 o=0 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=0 d=8
+ 2: p=0 st=2 o=0 sh=0 d=4
+bayer_bggr16be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=0
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_bggr16be chroma=0:0 flags=0x121 [be][rgb][bayer]
+ 0: p=0 st=2 o=0 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=0 d=8
+ 2: p=0 st=2 o=0 sh=0 d=4
+bayer_bggr8: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=8 cbits=0
+ {1/8/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_bggr8 chroma=0:0 flags=0x120 [rgb][bayer]
+ 0: p=0 st=1 o=0 sh=0 d=2
+ 1: p=0 st=1 o=0 sh=0 d=4
+ 2: p=0 st=1 o=0 sh=0 d=2
+bayer_gbrg16: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=0
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_gbrg16le chroma=0:0 flags=0x120 [rgb][bayer]
+ 0: p=0 st=2 o=0 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=0 d=8
+ 2: p=0 st=2 o=0 sh=0 d=4
+bayer_gbrg16be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=0
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_gbrg16be chroma=0:0 flags=0x121 [be][rgb][bayer]
+ 0: p=0 st=2 o=0 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=0 d=8
+ 2: p=0 st=2 o=0 sh=0 d=4
+bayer_gbrg8: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=8 cbits=0
+ {1/8/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_gbrg8 chroma=0:0 flags=0x120 [rgb][bayer]
+ 0: p=0 st=1 o=0 sh=0 d=2
+ 1: p=0 st=1 o=0 sh=0 d=4
+ 2: p=0 st=1 o=0 sh=0 d=2
+bayer_grbg16: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=0
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_grbg16le chroma=0:0 flags=0x120 [rgb][bayer]
+ 0: p=0 st=2 o=0 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=0 d=8
+ 2: p=0 st=2 o=0 sh=0 d=4
+bayer_grbg16be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=0
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_grbg16be chroma=0:0 flags=0x121 [be][rgb][bayer]
+ 0: p=0 st=2 o=0 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=0 d=8
+ 2: p=0 st=2 o=0 sh=0 d=4
+bayer_grbg8: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=8 cbits=0
+ {1/8/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_grbg8 chroma=0:0 flags=0x120 [rgb][bayer]
+ 0: p=0 st=1 o=0 sh=0 d=2
+ 1: p=0 st=1 o=0 sh=0 d=4
+ 2: p=0 st=1 o=0 sh=0 d=2
+bayer_rggb16: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=0
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_rggb16le chroma=0:0 flags=0x120 [rgb][bayer]
+ 0: p=0 st=2 o=0 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=0 d=8
+ 2: p=0 st=2 o=0 sh=0 d=4
+bayer_rggb16be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=0
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_rggb16be chroma=0:0 flags=0x121 [be][rgb][bayer]
+ 0: p=0 st=2 o=0 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=0 d=8
+ 2: p=0 st=2 o=0 sh=0 d=4
+bayer_rggb8: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=8 cbits=0
+ {1/8/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bayer_rggb8 chroma=0:0 flags=0x120 [rgb][bayer]
+ 0: p=0 st=1 o=0 sh=0 d=2
+ 1: p=0 st=1 o=0 sh=0 d=4
+ 2: p=0 st=1 o=0 sh=0 d=2
+bgr0: fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=24 cbits=8
+ {4/32/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {3, 2, 1, 0}
+ AVD: name=bgr0 chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=4 o=2 sh=0 d=8
+ 1: p=0 st=4 o=1 sh=0 d=8
+ 2: p=0 st=4 o=0 sh=0 d=8
+bgr24: fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=24 cbits=8
+ {3/24/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {3, 2, 1}
+ AVD: name=bgr24 chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=3 o=2 sh=0 d=8
+ 1: p=0 st=3 o=1 sh=0 d=8
+ 2: p=0 st=3 o=0 sh=0 d=8
+bgr4: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [rgb][le][be]
+ planes=1, chroma=0:0 align=2:1 bits=4 cbits=0
+ {0/4/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bgr4 chroma=0:0 flags=0x24 [bs][rgb]
+ 0: p=0 st=4 o=3 sh=0 d=1
+ 1: p=0 st=4 o=1 sh=0 d=2
+ 2: p=0 st=4 o=0 sh=0 d=1
+bgr444: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le]
+ planes=1, chroma=0:0 align=1:1 bits=12 cbits=4
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bgr444le chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=2 o=0 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=4 d=4
+ 2: p=0 st=2 o=1 sh=0 d=4
+bgr444be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][be]
+ planes=1, chroma=0:0 align=1:1 bits=12 cbits=4
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bgr444be chroma=0:0 flags=0x21 [be][rgb]
+ 0: p=0 st=2 o=0 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=4 d=4
+ 2: p=0 st=2 o=-1 sh=0 d=4
+bgr48: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le]
+ planes=1, chroma=0:0 align=1:1 bits=48 cbits=16
+ {6/48/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=2 bitpad=0 chroma=1x1 ctype=uint
+ 0: {3, 2, 1}
+ AVD: name=bgr48le chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=6 o=4 sh=0 d=16
+ 1: p=0 st=6 o=2 sh=0 d=16
+ 2: p=0 st=6 o=0 sh=0 d=16
+bgr48be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][be]
+ planes=1, chroma=0:0 align=1:1 bits=48 cbits=16
+ {6/48/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bgr48be chroma=0:0 flags=0x21 [be][rgb]
+ 0: p=0 st=6 o=4 sh=0 d=16
+ 1: p=0 st=6 o=2 sh=0 d=16
+ 2: p=0 st=6 o=0 sh=0 d=16
+bgr4_byte: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=4 cbits=0
+ {1/8/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bgr4_byte chroma=0:0 flags=0x60 [rgb]
+ 0: p=0 st=1 o=0 sh=0 d=1
+ 1: p=0 st=1 o=0 sh=1 d=2
+ 2: p=0 st=1 o=0 sh=3 d=1
+bgr555: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le]
+ planes=1, chroma=0:0 align=1:1 bits=15 cbits=5
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bgr555le chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=2 o=0 sh=0 d=5
+ 1: p=0 st=2 o=0 sh=5 d=5
+ 2: p=0 st=2 o=1 sh=2 d=5
+bgr555be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][be]
+ planes=1, chroma=0:0 align=1:1 bits=15 cbits=5
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bgr555be chroma=0:0 flags=0x21 [be][rgb]
+ 0: p=0 st=2 o=0 sh=0 d=5
+ 1: p=0 st=2 o=0 sh=5 d=5
+ 2: p=0 st=2 o=-1 sh=2 d=5
+bgr565: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=0
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bgr565le chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=2 o=0 sh=0 d=5
+ 1: p=0 st=2 o=0 sh=5 d=6
+ 2: p=0 st=2 o=1 sh=3 d=5
+bgr565be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][be]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=0
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bgr565be chroma=0:0 flags=0x21 [be][rgb]
+ 0: p=0 st=2 o=0 sh=0 d=5
+ 1: p=0 st=2 o=0 sh=5 d=6
+ 2: p=0 st=2 o=-1 sh=3 d=5
+bgr8: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=8 cbits=0
+ {1/8/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bgr8 chroma=0:0 flags=0x60 [rgb]
+ 0: p=0 st=1 o=0 sh=0 d=3
+ 1: p=0 st=1 o=0 sh=3 d=3
+ 2: p=0 st=1 o=0 sh=6 d=2
+bgra: fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=32 cbits=8
+ {4/32/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {3, 2, 1, 4}
+ AVD: name=bgra chroma=0:0 flags=0xa0 [rgb][alpha]
+ 0: p=0 st=4 o=2 sh=0 d=8
+ 1: p=0 st=4 o=1 sh=0 d=8
+ 2: p=0 st=4 o=0 sh=0 d=8
+ 3: p=0 st=4 o=3 sh=0 d=8
+bgra64: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][le]
+ planes=1, chroma=0:0 align=1:1 bits=64 cbits=16
+ {8/64/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=2 bitpad=0 chroma=1x1 ctype=uint
+ 0: {3, 2, 1, 4}
+ AVD: name=bgra64le chroma=0:0 flags=0xa0 [rgb][alpha]
+ 0: p=0 st=8 o=4 sh=0 d=16
+ 1: p=0 st=8 o=2 sh=0 d=16
+ 2: p=0 st=8 o=0 sh=0 d=16
+ 3: p=0 st=8 o=6 sh=0 d=16
+bgra64be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][be]
+ planes=1, chroma=0:0 align=1:1 bits=64 cbits=16
+ {8/64/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=bgra64be chroma=0:0 flags=0xa1 [be][rgb][alpha]
+ 0: p=0 st=8 o=4 sh=0 d=16
+ 1: p=0 st=8 o=2 sh=0 d=16
+ 2: p=0 st=8 o=0 sh=0 d=16
+ 3: p=0 st=8 o=6 sh=0 d=16
+cuda: [GENERIC] ctype=unknown
+ Legacy desc: [le][be][hw]
+ planes=0, chroma=0:0 align=1:1 bits=0 cbits=0
+ {0/0/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=cuda chroma=0:0 flags=0x8 [hw]
+d3d11: [GENERIC] ctype=unknown
+ Legacy desc: [le][be][hw]
+ planes=0, chroma=0:0 align=1:1 bits=0 cbits=0
+ {0/0/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=d3d11 chroma=0:0 flags=0x8 [hw]
+d3d11va_vld: [GENERIC] ctype=unknown
+ Legacy desc: [le][be][hw]
+ planes=0, chroma=1:1 align=2:2 bits=0 cbits=0
+ {0/0/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=d3d11va_vld chroma=1:1 flags=0x8 [hw]
+drm_prime: ctype=unknown
+ Legacy desc: [le][be][hw]
+ planes=0, chroma=0:0 align=1:1 bits=0 cbits=0
+ {0/0/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=drm_prime chroma=0:0 flags=0x8 [hw]
+dxva2_vld: ctype=unknown
+ Legacy desc: [le][be][hw]
+ planes=0, chroma=1:1 align=2:2 bits=0 cbits=0
+ {0/0/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=dxva2_vld chroma=1:1 flags=0x8 [hw]
+gbrap: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][le][be]
+ planes=4, chroma=0:0 align=1:1 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[0:0] 1/8/[0:0] 1/8/[0:0] }
+ Regular: planes=4 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ 3: {4}
+ AVD: name=gbrap chroma=0:0 flags=0xb0 [planar][rgb][alpha]
+ 0: p=2 st=1 o=0 sh=0 d=8
+ 1: p=0 st=1 o=0 sh=0 d=8
+ 2: p=1 st=1 o=0 sh=0 d=8
+ 3: p=3 st=1 o=0 sh=0 d=8
+gbrap10: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][le]
+ planes=4, chroma=0:0 align=1:1 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 2/16/[0:0] }
+ Regular: planes=4 compbytes=2 bitpad=-6 chroma=1x1 ctype=uint
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ 3: {4}
+ AVD: name=gbrap10le chroma=0:0 flags=0xb0 [planar][rgb][alpha]
+ 0: p=2 st=2 o=0 sh=0 d=10
+ 1: p=0 st=2 o=0 sh=0 d=10
+ 2: p=1 st=2 o=0 sh=0 d=10
+ 3: p=3 st=2 o=0 sh=0 d=10
+gbrap10be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][be]
+ planes=4, chroma=0:0 align=1:1 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 2/16/[0:0] }
+ AVD: name=gbrap10be chroma=0:0 flags=0xb1 [be][planar][rgb][alpha]
+ 0: p=2 st=2 o=0 sh=0 d=10
+ 1: p=0 st=2 o=0 sh=0 d=10
+ 2: p=1 st=2 o=0 sh=0 d=10
+ 3: p=3 st=2 o=0 sh=0 d=10
+gbrap12: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][le]
+ planes=4, chroma=0:0 align=1:1 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 2/16/[0:0] }
+ Regular: planes=4 compbytes=2 bitpad=-4 chroma=1x1 ctype=uint
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ 3: {4}
+ AVD: name=gbrap12le chroma=0:0 flags=0xb0 [planar][rgb][alpha]
+ 0: p=2 st=2 o=0 sh=0 d=12
+ 1: p=0 st=2 o=0 sh=0 d=12
+ 2: p=1 st=2 o=0 sh=0 d=12
+ 3: p=3 st=2 o=0 sh=0 d=12
+gbrap12be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][be]
+ planes=4, chroma=0:0 align=1:1 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 2/16/[0:0] }
+ AVD: name=gbrap12be chroma=0:0 flags=0xb1 [be][planar][rgb][alpha]
+ 0: p=2 st=2 o=0 sh=0 d=12
+ 1: p=0 st=2 o=0 sh=0 d=12
+ 2: p=1 st=2 o=0 sh=0 d=12
+ 3: p=3 st=2 o=0 sh=0 d=12
+gbrap16: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][le]
+ planes=4, chroma=0:0 align=1:1 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 2/16/[0:0] }
+ Regular: planes=4 compbytes=2 bitpad=0 chroma=1x1 ctype=uint
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ 3: {4}
+ AVD: name=gbrap16le chroma=0:0 flags=0xb0 [planar][rgb][alpha]
+ 0: p=2 st=2 o=0 sh=0 d=16
+ 1: p=0 st=2 o=0 sh=0 d=16
+ 2: p=1 st=2 o=0 sh=0 d=16
+ 3: p=3 st=2 o=0 sh=0 d=16
+gbrap16be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][be]
+ planes=4, chroma=0:0 align=1:1 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 2/16/[0:0] }
+ AVD: name=gbrap16be chroma=0:0 flags=0xb1 [be][planar][rgb][alpha]
+ 0: p=2 st=2 o=0 sh=0 d=16
+ 1: p=0 st=2 o=0 sh=0 d=16
+ 2: p=1 st=2 o=0 sh=0 d=16
+ 3: p=3 st=2 o=0 sh=0 d=16
+gbrapf32: [GENERIC] fcsp=rgb ctype=float
+ Legacy desc: [ba][a][rgb][le]
+ planes=4, chroma=0:0 align=1:1 bits=32 cbits=32
+ {4/32/[0:0] 4/32/[0:0] 4/32/[0:0] 4/32/[0:0] }
+ Regular: planes=4 compbytes=4 bitpad=0 chroma=1x1 ctype=float
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ 3: {4}
+ AVD: name=gbrapf32le chroma=0:0 flags=0x2b0 [planar][rgb][alpha][float]
+ 0: p=2 st=4 o=0 sh=0 d=32
+ 1: p=0 st=4 o=0 sh=0 d=32
+ 2: p=1 st=4 o=0 sh=0 d=32
+ 3: p=3 st=4 o=0 sh=0 d=32
+gbrapf32be: [GENERIC] fcsp=rgb ctype=float
+ Legacy desc: [ba][a][rgb][be]
+ planes=4, chroma=0:0 align=1:1 bits=32 cbits=32
+ {4/32/[0:0] 4/32/[0:0] 4/32/[0:0] 4/32/[0:0] }
+ AVD: name=gbrapf32be chroma=0:0 flags=0x2b1 [be][planar][rgb][alpha][float]
+ 0: p=2 st=4 o=0 sh=0 d=32
+ 1: p=0 st=4 o=0 sh=0 d=32
+ 2: p=1 st=4 o=0 sh=0 d=32
+ 3: p=3 st=4 o=0 sh=0 d=32
+gbrp: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le][be]
+ planes=3, chroma=0:0 align=1:1 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[0:0] 1/8/[0:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ AVD: name=gbrp chroma=0:0 flags=0x30 [planar][rgb]
+ 0: p=2 st=1 o=0 sh=0 d=8
+ 1: p=0 st=1 o=0 sh=0 d=8
+ 2: p=1 st=1 o=0 sh=0 d=8
+gbrp10: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le]
+ planes=3, chroma=0:0 align=1:1 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-6 chroma=1x1 ctype=uint
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ AVD: name=gbrp10le chroma=0:0 flags=0x30 [planar][rgb]
+ 0: p=2 st=2 o=0 sh=0 d=10
+ 1: p=0 st=2 o=0 sh=0 d=10
+ 2: p=1 st=2 o=0 sh=0 d=10
+gbrp10be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][be]
+ planes=3, chroma=0:0 align=1:1 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 0/0/[0:0] }
+ AVD: name=gbrp10be chroma=0:0 flags=0x31 [be][planar][rgb]
+ 0: p=2 st=2 o=0 sh=0 d=10
+ 1: p=0 st=2 o=0 sh=0 d=10
+ 2: p=1 st=2 o=0 sh=0 d=10
+gbrp12: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le]
+ planes=3, chroma=0:0 align=1:1 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-4 chroma=1x1 ctype=uint
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ AVD: name=gbrp12le chroma=0:0 flags=0x30 [planar][rgb]
+ 0: p=2 st=2 o=0 sh=0 d=12
+ 1: p=0 st=2 o=0 sh=0 d=12
+ 2: p=1 st=2 o=0 sh=0 d=12
+gbrp12be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][be]
+ planes=3, chroma=0:0 align=1:1 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 0/0/[0:0] }
+ AVD: name=gbrp12be chroma=0:0 flags=0x31 [be][planar][rgb]
+ 0: p=2 st=2 o=0 sh=0 d=12
+ 1: p=0 st=2 o=0 sh=0 d=12
+ 2: p=1 st=2 o=0 sh=0 d=12
+gbrp14: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le]
+ planes=3, chroma=0:0 align=1:1 bits=14 cbits=14
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-2 chroma=1x1 ctype=uint
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ AVD: name=gbrp14le chroma=0:0 flags=0x30 [planar][rgb]
+ 0: p=2 st=2 o=0 sh=0 d=14
+ 1: p=0 st=2 o=0 sh=0 d=14
+ 2: p=1 st=2 o=0 sh=0 d=14
+gbrp14be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][be]
+ planes=3, chroma=0:0 align=1:1 bits=14 cbits=14
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 0/0/[0:0] }
+ AVD: name=gbrp14be chroma=0:0 flags=0x31 [be][planar][rgb]
+ 0: p=2 st=2 o=0 sh=0 d=14
+ 1: p=0 st=2 o=0 sh=0 d=14
+ 2: p=1 st=2 o=0 sh=0 d=14
+gbrp16: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le]
+ planes=3, chroma=0:0 align=1:1 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=0 chroma=1x1 ctype=uint
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ AVD: name=gbrp16le chroma=0:0 flags=0x30 [planar][rgb]
+ 0: p=2 st=2 o=0 sh=0 d=16
+ 1: p=0 st=2 o=0 sh=0 d=16
+ 2: p=1 st=2 o=0 sh=0 d=16
+gbrp16be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][be]
+ planes=3, chroma=0:0 align=1:1 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 0/0/[0:0] }
+ AVD: name=gbrp16be chroma=0:0 flags=0x31 [be][planar][rgb]
+ 0: p=2 st=2 o=0 sh=0 d=16
+ 1: p=0 st=2 o=0 sh=0 d=16
+ 2: p=1 st=2 o=0 sh=0 d=16
+gbrp9: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le]
+ planes=3, chroma=0:0 align=1:1 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-7 chroma=1x1 ctype=uint
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ AVD: name=gbrp9le chroma=0:0 flags=0x30 [planar][rgb]
+ 0: p=2 st=2 o=0 sh=0 d=9
+ 1: p=0 st=2 o=0 sh=0 d=9
+ 2: p=1 st=2 o=0 sh=0 d=9
+gbrp9be: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][be]
+ planes=3, chroma=0:0 align=1:1 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 0/0/[0:0] }
+ AVD: name=gbrp9be chroma=0:0 flags=0x31 [be][planar][rgb]
+ 0: p=2 st=2 o=0 sh=0 d=9
+ 1: p=0 st=2 o=0 sh=0 d=9
+ 2: p=1 st=2 o=0 sh=0 d=9
+gbrpf32: [GENERIC] fcsp=rgb ctype=float
+ Legacy desc: [ba][rgb][le]
+ planes=3, chroma=0:0 align=1:1 bits=32 cbits=32
+ {4/32/[0:0] 4/32/[0:0] 4/32/[0:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=4 bitpad=0 chroma=1x1 ctype=float
+ 0: {2}
+ 1: {3}
+ 2: {1}
+ AVD: name=gbrpf32le chroma=0:0 flags=0x230 [planar][rgb][float]
+ 0: p=2 st=4 o=0 sh=0 d=32
+ 1: p=0 st=4 o=0 sh=0 d=32
+ 2: p=1 st=4 o=0 sh=0 d=32
+gbrpf32be: [GENERIC] fcsp=rgb ctype=float
+ Legacy desc: [ba][rgb][be]
+ planes=3, chroma=0:0 align=1:1 bits=32 cbits=32
+ {4/32/[0:0] 4/32/[0:0] 4/32/[0:0] 0/0/[0:0] }
+ AVD: name=gbrpf32be chroma=0:0 flags=0x231 [be][planar][rgb][float]
+ 0: p=2 st=4 o=0 sh=0 d=32
+ 1: p=0 st=4 o=0 sh=0 d=32
+ 2: p=1 st=4 o=0 sh=0 d=32
+gray: ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=8 cbits=8
+ {1/8/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {1}
+ AVD: name=gray chroma=0:0 flags=0x40
+ 0: p=0 st=1 o=0 sh=0 d=8
+gray10: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=1, chroma=0:0 align=1:1 bits=10 cbits=10
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=2 bitpad=-6 chroma=1x1 ctype=uint
+ 0: {1}
+ AVD: name=gray10le chroma=0:0 flags=0x0
+ 0: p=0 st=2 o=0 sh=0 d=10
+gray10be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=1, chroma=0:0 align=1:1 bits=10 cbits=10
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=gray10be chroma=0:0 flags=0x1 [be]
+ 0: p=0 st=2 o=0 sh=0 d=10
+gray12: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=1, chroma=0:0 align=1:1 bits=12 cbits=12
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=2 bitpad=-4 chroma=1x1 ctype=uint
+ 0: {1}
+ AVD: name=gray12le chroma=0:0 flags=0x0
+ 0: p=0 st=2 o=0 sh=0 d=12
+gray12be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=1, chroma=0:0 align=1:1 bits=12 cbits=12
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=gray12be chroma=0:0 flags=0x1 [be]
+ 0: p=0 st=2 o=0 sh=0 d=12
+gray14: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=1, chroma=0:0 align=1:1 bits=14 cbits=14
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=2 bitpad=-2 chroma=1x1 ctype=uint
+ 0: {1}
+ AVD: name=gray14le chroma=0:0 flags=0x0
+ 0: p=0 st=2 o=0 sh=0 d=14
+gray14be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=1, chroma=0:0 align=1:1 bits=14 cbits=14
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=gray14be chroma=0:0 flags=0x1 [be]
+ 0: p=0 st=2 o=0 sh=0 d=14
+gray16: ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=16
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=2 bitpad=0 chroma=1x1 ctype=uint
+ 0: {1}
+ AVD: name=gray16le chroma=0:0 flags=0x0
+ 0: p=0 st=2 o=0 sh=0 d=16
+gray16be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=16
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=gray16be chroma=0:0 flags=0x1 [be]
+ 0: p=0 st=2 o=0 sh=0 d=16
+gray9: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=1, chroma=0:0 align=1:1 bits=9 cbits=9
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=2 bitpad=-7 chroma=1x1 ctype=uint
+ 0: {1}
+ AVD: name=gray9le chroma=0:0 flags=0x0
+ 0: p=0 st=2 o=0 sh=0 d=9
+gray9be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=1, chroma=0:0 align=1:1 bits=9 cbits=9
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=gray9be chroma=0:0 flags=0x1 [be]
+ 0: p=0 st=2 o=0 sh=0 d=9
+grayf32: [GENERIC] ctype=float
+ Legacy desc: [ba][yuv][le]
+ planes=1, chroma=0:0 align=1:1 bits=32 cbits=32
+ {4/32/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=1 compbytes=4 bitpad=0 chroma=1x1 ctype=float
+ 0: {1}