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}
+ AVD: name=grayf32le chroma=0:0 flags=0x200 [float]
+ 0: p=0 st=4 o=0 sh=0 d=32
+grayf32be: [GENERIC] ctype=float
+ Legacy desc: [ba][yuv][be]
+ 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] }
+ AVD: name=grayf32be chroma=0:0 flags=0x201 [be][float]
+ 0: p=0 st=4 o=0 sh=0 d=32
+mediacodec: [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=mediacodec chroma=0:0 flags=0x8 [hw]
+mmal: 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=mmal chroma=0:0 flags=0x8 [hw]
+monob: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [rgb][le][be]
+ planes=1, chroma=0:0 align=8:1 bits=1 cbits=1
+ {0/1/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=monob chroma=0:0 flags=0x4 [bs]
+ 0: p=0 st=1 o=0 sh=7 d=1
+monow: [GENERIC] ctype=uint
+ Legacy desc: [yuv][le][be]
+ planes=1, chroma=0:0 align=8:1 bits=1 cbits=1
+ {0/1/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=monow chroma=0:0 flags=0x4 [bs]
+ 0: p=0 st=1 o=0 sh=0 d=1
+nv12: ctype=uint
+ Legacy desc: [ba][nv][yuv][le][be]
+ planes=2, chroma=1:1 align=2:2 bits=8 cbits=8
+ {1/8/[0:0] 2/16/[1:1] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=2 compbytes=1 bitpad=0 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2, 3}
+ AVD: name=nv12 chroma=1:1 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=2 o=0 sh=0 d=8
+ 2: p=1 st=2 o=1 sh=0 d=8
+nv16: [GENERIC] ctype=uint
+ Legacy desc: [ba][nv][yuv][le][be]
+ planes=2, chroma=1:0 align=2:1 bits=8 cbits=8
+ {1/8/[0:0] 2/16/[1:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=2 compbytes=1 bitpad=0 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2, 3}
+ AVD: name=nv16 chroma=1:0 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=2 o=0 sh=0 d=8
+ 2: p=1 st=2 o=1 sh=0 d=8
+nv20: [GENERIC] ctype=uint
+ Legacy desc: [ba][nv][yuv][le]
+ planes=2, chroma=1:0 align=2:1 bits=10 cbits=10
+ {2/16/[0:0] 4/32/[1:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=2 compbytes=2 bitpad=-6 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2, 3}
+ AVD: name=nv20le chroma=1:0 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=4 o=0 sh=0 d=10
+ 2: p=1 st=4 o=2 sh=0 d=10
+nv20be: [GENERIC] ctype=uint
+ Legacy desc: [ba][nv][yuv][be]
+ planes=2, chroma=1:0 align=2:1 bits=10 cbits=10
+ {2/16/[0:0] 4/32/[1:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=nv20be chroma=1:0 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=4 o=0 sh=0 d=10
+ 2: p=1 st=4 o=2 sh=0 d=10
+nv21: [GENERIC] ctype=uint
+ Legacy desc: [ba][nv][yuv][le][be]
+ planes=2, chroma=1:1 align=2:2 bits=8 cbits=8
+ {1/8/[0:0] 2/16/[1:1] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=2 compbytes=1 bitpad=0 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {3, 2}
+ AVD: name=nv21 chroma=1:1 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=2 o=1 sh=0 d=8
+ 2: p=1 st=2 o=0 sh=0 d=8
+nv24: ctype=uint
+ Legacy desc: [ba][nv][yuv][le][be]
+ planes=2, chroma=0:0 align=1:1 bits=8 cbits=8
+ {1/8/[0:0] 2/16/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=2 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {1}
+ 1: {2, 3}
+ AVD: name=nv24 chroma=0:0 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=2 o=0 sh=0 d=8
+ 2: p=1 st=2 o=1 sh=0 d=8
+nv42: [GENERIC] ctype=uint
+ Legacy desc: [ba][nv][yuv][le][be]
+ planes=2, chroma=0:0 align=1:1 bits=8 cbits=8
+ {1/8/[0:0] 2/16/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=2 compbytes=1 bitpad=0 chroma=1x1 ctype=uint
+ 0: {1}
+ 1: {3, 2}
+ AVD: name=nv42 chroma=0:0 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=2 o=1 sh=0 d=8
+ 2: p=1 st=2 o=0 sh=0 d=8
+opencl: [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=opencl chroma=0:0 flags=0x8 [hw]
+p010: ctype=uint
+ Legacy desc: [ba][nv][yuv][le]
+ planes=2, chroma=1:1 align=2:2 bits=10 cbits=16
+ {2/16/[0:0] 4/32/[1:1] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=2 compbytes=2 bitpad=6 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2, 3}
+ AVD: name=p010le chroma=1:1 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=6 d=10
+ 1: p=1 st=4 o=0 sh=6 d=10
+ 2: p=1 st=4 o=2 sh=6 d=10
+p010be: [GENERIC] ctype=uint
+ Legacy desc: [ba][nv][yuv][be]
+ planes=2, chroma=1:1 align=2:2 bits=10 cbits=16
+ {2/16/[0:0] 4/32/[1:1] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=p010be chroma=1:1 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=6 d=10
+ 1: p=1 st=4 o=0 sh=6 d=10
+ 2: p=1 st=4 o=2 sh=6 d=10
+p016: [GENERIC] ctype=uint
+ Legacy desc: [ba][nv][yuv][le]
+ planes=2, chroma=1:1 align=2:2 bits=16 cbits=16
+ {2/16/[0:0] 4/32/[1:1] 0/0/[0:0] 0/0/[0:0] }
+ Regular: planes=2 compbytes=2 bitpad=0 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2, 3}
+ AVD: name=p016le chroma=1:1 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=4 o=0 sh=0 d=16
+ 2: p=1 st=4 o=2 sh=0 d=16
+p016be: [GENERIC] ctype=uint
+ Legacy desc: [ba][nv][yuv][be]
+ planes=2, chroma=1:1 align=2:2 bits=16 cbits=16
+ {2/16/[0:0] 4/32/[1:1] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=p016be chroma=1:1 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=4 o=0 sh=0 d=16
+ 2: p=1 st=4 o=2 sh=0 d=16
+pal8: [GENERIC] fcsp=rgb ctype=uint
+ Legacy desc: [ba][a][rgb][le][be][pal]
+ 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] }
+ AVD: name=pal8 chroma=0:0 flags=0x82 [pal][alpha]
+ 0: p=0 st=1 o=0 sh=0 d=8
+qsv: [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=qsv chroma=0:0 flags=0x8 [hw]
+rgb0: 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: {1, 2, 3, 0}
+ AVD: name=rgb0 chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=4 o=0 sh=0 d=8
+ 1: p=0 st=4 o=1 sh=0 d=8
+ 2: p=0 st=4 o=2 sh=0 d=8
+rgb24: 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: {1, 2, 3}
+ AVD: name=rgb24 chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=3 o=0 sh=0 d=8
+ 1: p=0 st=3 o=1 sh=0 d=8
+ 2: p=0 st=3 o=2 sh=0 d=8
+rgb30: fcsp=rgb ctype=uint
+ Legacy desc: [ba][rgb][le]
+ planes=1, chroma=0:0 align=1:1 bits=30 cbits=10
+ {4/32/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+rgb4: [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=rgb4 chroma=0:0 flags=0x24 [bs][rgb]
+ 0: p=0 st=4 o=0 sh=0 d=1
+ 1: p=0 st=4 o=1 sh=0 d=2
+ 2: p=0 st=4 o=3 sh=0 d=1
+rgb444: [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=rgb444le chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=2 o=1 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=4 d=4
+ 2: p=0 st=2 o=0 sh=0 d=4
+rgb444be: [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=rgb444be chroma=0:0 flags=0x21 [be][rgb]
+ 0: p=0 st=2 o=-1 sh=0 d=4
+ 1: p=0 st=2 o=0 sh=4 d=4
+ 2: p=0 st=2 o=0 sh=0 d=4
+rgb48: [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: {1, 2, 3}
+ AVD: name=rgb48le chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=6 o=0 sh=0 d=16
+ 1: p=0 st=6 o=2 sh=0 d=16
+ 2: p=0 st=6 o=4 sh=0 d=16
+rgb48be: [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=rgb48be chroma=0:0 flags=0x21 [be][rgb]
+ 0: p=0 st=6 o=0 sh=0 d=16
+ 1: p=0 st=6 o=2 sh=0 d=16
+ 2: p=0 st=6 o=4 sh=0 d=16
+rgb4_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=rgb4_byte chroma=0:0 flags=0x60 [rgb]
+ 0: p=0 st=1 o=0 sh=3 d=1
+ 1: p=0 st=1 o=0 sh=1 d=2
+ 2: p=0 st=1 o=0 sh=0 d=1
+rgb555: [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=rgb555le chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=2 o=1 sh=2 d=5
+ 1: p=0 st=2 o=0 sh=5 d=5
+ 2: p=0 st=2 o=0 sh=0 d=5
+rgb555be: [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=rgb555be chroma=0:0 flags=0x21 [be][rgb]
+ 0: p=0 st=2 o=-1 sh=2 d=5
+ 1: p=0 st=2 o=0 sh=5 d=5
+ 2: p=0 st=2 o=0 sh=0 d=5
+rgb565: 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=rgb565le chroma=0:0 flags=0x20 [rgb]
+ 0: p=0 st=2 o=1 sh=3 d=5
+ 1: p=0 st=2 o=0 sh=5 d=6
+ 2: p=0 st=2 o=0 sh=0 d=5
+rgb565be: [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=rgb565be chroma=0:0 flags=0x21 [be][rgb]
+ 0: p=0 st=2 o=-1 sh=3 d=5
+ 1: p=0 st=2 o=0 sh=5 d=6
+ 2: p=0 st=2 o=0 sh=0 d=5
+rgb8: [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=rgb8 chroma=0:0 flags=0x60 [rgb]
+ 0: p=0 st=1 o=0 sh=6 d=2
+ 1: p=0 st=1 o=0 sh=3 d=3
+ 2: p=0 st=1 o=0 sh=0 d=3
+rgba: 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: {1, 2, 3, 4}
+ AVD: name=rgba chroma=0:0 flags=0xa0 [rgb][alpha]
+ 0: p=0 st=4 o=0 sh=0 d=8
+ 1: p=0 st=4 o=1 sh=0 d=8
+ 2: p=0 st=4 o=2 sh=0 d=8
+ 3: p=0 st=4 o=3 sh=0 d=8
+rgba64: 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: {1, 2, 3, 4}
+ AVD: name=rgba64le chroma=0:0 flags=0xa0 [rgb][alpha]
+ 0: p=0 st=8 o=0 sh=0 d=16
+ 1: p=0 st=8 o=2 sh=0 d=16
+ 2: p=0 st=8 o=4 sh=0 d=16
+ 3: p=0 st=8 o=6 sh=0 d=16
+rgba64be: [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=rgba64be chroma=0:0 flags=0xa1 [be][rgb][alpha]
+ 0: p=0 st=8 o=0 sh=0 d=16
+ 1: p=0 st=8 o=2 sh=0 d=16
+ 2: p=0 st=8 o=4 sh=0 d=16
+ 3: p=0 st=8 o=6 sh=0 d=16
+uyvy422: ctype=uint
+ Legacy desc: [ba][yuv][le][be]
+ planes=1, chroma=1:0 align=2:1 bits=24 cbits=8
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=uyvy422 chroma=1:0 flags=0x0
+ 0: p=0 st=2 o=1 sh=0 d=8
+ 1: p=0 st=4 o=0 sh=0 d=8
+ 2: p=0 st=4 o=2 sh=0 d=8
+uyyvyy411: [GENERIC] ctype=uint
+ [NODESC]
+ [NOALLOC]
+ AVD: name=uyyvyy411 chroma=2:0 flags=0x0
+ 0: p=0 st=4 o=1 sh=0 d=8
+ 1: p=0 st=6 o=0 sh=0 d=8
+ 2: p=0 st=6 o=3 sh=0 d=8
+vaapi: 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=vaapi_vld chroma=1:1 flags=0x8 [hw]
+vaapi_idct: [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=vaapi_idct chroma=1:1 flags=0x8 [hw]
+vaapi_moco: [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=vaapi_moco chroma=1:1 flags=0x8 [hw]
+vdpau: 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=vdpau chroma=1:1 flags=0x8 [hw]
+vdpau_output: ctype=unknown
+ Legacy desc: [rgb][le][be][hw]
+ planes=0, chroma=0:0 align=0:0 bits=0 cbits=0
+ {0/0/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+videotoolbox_vl: [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=videotoolbox_vld chroma=0:0 flags=0x8 [hw]
+xvmc: [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=xvmc chroma=0:0 flags=0x8 [hw]
+xyz12: [GENERIC] fcsp=xyz ctype=uint
+ Legacy desc: [ba][le]
+ planes=1, chroma=0:0 align=1:1 bits=36 cbits=12
+ {6/48/[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, 2, 3}
+ AVD: name=xyz12le chroma=0:0 flags=0x0
+ 0: p=0 st=6 o=0 sh=4 d=12
+ 1: p=0 st=6 o=2 sh=4 d=12
+ 2: p=0 st=6 o=4 sh=4 d=12
+xyz12be: [GENERIC] fcsp=xyz ctype=uint
+ Legacy desc: [ba][be]
+ planes=1, chroma=0:0 align=1:1 bits=36 cbits=12
+ {6/48/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=xyz12be chroma=0:0 flags=0x1 [be]
+ 0: p=0 st=6 o=0 sh=4 d=12
+ 1: p=0 st=6 o=2 sh=4 d=12
+ 2: p=0 st=6 o=4 sh=4 d=12
+ya16: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuv][le]
+ planes=1, chroma=0:0 align=1:1 bits=32 cbits=16
+ {4/32/[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, 4}
+ AVD: name=ya16le chroma=0:0 flags=0x80 [alpha]
+ 0: p=0 st=4 o=0 sh=0 d=16
+ 1: p=0 st=4 o=2 sh=0 d=16
+ya16be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuv][be]
+ planes=1, chroma=0:0 align=1:1 bits=32 cbits=16
+ {4/32/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=ya16be chroma=0:0 flags=0x81 [be][alpha]
+ 0: p=0 st=4 o=0 sh=0 d=16
+ 1: p=0 st=4 o=2 sh=0 d=16
+ya8: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuv][le][be]
+ planes=1, chroma=0:0 align=1:1 bits=16 cbits=8
+ {2/16/[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, 4}
+ AVD: name=ya8 chroma=0:0 flags=0x80 [alpha]
+ 0: p=0 st=2 o=0 sh=0 d=8
+ 1: p=0 st=2 o=1 sh=0 d=8
+yuv410p: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le][be]
+ planes=3, chroma=2:2 align=4:4 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[2:2] 1/8/[2:2] 0/0/[0:0] }
+ Regular: planes=3 compbytes=1 bitpad=0 chroma=4x4 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv410p chroma=2:2 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+yuv411p: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le][be]
+ planes=3, chroma=2:0 align=4:1 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[2:0] 1/8/[2:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=1 bitpad=0 chroma=4x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv411p chroma=2:0 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+yuv420p: ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le][be]
+ planes=3, chroma=1:1 align=2:2 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[1:1] 1/8/[1:1] 0/0/[0:0] }
+ Regular: planes=3 compbytes=1 bitpad=0 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv420p chroma=1:1 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+ Ambiguous alias: yuvj420p
+yuv420p10: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=1:1 align=2:2 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-6 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv420p10le chroma=1:1 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+yuv420p10be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=1:1 align=2:2 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 0/0/[0:0] }
+ AVD: name=yuv420p10be chroma=1:1 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+yuv420p12: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=1:1 align=2:2 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-4 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv420p12le chroma=1:1 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+yuv420p12be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=1:1 align=2:2 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 0/0/[0:0] }
+ AVD: name=yuv420p12be chroma=1:1 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+yuv420p14: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=1:1 align=2:2 bits=14 cbits=14
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-2 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv420p14le chroma=1:1 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=14
+ 1: p=1 st=2 o=0 sh=0 d=14
+ 2: p=2 st=2 o=0 sh=0 d=14
+yuv420p14be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=1:1 align=2:2 bits=14 cbits=14
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 0/0/[0:0] }
+ AVD: name=yuv420p14be chroma=1:1 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=14
+ 1: p=1 st=2 o=0 sh=0 d=14
+ 2: p=2 st=2 o=0 sh=0 d=14
+yuv420p16: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=1:1 align=2:2 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=0 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv420p16le chroma=1:1 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+yuv420p16be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=1:1 align=2:2 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 0/0/[0:0] }
+ AVD: name=yuv420p16be chroma=1:1 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+yuv420p9: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=1:1 align=2:2 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-7 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv420p9le chroma=1:1 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+yuv420p9be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=1:1 align=2:2 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 0/0/[0:0] }
+ AVD: name=yuv420p9be chroma=1:1 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+yuv422p: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le][be]
+ planes=3, chroma=1:0 align=2:1 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[1:0] 1/8/[1:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=1 bitpad=0 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv422p chroma=1:0 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+yuv422p10: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=1:0 align=2:1 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-6 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv422p10le chroma=1:0 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+yuv422p10be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=1:0 align=2:1 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 0/0/[0:0] }
+ AVD: name=yuv422p10be chroma=1:0 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+yuv422p12: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=1:0 align=2:1 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-4 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv422p12le chroma=1:0 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+yuv422p12be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=1:0 align=2:1 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 0/0/[0:0] }
+ AVD: name=yuv422p12be chroma=1:0 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+yuv422p14: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=1:0 align=2:1 bits=14 cbits=14
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-2 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv422p14le chroma=1:0 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=14
+ 1: p=1 st=2 o=0 sh=0 d=14
+ 2: p=2 st=2 o=0 sh=0 d=14
+yuv422p14be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=1:0 align=2:1 bits=14 cbits=14
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 0/0/[0:0] }
+ AVD: name=yuv422p14be chroma=1:0 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=14
+ 1: p=1 st=2 o=0 sh=0 d=14
+ 2: p=2 st=2 o=0 sh=0 d=14
+yuv422p16: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=1:0 align=2:1 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=0 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv422p16le chroma=1:0 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+yuv422p16be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=1:0 align=2:1 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 0/0/[0:0] }
+ AVD: name=yuv422p16be chroma=1:0 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+yuv422p9: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=1:0 align=2:1 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-7 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv422p9le chroma=1:0 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+yuv422p9be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=1:0 align=2:1 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 0/0/[0:0] }
+ AVD: name=yuv422p9be chroma=1:0 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+yuv440p: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le][be]
+ planes=3, chroma=0:1 align=1:2 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[0:1] 1/8/[0:1] 0/0/[0:0] }
+ Regular: planes=3 compbytes=1 bitpad=0 chroma=1x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv440p chroma=0:1 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+yuv440p10: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=0:1 align=1:2 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[0:1] 2/16/[0:1] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-6 chroma=1x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv440p10le chroma=0:1 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+yuv440p10be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=0:1 align=1:2 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[0:1] 2/16/[0:1] 0/0/[0:0] }
+ AVD: name=yuv440p10be chroma=0:1 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+yuv440p12: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le]
+ planes=3, chroma=0:1 align=1:2 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[0:1] 2/16/[0:1] 0/0/[0:0] }
+ Regular: planes=3 compbytes=2 bitpad=-4 chroma=1x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv440p12le chroma=0:1 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+yuv440p12be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][be]
+ planes=3, chroma=0:1 align=1:2 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[0:1] 2/16/[0:1] 0/0/[0:0] }
+ AVD: name=yuv440p12be chroma=0:1 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+yuv444p: ctype=uint
+ Legacy desc: [ba][yuvp][yuv][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: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv444p chroma=0:0 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+ Ambiguous alias: yuvj444p
+yuv444p10: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][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: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv444p10le chroma=0:0 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+yuv444p10be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][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=yuv444p10be chroma=0:0 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+yuv444p12: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][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: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv444p12le chroma=0:0 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+yuv444p12be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][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=yuv444p12be chroma=0:0 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+yuv444p14: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][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: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv444p14le chroma=0:0 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=14
+ 1: p=1 st=2 o=0 sh=0 d=14
+ 2: p=2 st=2 o=0 sh=0 d=14
+yuv444p14be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][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=yuv444p14be chroma=0:0 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=14
+ 1: p=1 st=2 o=0 sh=0 d=14
+ 2: p=2 st=2 o=0 sh=0 d=14
+yuv444p16: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][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: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv444p16le chroma=0:0 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+yuv444p16be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][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=yuv444p16be chroma=0:0 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+yuv444p9: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][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: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuv444p9le chroma=0:0 flags=0x10 [planar]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+yuv444p9be: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][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=yuv444p9be chroma=0:0 flags=0x11 [be][planar]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+yuva420p: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][le][be]
+ planes=4, chroma=1:1 align=2:2 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[1:1] 1/8/[1:1] 1/8/[0:0] }
+ Regular: planes=4 compbytes=1 bitpad=0 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva420p chroma=1:1 flags=0x90 [planar][alpha]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+ 3: p=3 st=1 o=0 sh=0 d=8
+yuva420p10: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][le]
+ planes=4, chroma=1:1 align=2:2 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 2/16/[0:0] }
+ Regular: planes=4 compbytes=2 bitpad=-6 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva420p10le chroma=1:1 flags=0x90 [planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+ 3: p=3 st=2 o=0 sh=0 d=10
+yuva420p10be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][be]
+ planes=4, chroma=1:1 align=2:2 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 2/16/[0:0] }
+ AVD: name=yuva420p10be chroma=1:1 flags=0x91 [be][planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+ 3: p=3 st=2 o=0 sh=0 d=10
+yuva420p16: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][le]
+ planes=4, chroma=1:1 align=2:2 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 2/16/[0:0] }
+ Regular: planes=4 compbytes=2 bitpad=0 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva420p16le chroma=1:1 flags=0x90 [planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+ 3: p=3 st=2 o=0 sh=0 d=16
+yuva420p16be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][be]
+ planes=4, chroma=1:1 align=2:2 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 2/16/[0:0] }
+ AVD: name=yuva420p16be chroma=1:1 flags=0x91 [be][planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+ 3: p=3 st=2 o=0 sh=0 d=16
+yuva420p9: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][le]
+ planes=4, chroma=1:1 align=2:2 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 2/16/[0:0] }
+ Regular: planes=4 compbytes=2 bitpad=-7 chroma=2x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva420p9le chroma=1:1 flags=0x90 [planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+ 3: p=3 st=2 o=0 sh=0 d=9
+yuva420p9be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][be]
+ planes=4, chroma=1:1 align=2:2 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[1:1] 2/16/[1:1] 2/16/[0:0] }
+ AVD: name=yuva420p9be chroma=1:1 flags=0x91 [be][planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+ 3: p=3 st=2 o=0 sh=0 d=9
+yuva422p: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][le][be]
+ planes=4, chroma=1:0 align=2:1 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[1:0] 1/8/[1:0] 1/8/[0:0] }
+ Regular: planes=4 compbytes=1 bitpad=0 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva422p chroma=1:0 flags=0x90 [planar][alpha]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+ 3: p=3 st=1 o=0 sh=0 d=8
+yuva422p10: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][le]
+ planes=4, chroma=1:0 align=2:1 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 2/16/[0:0] }
+ Regular: planes=4 compbytes=2 bitpad=-6 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva422p10le chroma=1:0 flags=0x90 [planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+ 3: p=3 st=2 o=0 sh=0 d=10
+yuva422p10be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][be]
+ planes=4, chroma=1:0 align=2:1 bits=10 cbits=10
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 2/16/[0:0] }
+ AVD: name=yuva422p10be chroma=1:0 flags=0x91 [be][planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+ 3: p=3 st=2 o=0 sh=0 d=10
+yuva422p12: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][le]
+ planes=4, chroma=1:0 align=2:1 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 2/16/[0:0] }
+ Regular: planes=4 compbytes=2 bitpad=-4 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva422p12le chroma=1:0 flags=0x90 [planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+ 3: p=3 st=2 o=0 sh=0 d=12
+yuva422p12be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][be]
+ planes=4, chroma=1:0 align=2:1 bits=12 cbits=12
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 2/16/[0:0] }
+ AVD: name=yuva422p12be chroma=1:0 flags=0x91 [be][planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+ 3: p=3 st=2 o=0 sh=0 d=12
+yuva422p16: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][le]
+ planes=4, chroma=1:0 align=2:1 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 2/16/[0:0] }
+ Regular: planes=4 compbytes=2 bitpad=0 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva422p16le chroma=1:0 flags=0x90 [planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+ 3: p=3 st=2 o=0 sh=0 d=16
+yuva422p16be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][be]
+ planes=4, chroma=1:0 align=2:1 bits=16 cbits=16
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 2/16/[0:0] }
+ AVD: name=yuva422p16be chroma=1:0 flags=0x91 [be][planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+ 3: p=3 st=2 o=0 sh=0 d=16
+yuva422p9: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][le]
+ planes=4, chroma=1:0 align=2:1 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 2/16/[0:0] }
+ Regular: planes=4 compbytes=2 bitpad=-7 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva422p9le chroma=1:0 flags=0x90 [planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+ 3: p=3 st=2 o=0 sh=0 d=9
+yuva422p9be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][be]
+ planes=4, chroma=1:0 align=2:1 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[1:0] 2/16/[1:0] 2/16/[0:0] }
+ AVD: name=yuva422p9be chroma=1:0 flags=0x91 [be][planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+ 3: p=3 st=2 o=0 sh=0 d=9
+yuva444p: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][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: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva444p chroma=0:0 flags=0x90 [planar][alpha]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+ 3: p=3 st=1 o=0 sh=0 d=8
+yuva444p10: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][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: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva444p10le chroma=0:0 flags=0x90 [planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+ 3: p=3 st=2 o=0 sh=0 d=10
+yuva444p10be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][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=yuva444p10be chroma=0:0 flags=0x91 [be][planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=10
+ 1: p=1 st=2 o=0 sh=0 d=10
+ 2: p=2 st=2 o=0 sh=0 d=10
+ 3: p=3 st=2 o=0 sh=0 d=10
+yuva444p12: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][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: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva444p12le chroma=0:0 flags=0x90 [planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+ 3: p=3 st=2 o=0 sh=0 d=12
+yuva444p12be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][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=yuva444p12be chroma=0:0 flags=0x91 [be][planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=12
+ 1: p=1 st=2 o=0 sh=0 d=12
+ 2: p=2 st=2 o=0 sh=0 d=12
+ 3: p=3 st=2 o=0 sh=0 d=12
+yuva444p16: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][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: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva444p16le chroma=0:0 flags=0x90 [planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+ 3: p=3 st=2 o=0 sh=0 d=16
+yuva444p16be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][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=yuva444p16be chroma=0:0 flags=0x91 [be][planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=16
+ 1: p=1 st=2 o=0 sh=0 d=16
+ 2: p=2 st=2 o=0 sh=0 d=16
+ 3: p=3 st=2 o=0 sh=0 d=16
+yuva444p9: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][le]
+ planes=4, chroma=0:0 align=1:1 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 2/16/[0:0] }
+ Regular: planes=4 compbytes=2 bitpad=-7 chroma=1x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ 3: {4}
+ AVD: name=yuva444p9le chroma=0:0 flags=0x90 [planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+ 3: p=3 st=2 o=0 sh=0 d=9
+yuva444p9be: [GENERIC] ctype=uint
+ Legacy desc: [ba][a][yuvp][yuv][be]
+ planes=4, chroma=0:0 align=1:1 bits=9 cbits=9
+ {2/16/[0:0] 2/16/[0:0] 2/16/[0:0] 2/16/[0:0] }
+ AVD: name=yuva444p9be chroma=0:0 flags=0x91 [be][planar][alpha]
+ 0: p=0 st=2 o=0 sh=0 d=9
+ 1: p=1 st=2 o=0 sh=0 d=9
+ 2: p=2 st=2 o=0 sh=0 d=9
+ 3: p=3 st=2 o=0 sh=0 d=9
+yuvj411p: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le][be]
+ planes=3, chroma=2:0 align=4:1 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[2:0] 1/8/[2:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=1 bitpad=0 chroma=4x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuvj411p chroma=2:0 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+yuvj422p: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le][be]
+ planes=3, chroma=1:0 align=2:1 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[1:0] 1/8/[1:0] 0/0/[0:0] }
+ Regular: planes=3 compbytes=1 bitpad=0 chroma=2x1 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuvj422p chroma=1:0 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+yuvj440p: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuvp][yuv][le][be]
+ planes=3, chroma=0:1 align=1:2 bits=8 cbits=8
+ {1/8/[0:0] 1/8/[0:1] 1/8/[0:1] 0/0/[0:0] }
+ Regular: planes=3 compbytes=1 bitpad=0 chroma=1x2 ctype=uint
+ 0: {1}
+ 1: {2}
+ 2: {3}
+ AVD: name=yuvj440p chroma=0:1 flags=0x10 [planar]
+ 0: p=0 st=1 o=0 sh=0 d=8
+ 1: p=1 st=1 o=0 sh=0 d=8
+ 2: p=2 st=1 o=0 sh=0 d=8
+yuyv422: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuv][le][be]
+ planes=1, chroma=1:0 align=2:1 bits=24 cbits=8
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=yuyv422 chroma=1:0 flags=0x0
+ 0: p=0 st=2 o=0 sh=0 d=8
+ 1: p=0 st=4 o=1 sh=0 d=8
+ 2: p=0 st=4 o=3 sh=0 d=8
+yvyu422: [GENERIC] ctype=uint
+ Legacy desc: [ba][yuv][le][be]
+ planes=1, chroma=1:0 align=2:1 bits=24 cbits=8
+ {2/16/[0:0] 0/0/[0:0] 0/0/[0:0] 0/0/[0:0] }
+ AVD: name=yvyu422 chroma=1:0 flags=0x0
+ 0: p=0 st=2 o=0 sh=0 d=8
+ 1: p=0 st=4 o=3 sh=0 d=8
+ 2: p=0 st=4 o=1 sh=0 d=8
diff --git a/test/tests.c b/test/tests.c
index 68245d2df1..5fe486e2ec 100644
--- a/test/tests.c
+++ b/test/tests.c
@@ -1,9 +1,12 @@
+#include "options/path.h"
+#include "osdep/subprocess.h"
#include "player/core.h"
#include "tests.h"
static const struct unittest *unittests[] = {
&test_chmap,
&test_gl_video,
+ &test_img_format,
&test_json,
&test_linked_list,
NULL
@@ -25,8 +28,17 @@ bool run_tests(struct MPContext *mpctx)
struct test_ctx ctx = {
.global = mpctx->global,
.log = mpctx->log,
+ .ref_path = "test/ref",
+ .out_path = "test/out",
};
+ if (!mp_path_isdir(ctx.ref_path)) {
+ MP_FATAL(mpctx, "Must be run from git repo root dir.\n");
+ abort();
+ }
+ mp_mkdirp(ctx.out_path);
+ assert(mp_path_isdir(ctx.out_path));
+
int num_run = 0;
for (int n = 0; unittests[n]; n++) {
@@ -81,3 +93,33 @@ void assert_float_equal_impl(const char *file, int line,
abort();
}
}
+
+FILE *test_open_out(struct test_ctx *ctx, const char *name)
+{
+ char *path = mp_tprintf(4096, "%s/%s", ctx->out_path, name);
+ FILE *f = fopen(path, "wb");
+ if (!f) {
+ MP_FATAL(ctx, "Could not open '%s' for writing.\n", path);
+ abort();
+ }
+ return f;
+}
+
+void assert_text_files_equal_impl(const char *file, int line,
+ struct test_ctx *ctx, const char *ref,
+ const char *new, const char *err)
+{
+ char *path_ref = mp_tprintf(4096, "%s/%s", ctx->ref_path, ref);
+ char *path_new = mp_tprintf(4096, "%s/%s", ctx->out_path, new);
+
+ char *errstr = NULL;
+ int res = mp_subprocess((char*[]){"diff", "-u", "--", path_ref, path_new, 0},
+ NULL, NULL, NULL, NULL, &errstr);
+
+ if (res) {
+ if (res == 1)
+ MP_WARN(ctx, "Note: %s\n", err);
+ MP_FATAL(ctx, "Giving up.\n");
+ abort();
+ }
+}
diff --git a/test/tests.h b/test/tests.h
index c19f90f75d..0a589d984d 100644
--- a/test/tests.h
+++ b/test/tests.h
@@ -13,6 +13,12 @@ bool run_tests(struct MPContext *mpctx);
struct test_ctx {
struct mpv_global *global;
struct mp_log *log;
+
+ // Path for ref files, without trailing "/".
+ const char *ref_path;
+
+ // Path for result files, without trailing "/".
+ const char *out_path;
};
struct unittest {
@@ -32,6 +38,7 @@ struct unittest {
extern const struct unittest test_chmap;
extern const struct unittest test_gl_video;
+extern const struct unittest test_img_format;
extern const struct unittest test_json;
extern const struct unittest test_linked_list;
@@ -44,8 +51,21 @@ extern const struct unittest test_linked_list;
#define assert_float_equal(a, b, tolerance) \
assert_float_equal_impl(__FILE__, __LINE__, (a), (b), (tolerance))
+// Require that the files "ref" and "new" are the same. The paths can be
+// relative to ref_path and out_path respectively. If they're not the same,
+// the output of "diff" is shown, the err message (if not NULL), and the test
+// fails.
+#define assert_text_files_equal(ctx, ref, new, err) \
+ assert_text_files_equal_impl(__FILE__, __LINE__, (ctx), (ref), (new), (err))
+
void assert_int_equal_impl(const char *file, int line, int64_t a, int64_t b);
void assert_string_equal_impl(const char *file, int line,
const char *a, const char *b);
void assert_float_equal_impl(const char *file, int line,
- double a, double b, double tolerance);
+ double a, double b, double tolerance);
+void assert_text_files_equal_impl(const char *file, int line,
+ struct test_ctx *ctx, const char *ref,
+ const char *new, const char *err);
+
+// Open a new file in the out_path. Always succeeds.
+FILE *test_open_out(struct test_ctx *ctx, const char *name);
diff --git a/video/fmt-conversion.c b/video/fmt-conversion.c
index 72f4407e70..b9b3d5ef66 100644
--- a/video/fmt-conversion.c
+++ b/video/fmt-conversion.c
@@ -95,7 +95,7 @@ enum AVPixelFormat imgfmt2pixfmt(int fmt)
enum AVPixelFormat pixfmt = fmt - IMGFMT_AVPIXFMT_START;
// Avoid duplicate format - each format must be unique.
int mpfmt = pixfmt2imgfmt(pixfmt);
- if (mpfmt == fmt)
+ if (mpfmt == fmt && av_pix_fmt_desc_get(pixfmt))
return pixfmt;
return AV_PIX_FMT_NONE;
}
@@ -118,7 +118,7 @@ int pixfmt2imgfmt(enum AVPixelFormat pix_fmt)
}
int generic = IMGFMT_AVPIXFMT_START + pix_fmt;
- if (generic < IMGFMT_AVPIXFMT_END)
+ if (generic < IMGFMT_AVPIXFMT_END && av_pix_fmt_desc_get(pix_fmt))
return generic;
return 0;
diff --git a/video/img_format.c b/video/img_format.c
index ace8159ecf..4028bf0e0b 100644
--- a/video/img_format.c
+++ b/video/img_format.c
@@ -534,98 +534,3 @@ int mp_imgfmt_select_best_list(int *dst, int num_dst, int src)
best = best ? mp_imgfmt_select_best(best, dst[n], src) : dst[n];
return best;
}
-
-#if 0
-
-#include <libavutil/frame.h>
-#include "sws_utils.h"
-
-int main(int argc, char **argv)
-{
- 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);
- if (fmt == AV_PIX_FMT_YUVJ420P || fmt == AV_PIX_FMT_YUVJ422P ||
- fmt == AV_PIX_FMT_YUVJ444P || fmt == AV_PIX_FMT_YUVJ440P)
- continue;
- printf("%s (%d)", avd->name, (int)fmt);
- int mpfmt = pixfmt2imgfmt(fmt);
- bool generic = mpfmt >= IMGFMT_AVPIXFMT_START &&
- mpfmt < IMGFMT_AVPIXFMT_END;
- printf(" mp=%d%s\n ", mpfmt, generic ? " [GENERIC]" : "");
- struct mp_imgfmt_desc d = mp_imgfmt_get_desc(mpfmt);
- if (d.id)
- assert(d.avformat == fmt);
-#define FLAG(t, c) if (d.flags & (t)) printf("[%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")
- int fcsp = mp_imgfmt_get_forced_csp(mpfmt);
- if (fcsp)
- printf(" fcsp=%d", fcsp);
- printf(" ctype=%d", mp_imgfmt_get_component_type(mpfmt));
- printf("\n");
- printf(" 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);
- printf(" {");
- for (int n = 0; n < MP_MAX_PLANES; n++)
- printf("%d/%d/[%d:%d] ", d.bytes[n], d.bpp[n], d.xs[n], d.ys[n]);
- printf("}\n");
- if (mpfmt && !(d.flags & MP_IMGFLAG_HWACCEL) && fmt != AV_PIX_FMT_UYYVYY411)
- {
- AVFrame *fr = av_frame_alloc();
- fr->format = fmt;
- 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);
- assert(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]) {
- printf(" Warning: p%d: %p %p\n", n,
- mpi->planes[n], fr->data[n]);
- }
- if (mpi->stride[n] != fr->linesize[n]) {
- printf(" Warning: p%d: %d %d\n", n,
- mpi->stride[n], fr->linesize[n]);
- }
- }
- talloc_free(mpi);
- av_frame_free(&fr);
- }
- struct mp_regular_imgfmt reg;
- if (mp_get_regular_imgfmt(&reg, mpfmt)) {
- const char *type = "unknown";
- switch (reg.component_type) {
- case MP_COMPONENT_TYPE_UINT: type = "uint"; break;
- case MP_COMPONENT_TYPE_FLOAT: type = "float"; break;
- }
- printf(" Regular: %d planes, %d bytes per comp., %d bit-pad, "
- "%dx%d chroma, type=%s\n",
- reg.num_planes, reg.component_size, reg.component_pad,
- reg.chroma_w, reg.chroma_h, type);
- for (int n = 0; n < reg.num_planes; n++) {
- struct mp_regular_imgfmt_plane *plane = &reg.planes[n];
- printf(" %d: {", n);
- for (int i = 0; i < plane->num_components; i++) {
- if (i > 0)
- printf(", ");
- printf("%d", plane->components[i]);
- }
- printf("}\n");
- }
- }
- }
-}
-
-#endif
diff --git a/wscript_build.py b/wscript_build.py
index ff0b0b746f..ffb7bebb9c 100644
--- a/wscript_build.py
+++ b/wscript_build.py
@@ -397,6 +397,7 @@ def build(ctx):
## Tests
( "test/chmap.c", "tests" ),
( "test/gl_video.c", "tests" ),
+ ( "test/img_format.c", "tests" ),
( "test/json.c", "tests" ),
( "test/linked_list.c", "tests" ),
( "test/tests.c", "tests" ),