Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * pixel format descriptor
  3.  * Copyright (c) 2009 Michael Niedermayer <michaelni@gmx.at>
  4.  *
  5.  * This file is part of FFmpeg.
  6.  *
  7.  * FFmpeg is free software; you can redistribute it and/or
  8.  * modify it under the terms of the GNU Lesser General Public
  9.  * License as published by the Free Software Foundation; either
  10.  * version 2.1 of the License, or (at your option) any later version.
  11.  *
  12.  * FFmpeg is distributed in the hope that it will be useful,
  13.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  15.  * Lesser General Public License for more details.
  16.  *
  17.  * You should have received a copy of the GNU Lesser General Public
  18.  * License along with FFmpeg; if not, write to the Free Software
  19.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  20.  */
  21.  
  22. #include <stdio.h>
  23. #include <string.h>
  24.  
  25. #include "avassert.h"
  26. #include "common.h"
  27. #include "pixfmt.h"
  28. #include "pixdesc.h"
  29. #include "internal.h"
  30. #include "intreadwrite.h"
  31. #include "avstring.h"
  32.  
  33. void av_read_image_line(uint16_t *dst,
  34.                         const uint8_t *data[4], const int linesize[4],
  35.                         const AVPixFmtDescriptor *desc,
  36.                         int x, int y, int c, int w,
  37.                         int read_pal_component)
  38. {
  39.     AVComponentDescriptor comp = desc->comp[c];
  40.     int plane = comp.plane;
  41.     int depth = comp.depth_minus1 + 1;
  42.     int mask  = (1 << depth) - 1;
  43.     int shift = comp.shift;
  44.     int step  = comp.step_minus1 + 1;
  45.     int flags = desc->flags;
  46.  
  47.     if (flags & AV_PIX_FMT_FLAG_BITSTREAM) {
  48.         int skip = x * step + comp.offset_plus1 - 1;
  49.         const uint8_t *p = data[plane] + y * linesize[plane] + (skip >> 3);
  50.         int shift = 8 - depth - (skip & 7);
  51.  
  52.         while (w--) {
  53.             int val = (*p >> shift) & mask;
  54.             if (read_pal_component)
  55.                 val = data[1][4*val + c];
  56.             shift -= step;
  57.             p -= shift >> 3;
  58.             shift &= 7;
  59.             *dst++ = val;
  60.         }
  61.     } else {
  62.         const uint8_t *p = data[plane] + y * linesize[plane] +
  63.                            x * step + comp.offset_plus1 - 1;
  64.         int is_8bit = shift + depth <= 8;
  65.  
  66.         if (is_8bit)
  67.             p += !!(flags & AV_PIX_FMT_FLAG_BE);
  68.  
  69.         while (w--) {
  70.             int val = is_8bit ? *p :
  71.                 flags & AV_PIX_FMT_FLAG_BE ? AV_RB16(p) : AV_RL16(p);
  72.             val = (val >> shift) & mask;
  73.             if (read_pal_component)
  74.                 val = data[1][4 * val + c];
  75.             p += step;
  76.             *dst++ = val;
  77.         }
  78.     }
  79. }
  80.  
  81. void av_write_image_line(const uint16_t *src,
  82.                          uint8_t *data[4], const int linesize[4],
  83.                          const AVPixFmtDescriptor *desc,
  84.                          int x, int y, int c, int w)
  85. {
  86.     AVComponentDescriptor comp = desc->comp[c];
  87.     int plane = comp.plane;
  88.     int depth = comp.depth_minus1 + 1;
  89.     int step  = comp.step_minus1 + 1;
  90.     int flags = desc->flags;
  91.  
  92.     if (flags & AV_PIX_FMT_FLAG_BITSTREAM) {
  93.         int skip = x * step + comp.offset_plus1 - 1;
  94.         uint8_t *p = data[plane] + y * linesize[plane] + (skip >> 3);
  95.         int shift = 8 - depth - (skip & 7);
  96.  
  97.         while (w--) {
  98.             *p |= *src++ << shift;
  99.             shift -= step;
  100.             p -= shift >> 3;
  101.             shift &= 7;
  102.         }
  103.     } else {
  104.         int shift = comp.shift;
  105.         uint8_t *p = data[plane] + y * linesize[plane] +
  106.                      x * step + comp.offset_plus1 - 1;
  107.  
  108.         if (shift + depth <= 8) {
  109.             p += !!(flags & AV_PIX_FMT_FLAG_BE);
  110.             while (w--) {
  111.                 *p |= (*src++ << shift);
  112.                 p += step;
  113.             }
  114.         } else {
  115.             while (w--) {
  116.                 if (flags & AV_PIX_FMT_FLAG_BE) {
  117.                     uint16_t val = AV_RB16(p) | (*src++ << shift);
  118.                     AV_WB16(p, val);
  119.                 } else {
  120.                     uint16_t val = AV_RL16(p) | (*src++ << shift);
  121.                     AV_WL16(p, val);
  122.                 }
  123.                 p += step;
  124.             }
  125.         }
  126.     }
  127. }
  128.  
  129. #if !FF_API_PIX_FMT_DESC
  130. static
  131. #endif
  132. const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
  133.     [AV_PIX_FMT_YUV420P] = {
  134.         .name = "yuv420p",
  135.         .nb_components = 3,
  136.         .log2_chroma_w = 1,
  137.         .log2_chroma_h = 1,
  138.         .comp = {
  139.             { 0, 0, 1, 0, 7 },        /* Y */
  140.             { 1, 0, 1, 0, 7 },        /* U */
  141.             { 2, 0, 1, 0, 7 },        /* V */
  142.         },
  143.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  144.     },
  145.     [AV_PIX_FMT_YUYV422] = {
  146.         .name = "yuyv422",
  147.         .nb_components = 3,
  148.         .log2_chroma_w = 1,
  149.         .log2_chroma_h = 0,
  150.         .comp = {
  151.             { 0, 1, 1, 0, 7 },        /* Y */
  152.             { 0, 3, 2, 0, 7 },        /* U */
  153.             { 0, 3, 4, 0, 7 },        /* V */
  154.         },
  155.     },
  156.     [AV_PIX_FMT_RGB24] = {
  157.         .name = "rgb24",
  158.         .nb_components = 3,
  159.         .log2_chroma_w = 0,
  160.         .log2_chroma_h = 0,
  161.         .comp = {
  162.             { 0, 2, 1, 0, 7 },        /* R */
  163.             { 0, 2, 2, 0, 7 },        /* G */
  164.             { 0, 2, 3, 0, 7 },        /* B */
  165.         },
  166.         .flags = AV_PIX_FMT_FLAG_RGB,
  167.     },
  168.     [AV_PIX_FMT_BGR24] = {
  169.         .name = "bgr24",
  170.         .nb_components = 3,
  171.         .log2_chroma_w = 0,
  172.         .log2_chroma_h = 0,
  173.         .comp = {
  174.             { 0, 2, 3, 0, 7 },        /* R */
  175.             { 0, 2, 2, 0, 7 },        /* G */
  176.             { 0, 2, 1, 0, 7 },        /* B */
  177.         },
  178.         .flags = AV_PIX_FMT_FLAG_RGB,
  179.     },
  180.     [AV_PIX_FMT_YUV422P] = {
  181.         .name = "yuv422p",
  182.         .nb_components = 3,
  183.         .log2_chroma_w = 1,
  184.         .log2_chroma_h = 0,
  185.         .comp = {
  186.             { 0, 0, 1, 0, 7 },        /* Y */
  187.             { 1, 0, 1, 0, 7 },        /* U */
  188.             { 2, 0, 1, 0, 7 },        /* V */
  189.         },
  190.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  191.     },
  192.     [AV_PIX_FMT_YUV444P] = {
  193.         .name = "yuv444p",
  194.         .nb_components = 3,
  195.         .log2_chroma_w = 0,
  196.         .log2_chroma_h = 0,
  197.         .comp = {
  198.             { 0, 0, 1, 0, 7 },        /* Y */
  199.             { 1, 0, 1, 0, 7 },        /* U */
  200.             { 2, 0, 1, 0, 7 },        /* V */
  201.         },
  202.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  203.     },
  204.     [AV_PIX_FMT_YUV410P] = {
  205.         .name = "yuv410p",
  206.         .nb_components = 3,
  207.         .log2_chroma_w = 2,
  208.         .log2_chroma_h = 2,
  209.         .comp = {
  210.             { 0, 0, 1, 0, 7 },        /* Y */
  211.             { 1, 0, 1, 0, 7 },        /* U */
  212.             { 2, 0, 1, 0, 7 },        /* V */
  213.         },
  214.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  215.     },
  216.     [AV_PIX_FMT_YUV411P] = {
  217.         .name = "yuv411p",
  218.         .nb_components = 3,
  219.         .log2_chroma_w = 2,
  220.         .log2_chroma_h = 0,
  221.         .comp = {
  222.             { 0, 0, 1, 0, 7 },        /* Y */
  223.             { 1, 0, 1, 0, 7 },        /* U */
  224.             { 2, 0, 1, 0, 7 },        /* V */
  225.         },
  226.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  227.     },
  228.     [AV_PIX_FMT_YUVJ411P] = {
  229.         .name = "yuvj411p",
  230.         .nb_components = 3,
  231.         .log2_chroma_w = 2,
  232.         .log2_chroma_h = 0,
  233.         .comp = {
  234.             { 0, 0, 1, 0, 7 },        /* Y */
  235.             { 1, 0, 1, 0, 7 },        /* U */
  236.             { 2, 0, 1, 0, 7 },        /* V */
  237.         },
  238.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  239.     },
  240.     [AV_PIX_FMT_GRAY8] = {
  241.         .name = "gray",
  242.         .nb_components = 1,
  243.         .log2_chroma_w = 0,
  244.         .log2_chroma_h = 0,
  245.         .comp = {
  246.             { 0, 0, 1, 0, 7 },        /* Y */
  247.         },
  248.         .flags = AV_PIX_FMT_FLAG_PSEUDOPAL,
  249.     },
  250.     [AV_PIX_FMT_MONOWHITE] = {
  251.         .name = "monow",
  252.         .nb_components = 1,
  253.         .log2_chroma_w = 0,
  254.         .log2_chroma_h = 0,
  255.         .comp = {
  256.             { 0, 0, 1, 0, 0 },        /* Y */
  257.         },
  258.         .flags = AV_PIX_FMT_FLAG_BITSTREAM,
  259.     },
  260.     [AV_PIX_FMT_MONOBLACK] = {
  261.         .name = "monob",
  262.         .nb_components = 1,
  263.         .log2_chroma_w = 0,
  264.         .log2_chroma_h = 0,
  265.         .comp = {
  266.             { 0, 0, 1, 7, 0 },        /* Y */
  267.         },
  268.         .flags = AV_PIX_FMT_FLAG_BITSTREAM,
  269.     },
  270.     [AV_PIX_FMT_PAL8] = {
  271.         .name = "pal8",
  272.         .nb_components = 1,
  273.         .log2_chroma_w = 0,
  274.         .log2_chroma_h = 0,
  275.         .comp = {
  276.             { 0, 0, 1, 0, 7 },
  277.         },
  278.         .flags = AV_PIX_FMT_FLAG_PAL,
  279.     },
  280.     [AV_PIX_FMT_YUVJ420P] = {
  281.         .name = "yuvj420p",
  282.         .nb_components = 3,
  283.         .log2_chroma_w = 1,
  284.         .log2_chroma_h = 1,
  285.         .comp = {
  286.             { 0, 0, 1, 0, 7 },        /* Y */
  287.             { 1, 0, 1, 0, 7 },        /* U */
  288.             { 2, 0, 1, 0, 7 },        /* V */
  289.         },
  290.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  291.     },
  292.     [AV_PIX_FMT_YUVJ422P] = {
  293.         .name = "yuvj422p",
  294.         .nb_components = 3,
  295.         .log2_chroma_w = 1,
  296.         .log2_chroma_h = 0,
  297.         .comp = {
  298.             { 0, 0, 1, 0, 7 },        /* Y */
  299.             { 1, 0, 1, 0, 7 },        /* U */
  300.             { 2, 0, 1, 0, 7 },        /* V */
  301.         },
  302.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  303.     },
  304.     [AV_PIX_FMT_YUVJ444P] = {
  305.         .name = "yuvj444p",
  306.         .nb_components = 3,
  307.         .log2_chroma_w = 0,
  308.         .log2_chroma_h = 0,
  309.         .comp = {
  310.             { 0, 0, 1, 0, 7 },        /* Y */
  311.             { 1, 0, 1, 0, 7 },        /* U */
  312.             { 2, 0, 1, 0, 7 },        /* V */
  313.         },
  314.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  315.     },
  316.     [AV_PIX_FMT_XVMC_MPEG2_MC] = {
  317.         .name = "xvmcmc",
  318.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  319.     },
  320.     [AV_PIX_FMT_XVMC_MPEG2_IDCT] = {
  321.         .name = "xvmcidct",
  322.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  323.     },
  324.     [AV_PIX_FMT_UYVY422] = {
  325.         .name = "uyvy422",
  326.         .nb_components = 3,
  327.         .log2_chroma_w = 1,
  328.         .log2_chroma_h = 0,
  329.         .comp = {
  330.             { 0, 1, 2, 0, 7 },        /* Y */
  331.             { 0, 3, 1, 0, 7 },        /* U */
  332.             { 0, 3, 3, 0, 7 },        /* V */
  333.         },
  334.     },
  335.     [AV_PIX_FMT_UYYVYY411] = {
  336.         .name = "uyyvyy411",
  337.         .nb_components = 3,
  338.         .log2_chroma_w = 2,
  339.         .log2_chroma_h = 0,
  340.         .comp = {
  341.             { 0, 3, 2, 0, 7 },        /* Y */
  342.             { 0, 5, 1, 0, 7 },        /* U */
  343.             { 0, 5, 4, 0, 7 },        /* V */
  344.         },
  345.     },
  346.     [AV_PIX_FMT_BGR8] = {
  347.         .name = "bgr8",
  348.         .nb_components = 3,
  349.         .log2_chroma_w = 0,
  350.         .log2_chroma_h = 0,
  351.         .comp = {
  352.             { 0, 0, 1, 0, 2 },        /* R */
  353.             { 0, 0, 1, 3, 2 },        /* G */
  354.             { 0, 0, 1, 6, 1 },        /* B */
  355.         },
  356.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL,
  357.     },
  358.     [AV_PIX_FMT_BGR4] = {
  359.         .name = "bgr4",
  360.         .nb_components = 3,
  361.         .log2_chroma_w = 0,
  362.         .log2_chroma_h = 0,
  363.         .comp = {
  364.             { 0, 3, 4, 0, 0 },        /* R */
  365.             { 0, 3, 2, 0, 1 },        /* G */
  366.             { 0, 3, 1, 0, 0 },        /* B */
  367.         },
  368.         .flags = AV_PIX_FMT_FLAG_BITSTREAM | AV_PIX_FMT_FLAG_RGB,
  369.     },
  370.     [AV_PIX_FMT_BGR4_BYTE] = {
  371.         .name = "bgr4_byte",
  372.         .nb_components = 3,
  373.         .log2_chroma_w = 0,
  374.         .log2_chroma_h = 0,
  375.         .comp = {
  376.             { 0, 0, 1, 0, 0 },        /* R */
  377.             { 0, 0, 1, 1, 1 },        /* G */
  378.             { 0, 0, 1, 3, 0 },        /* B */
  379.         },
  380.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL,
  381.     },
  382.     [AV_PIX_FMT_RGB8] = {
  383.         .name = "rgb8",
  384.         .nb_components = 3,
  385.         .log2_chroma_w = 0,
  386.         .log2_chroma_h = 0,
  387.         .comp = {
  388.             { 0, 0, 1, 6, 1 },        /* R */
  389.             { 0, 0, 1, 3, 2 },        /* G */
  390.             { 0, 0, 1, 0, 2 },        /* B */
  391.         },
  392.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL,
  393.     },
  394.     [AV_PIX_FMT_RGB4] = {
  395.         .name = "rgb4",
  396.         .nb_components = 3,
  397.         .log2_chroma_w = 0,
  398.         .log2_chroma_h = 0,
  399.         .comp = {
  400.             { 0, 3, 1, 0, 0 },        /* R */
  401.             { 0, 3, 2, 0, 1 },        /* G */
  402.             { 0, 3, 4, 0, 0 },        /* B */
  403.         },
  404.         .flags = AV_PIX_FMT_FLAG_BITSTREAM | AV_PIX_FMT_FLAG_RGB,
  405.     },
  406.     [AV_PIX_FMT_RGB4_BYTE] = {
  407.         .name = "rgb4_byte",
  408.         .nb_components = 3,
  409.         .log2_chroma_w = 0,
  410.         .log2_chroma_h = 0,
  411.         .comp = {
  412.             { 0, 0, 1, 3, 0 },        /* R */
  413.             { 0, 0, 1, 1, 1 },        /* G */
  414.             { 0, 0, 1, 0, 0 },        /* B */
  415.         },
  416.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PSEUDOPAL,
  417.     },
  418.     [AV_PIX_FMT_NV12] = {
  419.         .name = "nv12",
  420.         .nb_components = 3,
  421.         .log2_chroma_w = 1,
  422.         .log2_chroma_h = 1,
  423.         .comp = {
  424.             { 0, 0, 1, 0, 7 },        /* Y */
  425.             { 1, 1, 1, 0, 7 },        /* U */
  426.             { 1, 1, 2, 0, 7 },        /* V */
  427.         },
  428.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  429.     },
  430.     [AV_PIX_FMT_NV21] = {
  431.         .name = "nv21",
  432.         .nb_components = 3,
  433.         .log2_chroma_w = 1,
  434.         .log2_chroma_h = 1,
  435.         .comp = {
  436.             { 0, 0, 1, 0, 7 },        /* Y */
  437.             { 1, 1, 2, 0, 7 },        /* U */
  438.             { 1, 1, 1, 0, 7 },        /* V */
  439.         },
  440.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  441.     },
  442.     [AV_PIX_FMT_ARGB] = {
  443.         .name = "argb",
  444.         .nb_components = 4,
  445.         .log2_chroma_w = 0,
  446.         .log2_chroma_h = 0,
  447.         .comp = {
  448.             { 0, 3, 2, 0, 7 },        /* R */
  449.             { 0, 3, 3, 0, 7 },        /* G */
  450.             { 0, 3, 4, 0, 7 },        /* B */
  451.             { 0, 3, 1, 0, 7 },        /* A */
  452.         },
  453.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
  454.     },
  455.     [AV_PIX_FMT_RGBA] = {
  456.         .name = "rgba",
  457.         .nb_components = 4,
  458.         .log2_chroma_w = 0,
  459.         .log2_chroma_h = 0,
  460.         .comp = {
  461.             { 0, 3, 1, 0, 7 },        /* R */
  462.             { 0, 3, 2, 0, 7 },        /* G */
  463.             { 0, 3, 3, 0, 7 },        /* B */
  464.             { 0, 3, 4, 0, 7 },        /* A */
  465.         },
  466.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
  467.     },
  468.     [AV_PIX_FMT_ABGR] = {
  469.         .name = "abgr",
  470.         .nb_components = 4,
  471.         .log2_chroma_w = 0,
  472.         .log2_chroma_h = 0,
  473.         .comp = {
  474.             { 0, 3, 4, 0, 7 },        /* R */
  475.             { 0, 3, 3, 0, 7 },        /* G */
  476.             { 0, 3, 2, 0, 7 },        /* B */
  477.             { 0, 3, 1, 0, 7 },        /* A */
  478.         },
  479.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
  480.     },
  481.     [AV_PIX_FMT_BGRA] = {
  482.         .name = "bgra",
  483.         .nb_components = 4,
  484.         .log2_chroma_w = 0,
  485.         .log2_chroma_h = 0,
  486.         .comp = {
  487.             { 0, 3, 3, 0, 7 },        /* R */
  488.             { 0, 3, 2, 0, 7 },        /* G */
  489.             { 0, 3, 1, 0, 7 },        /* B */
  490.             { 0, 3, 4, 0, 7 },        /* A */
  491.         },
  492.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
  493.     },
  494.     [AV_PIX_FMT_0RGB] = {
  495.         .name = "0rgb",
  496.         .nb_components= 3,
  497.         .log2_chroma_w= 0,
  498.         .log2_chroma_h= 0,
  499.         .comp = {
  500.             { 0, 3, 2, 0, 7 },        /* R */
  501.             { 0, 3, 3, 0, 7 },        /* G */
  502.             { 0, 3, 4, 0, 7 },        /* B */
  503.         },
  504.         .flags = AV_PIX_FMT_FLAG_RGB,
  505.     },
  506.     [AV_PIX_FMT_RGB0] = {
  507.         .name = "rgb0",
  508.         .nb_components= 3,
  509.         .log2_chroma_w= 0,
  510.         .log2_chroma_h= 0,
  511.         .comp = {
  512.             { 0, 3, 1, 0, 7 },        /* R */
  513.             { 0, 3, 2, 0, 7 },        /* G */
  514.             { 0, 3, 3, 0, 7 },        /* B */
  515.         },
  516.         .flags = AV_PIX_FMT_FLAG_RGB,
  517.     },
  518.     [AV_PIX_FMT_0BGR] = {
  519.         .name = "0bgr",
  520.         .nb_components= 3,
  521.         .log2_chroma_w= 0,
  522.         .log2_chroma_h= 0,
  523.         .comp = {
  524.             { 0, 3, 4, 0, 7 },        /* R */
  525.             { 0, 3, 3, 0, 7 },        /* G */
  526.             { 0, 3, 2, 0, 7 },        /* B */
  527.         },
  528.         .flags = AV_PIX_FMT_FLAG_RGB,
  529.     },
  530.     [AV_PIX_FMT_BGR0] = {
  531.         .name = "bgr0",
  532.         .nb_components= 3,
  533.         .log2_chroma_w= 0,
  534.         .log2_chroma_h= 0,
  535.         .comp = {
  536.             { 0, 3, 3, 0, 7 },        /* R */
  537.             { 0, 3, 2, 0, 7 },        /* G */
  538.             { 0, 3, 1, 0, 7 },        /* B */
  539.         },
  540.         .flags = AV_PIX_FMT_FLAG_RGB,
  541.     },
  542.     [AV_PIX_FMT_GRAY16BE] = {
  543.         .name = "gray16be",
  544.         .nb_components = 1,
  545.         .log2_chroma_w = 0,
  546.         .log2_chroma_h = 0,
  547.         .comp = {
  548.             { 0, 1, 1, 0, 15 },       /* Y */
  549.         },
  550.         .flags = AV_PIX_FMT_FLAG_BE,
  551.     },
  552.     [AV_PIX_FMT_GRAY16LE] = {
  553.         .name = "gray16le",
  554.         .nb_components = 1,
  555.         .log2_chroma_w = 0,
  556.         .log2_chroma_h = 0,
  557.         .comp = {
  558.             { 0, 1, 1, 0, 15 },       /* Y */
  559.         },
  560.     },
  561.     [AV_PIX_FMT_YUV440P] = {
  562.         .name = "yuv440p",
  563.         .nb_components = 3,
  564.         .log2_chroma_w = 0,
  565.         .log2_chroma_h = 1,
  566.         .comp = {
  567.             { 0, 0, 1, 0, 7 },        /* Y */
  568.             { 1, 0, 1, 0, 7 },        /* U */
  569.             { 2, 0, 1, 0, 7 },        /* V */
  570.         },
  571.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  572.     },
  573.     [AV_PIX_FMT_YUVJ440P] = {
  574.         .name = "yuvj440p",
  575.         .nb_components = 3,
  576.         .log2_chroma_w = 0,
  577.         .log2_chroma_h = 1,
  578.         .comp = {
  579.             { 0, 0, 1, 0, 7 },        /* Y */
  580.             { 1, 0, 1, 0, 7 },        /* U */
  581.             { 2, 0, 1, 0, 7 },        /* V */
  582.         },
  583.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  584.     },
  585.     [AV_PIX_FMT_YUVA420P] = {
  586.         .name = "yuva420p",
  587.         .nb_components = 4,
  588.         .log2_chroma_w = 1,
  589.         .log2_chroma_h = 1,
  590.         .comp = {
  591.             { 0, 0, 1, 0, 7 },        /* Y */
  592.             { 1, 0, 1, 0, 7 },        /* U */
  593.             { 2, 0, 1, 0, 7 },        /* V */
  594.             { 3, 0, 1, 0, 7 },        /* A */
  595.         },
  596.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  597.     },
  598.     [AV_PIX_FMT_YUVA422P] = {
  599.         .name = "yuva422p",
  600.         .nb_components = 4,
  601.         .log2_chroma_w = 1,
  602.         .log2_chroma_h = 0,
  603.         .comp = {
  604.             { 0, 0, 1, 0, 7 },        /* Y */
  605.             { 1, 0, 1, 0, 7 },        /* U */
  606.             { 2, 0, 1, 0, 7 },        /* V */
  607.             { 3, 0, 1, 0, 7 },        /* A */
  608.         },
  609.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  610.     },
  611.     [AV_PIX_FMT_YUVA444P] = {
  612.         .name = "yuva444p",
  613.         .nb_components = 4,
  614.         .log2_chroma_w = 0,
  615.         .log2_chroma_h = 0,
  616.         .comp = {
  617.             { 0, 0, 1, 0, 7 },        /* Y */
  618.             { 1, 0, 1, 0, 7 },        /* U */
  619.             { 2, 0, 1, 0, 7 },        /* V */
  620.             { 3, 0, 1, 0, 7 },        /* A */
  621.         },
  622.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  623.     },
  624.     [AV_PIX_FMT_YUVA420P9BE] = {
  625.         .name = "yuva420p9be",
  626.         .nb_components = 4,
  627.         .log2_chroma_w = 1,
  628.         .log2_chroma_h = 1,
  629.         .comp = {
  630.             { 0, 1, 1, 0, 8 },        /* Y */
  631.             { 1, 1, 1, 0, 8 },        /* U */
  632.             { 2, 1, 1, 0, 8 },        /* V */
  633.             { 3, 1, 1, 0, 8 },        /* A */
  634.         },
  635.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  636.     },
  637.     [AV_PIX_FMT_YUVA420P9LE] = {
  638.         .name = "yuva420p9le",
  639.         .nb_components = 4,
  640.         .log2_chroma_w = 1,
  641.         .log2_chroma_h = 1,
  642.         .comp = {
  643.             { 0, 1, 1, 0, 8 },        /* Y */
  644.             { 1, 1, 1, 0, 8 },        /* U */
  645.             { 2, 1, 1, 0, 8 },        /* V */
  646.             { 3, 1, 1, 0, 8 },        /* A */
  647.         },
  648.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  649.     },
  650.     [AV_PIX_FMT_YUVA422P9BE] = {
  651.         .name = "yuva422p9be",
  652.         .nb_components = 4,
  653.         .log2_chroma_w = 1,
  654.         .log2_chroma_h = 0,
  655.         .comp = {
  656.             { 0, 1, 1, 0, 8 },        /* Y */
  657.             { 1, 1, 1, 0, 8 },        /* U */
  658.             { 2, 1, 1, 0, 8 },        /* V */
  659.             { 3, 1, 1, 0, 8 },        /* A */
  660.         },
  661.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  662.     },
  663.     [AV_PIX_FMT_YUVA422P9LE] = {
  664.         .name = "yuva422p9le",
  665.         .nb_components = 4,
  666.         .log2_chroma_w = 1,
  667.         .log2_chroma_h = 0,
  668.         .comp = {
  669.             { 0, 1, 1, 0, 8 },        /* Y */
  670.             { 1, 1, 1, 0, 8 },        /* U */
  671.             { 2, 1, 1, 0, 8 },        /* V */
  672.             { 3, 1, 1, 0, 8 },        /* A */
  673.         },
  674.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  675.     },
  676.     [AV_PIX_FMT_YUVA444P9BE] = {
  677.         .name = "yuva444p9be",
  678.         .nb_components = 4,
  679.         .log2_chroma_w = 0,
  680.         .log2_chroma_h = 0,
  681.         .comp = {
  682.             { 0, 1, 1, 0, 8 },        /* Y */
  683.             { 1, 1, 1, 0, 8 },        /* U */
  684.             { 2, 1, 1, 0, 8 },        /* V */
  685.             { 3, 1, 1, 0, 8 },        /* A */
  686.         },
  687.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  688.     },
  689.     [AV_PIX_FMT_YUVA444P9LE] = {
  690.         .name = "yuva444p9le",
  691.         .nb_components = 4,
  692.         .log2_chroma_w = 0,
  693.         .log2_chroma_h = 0,
  694.         .comp = {
  695.             { 0, 1, 1, 0, 8 },        /* Y */
  696.             { 1, 1, 1, 0, 8 },        /* U */
  697.             { 2, 1, 1, 0, 8 },        /* V */
  698.             { 3, 1, 1, 0, 8 },        /* A */
  699.         },
  700.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  701.     },
  702.     [AV_PIX_FMT_YUVA420P10BE] = {
  703.         .name = "yuva420p10be",
  704.         .nb_components = 4,
  705.         .log2_chroma_w = 1,
  706.         .log2_chroma_h = 1,
  707.         .comp = {
  708.             { 0, 1, 1, 0, 9 },        /* Y */
  709.             { 1, 1, 1, 0, 9 },        /* U */
  710.             { 2, 1, 1, 0, 9 },        /* V */
  711.             { 3, 1, 1, 0, 9 },        /* A */
  712.         },
  713.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  714.     },
  715.     [AV_PIX_FMT_YUVA420P10LE] = {
  716.         .name = "yuva420p10le",
  717.         .nb_components = 4,
  718.         .log2_chroma_w = 1,
  719.         .log2_chroma_h = 1,
  720.         .comp = {
  721.             { 0, 1, 1, 0, 9 },        /* Y */
  722.             { 1, 1, 1, 0, 9 },        /* U */
  723.             { 2, 1, 1, 0, 9 },        /* V */
  724.             { 3, 1, 1, 0, 9 },        /* A */
  725.         },
  726.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  727.     },
  728.     [AV_PIX_FMT_YUVA422P10BE] = {
  729.         .name = "yuva422p10be",
  730.         .nb_components = 4,
  731.         .log2_chroma_w = 1,
  732.         .log2_chroma_h = 0,
  733.         .comp = {
  734.             { 0, 1, 1, 0, 9 },        /* Y */
  735.             { 1, 1, 1, 0, 9 },        /* U */
  736.             { 2, 1, 1, 0, 9 },        /* V */
  737.             { 3, 1, 1, 0, 9 },        /* A */
  738.         },
  739.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  740.     },
  741.     [AV_PIX_FMT_YUVA422P10LE] = {
  742.         .name = "yuva422p10le",
  743.         .nb_components = 4,
  744.         .log2_chroma_w = 1,
  745.         .log2_chroma_h = 0,
  746.         .comp = {
  747.             { 0, 1, 1, 0, 9 },        /* Y */
  748.             { 1, 1, 1, 0, 9 },        /* U */
  749.             { 2, 1, 1, 0, 9 },        /* V */
  750.             { 3, 1, 1, 0, 9 },        /* A */
  751.         },
  752.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  753.     },
  754.     [AV_PIX_FMT_YUVA444P10BE] = {
  755.         .name = "yuva444p10be",
  756.         .nb_components = 4,
  757.         .log2_chroma_w = 0,
  758.         .log2_chroma_h = 0,
  759.         .comp = {
  760.             { 0, 1, 1, 0, 9 },        /* Y */
  761.             { 1, 1, 1, 0, 9 },        /* U */
  762.             { 2, 1, 1, 0, 9 },        /* V */
  763.             { 3, 1, 1, 0, 9 },        /* A */
  764.         },
  765.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  766.     },
  767.     [AV_PIX_FMT_YUVA444P10LE] = {
  768.         .name = "yuva444p10le",
  769.         .nb_components = 4,
  770.         .log2_chroma_w = 0,
  771.         .log2_chroma_h = 0,
  772.         .comp = {
  773.             { 0, 1, 1, 0, 9 },        /* Y */
  774.             { 1, 1, 1, 0, 9 },        /* U */
  775.             { 2, 1, 1, 0, 9 },        /* V */
  776.             { 3, 1, 1, 0, 9 },        /* A */
  777.         },
  778.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  779.     },
  780.     [AV_PIX_FMT_YUVA420P16BE] = {
  781.         .name = "yuva420p16be",
  782.         .nb_components = 4,
  783.         .log2_chroma_w = 1,
  784.         .log2_chroma_h = 1,
  785.         .comp = {
  786.             { 0, 1, 1, 0, 15 },        /* Y */
  787.             { 1, 1, 1, 0, 15 },        /* U */
  788.             { 2, 1, 1, 0, 15 },        /* V */
  789.             { 3, 1, 1, 0, 15 },        /* A */
  790.         },
  791.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  792.     },
  793.     [AV_PIX_FMT_YUVA420P16LE] = {
  794.         .name = "yuva420p16le",
  795.         .nb_components = 4,
  796.         .log2_chroma_w = 1,
  797.         .log2_chroma_h = 1,
  798.         .comp = {
  799.             { 0, 1, 1, 0, 15 },        /* Y */
  800.             { 1, 1, 1, 0, 15 },        /* U */
  801.             { 2, 1, 1, 0, 15 },        /* V */
  802.             { 3, 1, 1, 0, 15 },        /* A */
  803.         },
  804.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  805.     },
  806.     [AV_PIX_FMT_YUVA422P16BE] = {
  807.         .name = "yuva422p16be",
  808.         .nb_components = 4,
  809.         .log2_chroma_w = 1,
  810.         .log2_chroma_h = 0,
  811.         .comp = {
  812.             { 0, 1, 1, 0, 15 },        /* Y */
  813.             { 1, 1, 1, 0, 15 },        /* U */
  814.             { 2, 1, 1, 0, 15 },        /* V */
  815.             { 3, 1, 1, 0, 15 },        /* A */
  816.         },
  817.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  818.     },
  819.     [AV_PIX_FMT_YUVA422P16LE] = {
  820.         .name = "yuva422p16le",
  821.         .nb_components = 4,
  822.         .log2_chroma_w = 1,
  823.         .log2_chroma_h = 0,
  824.         .comp = {
  825.             { 0, 1, 1, 0, 15 },        /* Y */
  826.             { 1, 1, 1, 0, 15 },        /* U */
  827.             { 2, 1, 1, 0, 15 },        /* V */
  828.             { 3, 1, 1, 0, 15 },        /* A */
  829.         },
  830.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  831.     },
  832.     [AV_PIX_FMT_YUVA444P16BE] = {
  833.         .name = "yuva444p16be",
  834.         .nb_components = 4,
  835.         .log2_chroma_w = 0,
  836.         .log2_chroma_h = 0,
  837.         .comp = {
  838.             { 0, 1, 1, 0, 15 },        /* Y */
  839.             { 1, 1, 1, 0, 15 },        /* U */
  840.             { 2, 1, 1, 0, 15 },        /* V */
  841.             { 3, 1, 1, 0, 15 },        /* A */
  842.         },
  843.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  844.     },
  845.     [AV_PIX_FMT_YUVA444P16LE] = {
  846.         .name = "yuva444p16le",
  847.         .nb_components = 4,
  848.         .log2_chroma_w = 0,
  849.         .log2_chroma_h = 0,
  850.         .comp = {
  851.             { 0, 1, 1, 0, 15 },        /* Y */
  852.             { 1, 1, 1, 0, 15 },        /* U */
  853.             { 2, 1, 1, 0, 15 },        /* V */
  854.             { 3, 1, 1, 0, 15 },        /* A */
  855.         },
  856.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_ALPHA,
  857.     },
  858. #if FF_API_VDPAU
  859.     [AV_PIX_FMT_VDPAU_H264] = {
  860.         .name = "vdpau_h264",
  861.         .log2_chroma_w = 1,
  862.         .log2_chroma_h = 1,
  863.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  864.     },
  865.     [AV_PIX_FMT_VDPAU_MPEG1] = {
  866.         .name = "vdpau_mpeg1",
  867.         .log2_chroma_w = 1,
  868.         .log2_chroma_h = 1,
  869.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  870.     },
  871.     [AV_PIX_FMT_VDPAU_MPEG2] = {
  872.         .name = "vdpau_mpeg2",
  873.         .log2_chroma_w = 1,
  874.         .log2_chroma_h = 1,
  875.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  876.     },
  877.     [AV_PIX_FMT_VDPAU_WMV3] = {
  878.         .name = "vdpau_wmv3",
  879.         .log2_chroma_w = 1,
  880.         .log2_chroma_h = 1,
  881.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  882.     },
  883.     [AV_PIX_FMT_VDPAU_VC1] = {
  884.         .name = "vdpau_vc1",
  885.         .log2_chroma_w = 1,
  886.         .log2_chroma_h = 1,
  887.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  888.     },
  889.     [AV_PIX_FMT_VDPAU_MPEG4] = {
  890.         .name = "vdpau_mpeg4",
  891.         .log2_chroma_w = 1,
  892.         .log2_chroma_h = 1,
  893.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  894.     },
  895. #endif
  896.     [AV_PIX_FMT_RGB48BE] = {
  897.         .name = "rgb48be",
  898.         .nb_components = 3,
  899.         .log2_chroma_w = 0,
  900.         .log2_chroma_h = 0,
  901.         .comp = {
  902.             { 0, 5, 1, 0, 15 },       /* R */
  903.             { 0, 5, 3, 0, 15 },       /* G */
  904.             { 0, 5, 5, 0, 15 },       /* B */
  905.         },
  906.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BE,
  907.     },
  908.     [AV_PIX_FMT_RGB48LE] = {
  909.         .name = "rgb48le",
  910.         .nb_components = 3,
  911.         .log2_chroma_w = 0,
  912.         .log2_chroma_h = 0,
  913.         .comp = {
  914.             { 0, 5, 1, 0, 15 },       /* R */
  915.             { 0, 5, 3, 0, 15 },       /* G */
  916.             { 0, 5, 5, 0, 15 },       /* B */
  917.         },
  918.         .flags = AV_PIX_FMT_FLAG_RGB,
  919.     },
  920.     [AV_PIX_FMT_RGBA64BE] = {
  921.         .name = "rgba64be",
  922.         .nb_components= 4,
  923.         .log2_chroma_w= 0,
  924.         .log2_chroma_h= 0,
  925.         .comp = {
  926.             { 0, 7, 1, 0, 15 },       /* R */
  927.             { 0, 7, 3, 0, 15 },       /* G */
  928.             { 0, 7, 5, 0, 15 },       /* B */
  929.             { 0, 7, 7, 0, 15 },       /* A */
  930.         },
  931.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_ALPHA,
  932.     },
  933.     [AV_PIX_FMT_RGBA64LE] = {
  934.         .name = "rgba64le",
  935.         .nb_components= 4,
  936.         .log2_chroma_w= 0,
  937.         .log2_chroma_h= 0,
  938.         .comp = {
  939.             { 0, 7, 1, 0, 15 },       /* R */
  940.             { 0, 7, 3, 0, 15 },       /* G */
  941.             { 0, 7, 5, 0, 15 },       /* B */
  942.             { 0, 7, 7, 0, 15 },       /* A */
  943.         },
  944.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
  945.     },
  946.     [AV_PIX_FMT_RGB565BE] = {
  947.         .name = "rgb565be",
  948.         .nb_components = 3,
  949.         .log2_chroma_w = 0,
  950.         .log2_chroma_h = 0,
  951.         .comp = {
  952.             { 0, 1, 0, 3, 4 },        /* R */
  953.             { 0, 1, 1, 5, 5 },        /* G */
  954.             { 0, 1, 1, 0, 4 },        /* B */
  955.         },
  956.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
  957.     },
  958.     [AV_PIX_FMT_RGB565LE] = {
  959.         .name = "rgb565le",
  960.         .nb_components = 3,
  961.         .log2_chroma_w = 0,
  962.         .log2_chroma_h = 0,
  963.         .comp = {
  964.             { 0, 1, 2, 3, 4 },        /* R */
  965.             { 0, 1, 1, 5, 5 },        /* G */
  966.             { 0, 1, 1, 0, 4 },        /* B */
  967.         },
  968.         .flags = AV_PIX_FMT_FLAG_RGB,
  969.     },
  970.     [AV_PIX_FMT_RGB555BE] = {
  971.         .name = "rgb555be",
  972.         .nb_components = 3,
  973.         .log2_chroma_w = 0,
  974.         .log2_chroma_h = 0,
  975.         .comp = {
  976.             { 0, 1, 0, 2, 4 },        /* R */
  977.             { 0, 1, 1, 5, 4 },        /* G */
  978.             { 0, 1, 1, 0, 4 },        /* B */
  979.         },
  980.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
  981.     },
  982.     [AV_PIX_FMT_RGB555LE] = {
  983.         .name = "rgb555le",
  984.         .nb_components = 3,
  985.         .log2_chroma_w = 0,
  986.         .log2_chroma_h = 0,
  987.         .comp = {
  988.             { 0, 1, 2, 2, 4 },        /* R */
  989.             { 0, 1, 1, 5, 4 },        /* G */
  990.             { 0, 1, 1, 0, 4 },        /* B */
  991.         },
  992.         .flags = AV_PIX_FMT_FLAG_RGB,
  993.     },
  994.     [AV_PIX_FMT_RGB444BE] = {
  995.         .name = "rgb444be",
  996.         .nb_components = 3,
  997.         .log2_chroma_w = 0,
  998.         .log2_chroma_h = 0,
  999.         .comp = {
  1000.             { 0, 1, 0, 0, 3 },        /* R */
  1001.             { 0, 1, 1, 4, 3 },        /* G */
  1002.             { 0, 1, 1, 0, 3 },        /* B */
  1003.         },
  1004.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
  1005.     },
  1006.     [AV_PIX_FMT_RGB444LE] = {
  1007.         .name = "rgb444le",
  1008.         .nb_components = 3,
  1009.         .log2_chroma_w = 0,
  1010.         .log2_chroma_h = 0,
  1011.         .comp = {
  1012.             { 0, 1, 2, 0, 3 },        /* R */
  1013.             { 0, 1, 1, 4, 3 },        /* G */
  1014.             { 0, 1, 1, 0, 3 },        /* B */
  1015.         },
  1016.         .flags = AV_PIX_FMT_FLAG_RGB,
  1017.     },
  1018.     [AV_PIX_FMT_BGR48BE] = {
  1019.         .name = "bgr48be",
  1020.         .nb_components = 3,
  1021.         .log2_chroma_w = 0,
  1022.         .log2_chroma_h = 0,
  1023.         .comp = {
  1024.             { 0, 5, 5, 0, 15 },       /* R */
  1025.             { 0, 5, 3, 0, 15 },       /* G */
  1026.             { 0, 5, 1, 0, 15 },       /* B */
  1027.         },
  1028.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
  1029.     },
  1030.     [AV_PIX_FMT_BGR48LE] = {
  1031.         .name = "bgr48le",
  1032.         .nb_components = 3,
  1033.         .log2_chroma_w = 0,
  1034.         .log2_chroma_h = 0,
  1035.         .comp = {
  1036.             { 0, 5, 5, 0, 15 },       /* R */
  1037.             { 0, 5, 3, 0, 15 },       /* G */
  1038.             { 0, 5, 1, 0, 15 },       /* B */
  1039.         },
  1040.         .flags = AV_PIX_FMT_FLAG_RGB,
  1041.     },
  1042.     [AV_PIX_FMT_BGRA64BE] = {
  1043.         .name = "bgra64be",
  1044.         .nb_components= 4,
  1045.         .log2_chroma_w= 0,
  1046.         .log2_chroma_h= 0,
  1047.         .comp = {
  1048.             { 0, 7, 5, 0, 15 },       /* R */
  1049.             { 0, 7, 3, 0, 15 },       /* G */
  1050.             { 0, 7, 1, 0, 15 },       /* B */
  1051.             { 0, 7, 7, 0, 15 },       /* A */
  1052.         },
  1053.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
  1054.     },
  1055.     [AV_PIX_FMT_BGRA64LE] = {
  1056.         .name = "bgra64le",
  1057.         .nb_components= 4,
  1058.         .log2_chroma_w= 0,
  1059.         .log2_chroma_h= 0,
  1060.         .comp = {
  1061.             { 0, 7, 5, 0, 15 },       /* R */
  1062.             { 0, 7, 3, 0, 15 },       /* G */
  1063.             { 0, 7, 1, 0, 15 },       /* B */
  1064.             { 0, 7, 7, 0, 15 },       /* A */
  1065.         },
  1066.         .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
  1067.     },
  1068.     [AV_PIX_FMT_BGR565BE] = {
  1069.         .name = "bgr565be",
  1070.         .nb_components = 3,
  1071.         .log2_chroma_w = 0,
  1072.         .log2_chroma_h = 0,
  1073.         .comp = {
  1074.             { 0, 1, 1, 0, 4 },        /* R */
  1075.             { 0, 1, 1, 5, 5 },        /* G */
  1076.             { 0, 1, 0, 3, 4 },        /* B */
  1077.         },
  1078.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
  1079.     },
  1080.     [AV_PIX_FMT_BGR565LE] = {
  1081.         .name = "bgr565le",
  1082.         .nb_components = 3,
  1083.         .log2_chroma_w = 0,
  1084.         .log2_chroma_h = 0,
  1085.         .comp = {
  1086.             { 0, 1, 1, 0, 4 },        /* R */
  1087.             { 0, 1, 1, 5, 5 },        /* G */
  1088.             { 0, 1, 2, 3, 4 },        /* B */
  1089.         },
  1090.         .flags = AV_PIX_FMT_FLAG_RGB,
  1091.     },
  1092.     [AV_PIX_FMT_BGR555BE] = {
  1093.         .name = "bgr555be",
  1094.         .nb_components = 3,
  1095.         .log2_chroma_w = 0,
  1096.         .log2_chroma_h = 0,
  1097.         .comp = {
  1098.             { 0, 1, 1, 0, 4 },       /* R */
  1099.             { 0, 1, 1, 5, 4 },       /* G */
  1100.             { 0, 1, 0, 2, 4 },       /* B */
  1101.         },
  1102.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
  1103.      },
  1104.     [AV_PIX_FMT_BGR555LE] = {
  1105.         .name = "bgr555le",
  1106.         .nb_components = 3,
  1107.         .log2_chroma_w = 0,
  1108.         .log2_chroma_h = 0,
  1109.         .comp = {
  1110.             { 0, 1, 1, 0, 4 },        /* R */
  1111.             { 0, 1, 1, 5, 4 },        /* G */
  1112.             { 0, 1, 2, 2, 4 },        /* B */
  1113.         },
  1114.         .flags = AV_PIX_FMT_FLAG_RGB,
  1115.     },
  1116.     [AV_PIX_FMT_BGR444BE] = {
  1117.         .name = "bgr444be",
  1118.         .nb_components = 3,
  1119.         .log2_chroma_w = 0,
  1120.         .log2_chroma_h = 0,
  1121.         .comp = {
  1122.             { 0, 1, 1, 0, 3 },       /* R */
  1123.             { 0, 1, 1, 4, 3 },       /* G */
  1124.             { 0, 1, 0, 0, 3 },       /* B */
  1125.         },
  1126.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB,
  1127.      },
  1128.     [AV_PIX_FMT_BGR444LE] = {
  1129.         .name = "bgr444le",
  1130.         .nb_components = 3,
  1131.         .log2_chroma_w = 0,
  1132.         .log2_chroma_h = 0,
  1133.         .comp = {
  1134.             { 0, 1, 1, 0, 3 },        /* R */
  1135.             { 0, 1, 1, 4, 3 },        /* G */
  1136.             { 0, 1, 2, 0, 3 },        /* B */
  1137.         },
  1138.         .flags = AV_PIX_FMT_FLAG_RGB,
  1139.     },
  1140.     [AV_PIX_FMT_VAAPI_MOCO] = {
  1141.         .name = "vaapi_moco",
  1142.         .log2_chroma_w = 1,
  1143.         .log2_chroma_h = 1,
  1144.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  1145.     },
  1146.     [AV_PIX_FMT_VAAPI_IDCT] = {
  1147.         .name = "vaapi_idct",
  1148.         .log2_chroma_w = 1,
  1149.         .log2_chroma_h = 1,
  1150.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  1151.     },
  1152.     [AV_PIX_FMT_VAAPI_VLD] = {
  1153.         .name = "vaapi_vld",
  1154.         .log2_chroma_w = 1,
  1155.         .log2_chroma_h = 1,
  1156.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  1157.     },
  1158.     [AV_PIX_FMT_YUV420P9LE] = {
  1159.         .name = "yuv420p9le",
  1160.         .nb_components = 3,
  1161.         .log2_chroma_w = 1,
  1162.         .log2_chroma_h = 1,
  1163.         .comp = {
  1164.             { 0, 1, 1, 0, 8 },        /* Y */
  1165.             { 1, 1, 1, 0, 8 },        /* U */
  1166.             { 2, 1, 1, 0, 8 },        /* V */
  1167.         },
  1168.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1169.     },
  1170.     [AV_PIX_FMT_YUV420P9BE] = {
  1171.         .name = "yuv420p9be",
  1172.         .nb_components = 3,
  1173.         .log2_chroma_w = 1,
  1174.         .log2_chroma_h = 1,
  1175.         .comp = {
  1176.             { 0, 1, 1, 0, 8 },        /* Y */
  1177.             { 1, 1, 1, 0, 8 },        /* U */
  1178.             { 2, 1, 1, 0, 8 },        /* V */
  1179.         },
  1180.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1181.     },
  1182.     [AV_PIX_FMT_YUV420P10LE] = {
  1183.         .name = "yuv420p10le",
  1184.         .nb_components = 3,
  1185.         .log2_chroma_w = 1,
  1186.         .log2_chroma_h = 1,
  1187.         .comp = {
  1188.             { 0, 1, 1, 0, 9 },        /* Y */
  1189.             { 1, 1, 1, 0, 9 },        /* U */
  1190.             { 2, 1, 1, 0, 9 },        /* V */
  1191.         },
  1192.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1193.     },
  1194.     [AV_PIX_FMT_YUV420P10BE] = {
  1195.         .name = "yuv420p10be",
  1196.         .nb_components = 3,
  1197.         .log2_chroma_w = 1,
  1198.         .log2_chroma_h = 1,
  1199.         .comp = {
  1200.             { 0, 1, 1, 0, 9 },        /* Y */
  1201.             { 1, 1, 1, 0, 9 },        /* U */
  1202.             { 2, 1, 1, 0, 9 },        /* V */
  1203.         },
  1204.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1205.     },
  1206.     [AV_PIX_FMT_YUV420P12LE] = {
  1207.         .name = "yuv420p12le",
  1208.         .nb_components = 3,
  1209.         .log2_chroma_w = 1,
  1210.         .log2_chroma_h = 1,
  1211.         .comp = {
  1212.             { 0, 1, 1, 0, 11 },        /* Y */
  1213.             { 1, 1, 1, 0, 11 },        /* U */
  1214.             { 2, 1, 1, 0, 11 },        /* V */
  1215.         },
  1216.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1217.     },
  1218.     [AV_PIX_FMT_YUV420P12BE] = {
  1219.         .name = "yuv420p12be",
  1220.         .nb_components = 3,
  1221.         .log2_chroma_w = 1,
  1222.         .log2_chroma_h = 1,
  1223.         .comp = {
  1224.             { 0, 1, 1, 0, 11 },        /* Y */
  1225.             { 1, 1, 1, 0, 11 },        /* U */
  1226.             { 2, 1, 1, 0, 11 },        /* V */
  1227.         },
  1228.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1229.     },
  1230.     [AV_PIX_FMT_YUV420P14LE] = {
  1231.         .name = "yuv420p14le",
  1232.         .nb_components = 3,
  1233.         .log2_chroma_w = 1,
  1234.         .log2_chroma_h = 1,
  1235.         .comp = {
  1236.             { 0, 1, 1, 0, 13 },        /* Y */
  1237.             { 1, 1, 1, 0, 13 },        /* U */
  1238.             { 2, 1, 1, 0, 13 },        /* V */
  1239.         },
  1240.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1241.     },
  1242.     [AV_PIX_FMT_YUV420P14BE] = {
  1243.         .name = "yuv420p14be",
  1244.         .nb_components = 3,
  1245.         .log2_chroma_w = 1,
  1246.         .log2_chroma_h = 1,
  1247.         .comp = {
  1248.             { 0, 1, 1, 0, 13 },        /* Y */
  1249.             { 1, 1, 1, 0, 13 },        /* U */
  1250.             { 2, 1, 1, 0, 13 },        /* V */
  1251.         },
  1252.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1253.     },
  1254.     [AV_PIX_FMT_YUV420P16LE] = {
  1255.         .name = "yuv420p16le",
  1256.         .nb_components = 3,
  1257.         .log2_chroma_w = 1,
  1258.         .log2_chroma_h = 1,
  1259.         .comp = {
  1260.             { 0, 1, 1, 0, 15 },        /* Y */
  1261.             { 1, 1, 1, 0, 15 },        /* U */
  1262.             { 2, 1, 1, 0, 15 },        /* V */
  1263.         },
  1264.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1265.     },
  1266.     [AV_PIX_FMT_YUV420P16BE] = {
  1267.         .name = "yuv420p16be",
  1268.         .nb_components = 3,
  1269.         .log2_chroma_w = 1,
  1270.         .log2_chroma_h = 1,
  1271.         .comp = {
  1272.             { 0, 1, 1, 0, 15 },        /* Y */
  1273.             { 1, 1, 1, 0, 15 },        /* U */
  1274.             { 2, 1, 1, 0, 15 },        /* V */
  1275.         },
  1276.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1277.     },
  1278.     [AV_PIX_FMT_YUV422P9LE] = {
  1279.         .name = "yuv422p9le",
  1280.         .nb_components = 3,
  1281.         .log2_chroma_w = 1,
  1282.         .log2_chroma_h = 0,
  1283.         .comp = {
  1284.             { 0, 1, 1, 0, 8 },        /* Y */
  1285.             { 1, 1, 1, 0, 8 },        /* U */
  1286.             { 2, 1, 1, 0, 8 },        /* V */
  1287.         },
  1288.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1289.     },
  1290.     [AV_PIX_FMT_YUV422P9BE] = {
  1291.         .name = "yuv422p9be",
  1292.         .nb_components = 3,
  1293.         .log2_chroma_w = 1,
  1294.         .log2_chroma_h = 0,
  1295.         .comp = {
  1296.             { 0, 1, 1, 0, 8 },        /* Y */
  1297.             { 1, 1, 1, 0, 8 },        /* U */
  1298.             { 2, 1, 1, 0, 8 },        /* V */
  1299.         },
  1300.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1301.     },
  1302.     [AV_PIX_FMT_YUV422P10LE] = {
  1303.         .name = "yuv422p10le",
  1304.         .nb_components = 3,
  1305.         .log2_chroma_w = 1,
  1306.         .log2_chroma_h = 0,
  1307.         .comp = {
  1308.             { 0, 1, 1, 0, 9 },        /* Y */
  1309.             { 1, 1, 1, 0, 9 },        /* U */
  1310.             { 2, 1, 1, 0, 9 },        /* V */
  1311.         },
  1312.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1313.     },
  1314.     [AV_PIX_FMT_YUV422P10BE] = {
  1315.         .name = "yuv422p10be",
  1316.         .nb_components = 3,
  1317.         .log2_chroma_w = 1,
  1318.         .log2_chroma_h = 0,
  1319.         .comp = {
  1320.             { 0, 1, 1, 0, 9 },        /* Y */
  1321.             { 1, 1, 1, 0, 9 },        /* U */
  1322.             { 2, 1, 1, 0, 9 },        /* V */
  1323.         },
  1324.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1325.     },
  1326.     [AV_PIX_FMT_YUV422P12LE] = {
  1327.         .name = "yuv422p12le",
  1328.         .nb_components = 3,
  1329.         .log2_chroma_w = 1,
  1330.         .log2_chroma_h = 0,
  1331.         .comp = {
  1332.             { 0, 1, 1, 0, 11 },        /* Y */
  1333.             { 1, 1, 1, 0, 11 },        /* U */
  1334.             { 2, 1, 1, 0, 11 },        /* V */
  1335.         },
  1336.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1337.     },
  1338.     [AV_PIX_FMT_YUV422P12BE] = {
  1339.         .name = "yuv422p12be",
  1340.         .nb_components = 3,
  1341.         .log2_chroma_w = 1,
  1342.         .log2_chroma_h = 0,
  1343.         .comp = {
  1344.             { 0, 1, 1, 0, 11 },        /* Y */
  1345.             { 1, 1, 1, 0, 11 },        /* U */
  1346.             { 2, 1, 1, 0, 11 },        /* V */
  1347.         },
  1348.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1349.     },
  1350.     [AV_PIX_FMT_YUV422P14LE] = {
  1351.         .name = "yuv422p14le",
  1352.         .nb_components = 3,
  1353.         .log2_chroma_w = 1,
  1354.         .log2_chroma_h = 0,
  1355.         .comp = {
  1356.             { 0, 1, 1, 0, 13 },        /* Y */
  1357.             { 1, 1, 1, 0, 13 },        /* U */
  1358.             { 2, 1, 1, 0, 13 },        /* V */
  1359.         },
  1360.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1361.     },
  1362.     [AV_PIX_FMT_YUV422P14BE] = {
  1363.         .name = "yuv422p14be",
  1364.         .nb_components = 3,
  1365.         .log2_chroma_w = 1,
  1366.         .log2_chroma_h = 0,
  1367.         .comp = {
  1368.             { 0, 1, 1, 0, 13 },        /* Y */
  1369.             { 1, 1, 1, 0, 13 },        /* U */
  1370.             { 2, 1, 1, 0, 13 },        /* V */
  1371.         },
  1372.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1373.     },
  1374.     [AV_PIX_FMT_YUV422P16LE] = {
  1375.         .name = "yuv422p16le",
  1376.         .nb_components = 3,
  1377.         .log2_chroma_w = 1,
  1378.         .log2_chroma_h = 0,
  1379.         .comp = {
  1380.             { 0, 1, 1, 0, 15 },        /* Y */
  1381.             { 1, 1, 1, 0, 15 },        /* U */
  1382.             { 2, 1, 1, 0, 15 },        /* V */
  1383.         },
  1384.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1385.     },
  1386.     [AV_PIX_FMT_YUV422P16BE] = {
  1387.         .name = "yuv422p16be",
  1388.         .nb_components = 3,
  1389.         .log2_chroma_w = 1,
  1390.         .log2_chroma_h = 0,
  1391.         .comp = {
  1392.             { 0, 1, 1, 0, 15 },        /* Y */
  1393.             { 1, 1, 1, 0, 15 },        /* U */
  1394.             { 2, 1, 1, 0, 15 },        /* V */
  1395.         },
  1396.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1397.     },
  1398.     [AV_PIX_FMT_YUV444P16LE] = {
  1399.         .name = "yuv444p16le",
  1400.         .nb_components = 3,
  1401.         .log2_chroma_w = 0,
  1402.         .log2_chroma_h = 0,
  1403.         .comp = {
  1404.             { 0, 1, 1, 0, 15 },        /* Y */
  1405.             { 1, 1, 1, 0, 15 },        /* U */
  1406.             { 2, 1, 1, 0, 15 },        /* V */
  1407.         },
  1408.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1409.     },
  1410.     [AV_PIX_FMT_YUV444P16BE] = {
  1411.         .name = "yuv444p16be",
  1412.         .nb_components = 3,
  1413.         .log2_chroma_w = 0,
  1414.         .log2_chroma_h = 0,
  1415.         .comp = {
  1416.             { 0, 1, 1, 0, 15 },        /* Y */
  1417.             { 1, 1, 1, 0, 15 },        /* U */
  1418.             { 2, 1, 1, 0, 15 },        /* V */
  1419.         },
  1420.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1421.     },
  1422.     [AV_PIX_FMT_YUV444P10LE] = {
  1423.         .name = "yuv444p10le",
  1424.         .nb_components = 3,
  1425.         .log2_chroma_w = 0,
  1426.         .log2_chroma_h = 0,
  1427.         .comp = {
  1428.             { 0, 1, 1, 0, 9 },        /* Y */
  1429.             { 1, 1, 1, 0, 9 },        /* U */
  1430.             { 2, 1, 1, 0, 9 },        /* V */
  1431.         },
  1432.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1433.     },
  1434.     [AV_PIX_FMT_YUV444P10BE] = {
  1435.         .name = "yuv444p10be",
  1436.         .nb_components = 3,
  1437.         .log2_chroma_w = 0,
  1438.         .log2_chroma_h = 0,
  1439.         .comp = {
  1440.             { 0, 1, 1, 0, 9 },        /* Y */
  1441.             { 1, 1, 1, 0, 9 },        /* U */
  1442.             { 2, 1, 1, 0, 9 },        /* V */
  1443.         },
  1444.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1445.     },
  1446.     [AV_PIX_FMT_YUV444P9LE] = {
  1447.         .name = "yuv444p9le",
  1448.         .nb_components = 3,
  1449.         .log2_chroma_w = 0,
  1450.         .log2_chroma_h = 0,
  1451.         .comp = {
  1452.             { 0, 1, 1, 0, 8 },        /* Y */
  1453.             { 1, 1, 1, 0, 8 },        /* U */
  1454.             { 2, 1, 1, 0, 8 },        /* V */
  1455.         },
  1456.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1457.     },
  1458.     [AV_PIX_FMT_YUV444P9BE] = {
  1459.         .name = "yuv444p9be",
  1460.         .nb_components = 3,
  1461.         .log2_chroma_w = 0,
  1462.         .log2_chroma_h = 0,
  1463.         .comp = {
  1464.             { 0, 1, 1, 0, 8 },        /* Y */
  1465.             { 1, 1, 1, 0, 8 },        /* U */
  1466.             { 2, 1, 1, 0, 8 },        /* V */
  1467.         },
  1468.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1469.     },
  1470.     [AV_PIX_FMT_YUV444P12LE] = {
  1471.         .name = "yuv444p12le",
  1472.         .nb_components = 3,
  1473.         .log2_chroma_w = 0,
  1474.         .log2_chroma_h = 0,
  1475.         .comp = {
  1476.             { 0, 1, 1, 0, 11 },        /* Y */
  1477.             { 1, 1, 1, 0, 11 },        /* U */
  1478.             { 2, 1, 1, 0, 11 },        /* V */
  1479.         },
  1480.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1481.     },
  1482.     [AV_PIX_FMT_YUV444P12BE] = {
  1483.         .name = "yuv444p12be",
  1484.         .nb_components = 3,
  1485.         .log2_chroma_w = 0,
  1486.         .log2_chroma_h = 0,
  1487.         .comp = {
  1488.             { 0, 1, 1, 0, 11 },        /* Y */
  1489.             { 1, 1, 1, 0, 11 },        /* U */
  1490.             { 2, 1, 1, 0, 11 },        /* V */
  1491.         },
  1492.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1493.     },
  1494.     [AV_PIX_FMT_YUV444P14LE] = {
  1495.         .name = "yuv444p14le",
  1496.         .nb_components = 3,
  1497.         .log2_chroma_w = 0,
  1498.         .log2_chroma_h = 0,
  1499.         .comp = {
  1500.             { 0, 1, 1, 0, 13 },        /* Y */
  1501.             { 1, 1, 1, 0, 13 },        /* U */
  1502.             { 2, 1, 1, 0, 13 },        /* V */
  1503.         },
  1504.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1505.     },
  1506.     [AV_PIX_FMT_YUV444P14BE] = {
  1507.         .name = "yuv444p14be",
  1508.         .nb_components = 3,
  1509.         .log2_chroma_w = 0,
  1510.         .log2_chroma_h = 0,
  1511.         .comp = {
  1512.             { 0, 1, 1, 0, 13 },        /* Y */
  1513.             { 1, 1, 1, 0, 13 },        /* U */
  1514.             { 2, 1, 1, 0, 13 },        /* V */
  1515.         },
  1516.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
  1517.     },
  1518.     [AV_PIX_FMT_DXVA2_VLD] = {
  1519.         .name = "dxva2_vld",
  1520.         .log2_chroma_w = 1,
  1521.         .log2_chroma_h = 1,
  1522.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  1523.     },
  1524.     [AV_PIX_FMT_VDA_VLD] = {
  1525.         .name = "vda_vld",
  1526.         .log2_chroma_w = 1,
  1527.         .log2_chroma_h = 1,
  1528.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  1529.     },
  1530.     [AV_PIX_FMT_GRAY8A] = {
  1531.         .name = "gray8a",
  1532.         .nb_components = 2,
  1533.         .comp = {
  1534.             { 0, 1, 1, 0, 7 },        /* Y */
  1535.             { 0, 1, 2, 0, 7 },        /* A */
  1536.         },
  1537.         .flags = AV_PIX_FMT_FLAG_ALPHA,
  1538.     },
  1539.     [AV_PIX_FMT_GBRP] = {
  1540.         .name = "gbrp",
  1541.         .nb_components = 3,
  1542.         .log2_chroma_w = 0,
  1543.         .log2_chroma_h = 0,
  1544.         .comp = {
  1545.             { 2, 0, 1, 0, 7 },        /* R */
  1546.             { 0, 0, 1, 0, 7 },        /* G */
  1547.             { 1, 0, 1, 0, 7 },        /* B */
  1548.         },
  1549.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
  1550.     },
  1551.     [AV_PIX_FMT_GBRP9LE] = {
  1552.         .name = "gbrp9le",
  1553.         .nb_components = 3,
  1554.         .log2_chroma_w = 0,
  1555.         .log2_chroma_h = 0,
  1556.         .comp = {
  1557.             { 2, 1, 1, 0, 8 },        /* R */
  1558.             { 0, 1, 1, 0, 8 },        /* G */
  1559.             { 1, 1, 1, 0, 8 },        /* B */
  1560.         },
  1561.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
  1562.     },
  1563.     [AV_PIX_FMT_GBRP9BE] = {
  1564.         .name = "gbrp9be",
  1565.         .nb_components = 3,
  1566.         .log2_chroma_w = 0,
  1567.         .log2_chroma_h = 0,
  1568.         .comp = {
  1569.             { 2, 1, 1, 0, 8 },        /* R */
  1570.             { 0, 1, 1, 0, 8 },        /* G */
  1571.             { 1, 1, 1, 0, 8 },        /* B */
  1572.         },
  1573.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
  1574.     },
  1575.     [AV_PIX_FMT_GBRP10LE] = {
  1576.         .name = "gbrp10le",
  1577.         .nb_components = 3,
  1578.         .log2_chroma_w = 0,
  1579.         .log2_chroma_h = 0,
  1580.         .comp = {
  1581.             { 2, 1, 1, 0, 9 },        /* R */
  1582.             { 0, 1, 1, 0, 9 },        /* G */
  1583.             { 1, 1, 1, 0, 9 },        /* B */
  1584.         },
  1585.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
  1586.     },
  1587.     [AV_PIX_FMT_GBRP10BE] = {
  1588.         .name = "gbrp10be",
  1589.         .nb_components = 3,
  1590.         .log2_chroma_w = 0,
  1591.         .log2_chroma_h = 0,
  1592.         .comp = {
  1593.             { 2, 1, 1, 0, 9 },        /* R */
  1594.             { 0, 1, 1, 0, 9 },        /* G */
  1595.             { 1, 1, 1, 0, 9 },        /* B */
  1596.         },
  1597.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
  1598.     },
  1599.     [AV_PIX_FMT_GBRP12LE] = {
  1600.         .name = "gbrp12le",
  1601.         .nb_components = 3,
  1602.         .log2_chroma_w = 0,
  1603.         .log2_chroma_h = 0,
  1604.         .comp = {
  1605.             { 2, 1, 1, 0, 11 },        /* R */
  1606.             { 0, 1, 1, 0, 11 },        /* G */
  1607.             { 1, 1, 1, 0, 11 },        /* B */
  1608.         },
  1609.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
  1610.     },
  1611.     [AV_PIX_FMT_GBRP12BE] = {
  1612.         .name = "gbrp12be",
  1613.         .nb_components = 3,
  1614.         .log2_chroma_w = 0,
  1615.         .log2_chroma_h = 0,
  1616.         .comp = {
  1617.             { 2, 1, 1, 0, 11 },        /* R */
  1618.             { 0, 1, 1, 0, 11 },        /* G */
  1619.             { 1, 1, 1, 0, 11 },        /* B */
  1620.         },
  1621.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
  1622.     },
  1623.     [AV_PIX_FMT_GBRP14LE] = {
  1624.         .name = "gbrp14le",
  1625.         .nb_components = 3,
  1626.         .log2_chroma_w = 0,
  1627.         .log2_chroma_h = 0,
  1628.         .comp = {
  1629.             { 2, 1, 1, 0, 13 },        /* R */
  1630.             { 0, 1, 1, 0, 13 },        /* G */
  1631.             { 1, 1, 1, 0, 13 },        /* B */
  1632.         },
  1633.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
  1634.     },
  1635.     [AV_PIX_FMT_GBRP14BE] = {
  1636.         .name = "gbrp14be",
  1637.         .nb_components = 3,
  1638.         .log2_chroma_w = 0,
  1639.         .log2_chroma_h = 0,
  1640.         .comp = {
  1641.             { 2, 1, 1, 0, 13 },        /* R */
  1642.             { 0, 1, 1, 0, 13 },        /* G */
  1643.             { 1, 1, 1, 0, 13 },        /* B */
  1644.         },
  1645.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
  1646.     },
  1647.     [AV_PIX_FMT_GBRP16LE] = {
  1648.         .name = "gbrp16le",
  1649.         .nb_components = 3,
  1650.         .log2_chroma_w = 0,
  1651.         .log2_chroma_h = 0,
  1652.         .comp = {
  1653.             { 2, 1, 1, 0, 15 },       /* R */
  1654.             { 0, 1, 1, 0, 15 },       /* G */
  1655.             { 1, 1, 1, 0, 15 },       /* B */
  1656.         },
  1657.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
  1658.     },
  1659.     [AV_PIX_FMT_GBRP16BE] = {
  1660.         .name = "gbrp16be",
  1661.         .nb_components = 3,
  1662.         .log2_chroma_w = 0,
  1663.         .log2_chroma_h = 0,
  1664.         .comp = {
  1665.             { 2, 1, 1, 0, 15 },       /* R */
  1666.             { 0, 1, 1, 0, 15 },       /* G */
  1667.             { 1, 1, 1, 0, 15 },       /* B */
  1668.         },
  1669.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB,
  1670.     },
  1671.     [AV_PIX_FMT_GBRAP] = {
  1672.         .name = "gbrap",
  1673.         .nb_components = 4,
  1674.         .log2_chroma_w = 0,
  1675.         .log2_chroma_h = 0,
  1676.         .comp = {
  1677.             { 2, 0, 1, 0, 7 },        /* R */
  1678.             { 0, 0, 1, 0, 7 },        /* G */
  1679.             { 1, 0, 1, 0, 7 },        /* B */
  1680.             { 3, 0, 1, 0, 7 },        /* A */
  1681.         },
  1682.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
  1683.     },
  1684.     [AV_PIX_FMT_GBRAP16LE] = {
  1685.         .name = "gbrap16le",
  1686.         .nb_components = 4,
  1687.         .log2_chroma_w = 0,
  1688.         .log2_chroma_h = 0,
  1689.         .comp = {
  1690.             { 2, 1, 1, 0, 15 },       /* R */
  1691.             { 0, 1, 1, 0, 15 },       /* G */
  1692.             { 1, 1, 1, 0, 15 },       /* B */
  1693.             { 3, 1, 1, 0, 15 },       /* A */
  1694.         },
  1695.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
  1696.     },
  1697.     [AV_PIX_FMT_GBRAP16BE] = {
  1698.         .name = "gbrap16be",
  1699.         .nb_components = 4,
  1700.         .log2_chroma_w = 0,
  1701.         .log2_chroma_h = 0,
  1702.         .comp = {
  1703.             { 2, 1, 1, 0, 15 },       /* R */
  1704.             { 0, 1, 1, 0, 15 },       /* G */
  1705.             { 1, 1, 1, 0, 15 },       /* B */
  1706.             { 3, 1, 1, 0, 15 },       /* A */
  1707.         },
  1708.         .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA,
  1709.     },
  1710.     [AV_PIX_FMT_VDPAU] = {
  1711.         .name = "vdpau",
  1712.         .log2_chroma_w = 1,
  1713.         .log2_chroma_h = 1,
  1714.         .flags = AV_PIX_FMT_FLAG_HWACCEL,
  1715.     },
  1716.     [AV_PIX_FMT_XYZ12LE] = {
  1717.         .name = "xyz12le",
  1718.         .nb_components = 3,
  1719.         .log2_chroma_w = 0,
  1720.         .log2_chroma_h = 0,
  1721.         .comp = {
  1722.             { 0, 5, 1, 4, 11 },       /* X */
  1723.             { 0, 5, 3, 4, 11 },       /* Y */
  1724.             { 0, 5, 5, 4, 11 },       /* Z */
  1725.       },
  1726.       /*.flags = -- not used*/
  1727.     },
  1728.     [AV_PIX_FMT_XYZ12BE] = {
  1729.         .name = "xyz12be",
  1730.         .nb_components = 3,
  1731.         .log2_chroma_w = 0,
  1732.         .log2_chroma_h = 0,
  1733.         .comp = {
  1734.             { 0, 5, 1, 4, 11 },       /* X */
  1735.             { 0, 5, 3, 4, 11 },       /* Y */
  1736.             { 0, 5, 5, 4, 11 },       /* Z */
  1737.        },
  1738.         .flags = AV_PIX_FMT_FLAG_BE,
  1739.     },
  1740.  
  1741. #define BAYER8_DESC_COMMON \
  1742.         .nb_components= 3, \
  1743.         .log2_chroma_w= 0, \
  1744.         .log2_chroma_h= 0, \
  1745.         .comp = {          \
  1746.             {0,0,0,0,1},   \
  1747.             {0,0,0,0,3},   \
  1748.             {0,0,0,0,1},   \
  1749.         },                 \
  1750.  
  1751. #define BAYER16_DESC_COMMON \
  1752.         .nb_components= 3, \
  1753.         .log2_chroma_w= 0, \
  1754.         .log2_chroma_h= 0, \
  1755.         .comp = {          \
  1756.             {0,1,0,0, 3},  \
  1757.             {0,1,0,0, 7},  \
  1758.             {0,1,0,0, 3},  \
  1759.         },                 \
  1760.  
  1761.     [AV_PIX_FMT_BAYER_BGGR8] = {
  1762.         .name = "bayer_bggr8",
  1763.         BAYER8_DESC_COMMON
  1764.     },
  1765.     [AV_PIX_FMT_BAYER_BGGR16LE] = {
  1766.         .name = "bayer_bggr16le",
  1767.         BAYER16_DESC_COMMON
  1768.     },
  1769.     [AV_PIX_FMT_BAYER_BGGR16BE] = {
  1770.         .name = "bayer_bggr16be",
  1771.         BAYER16_DESC_COMMON
  1772.     },
  1773.     [AV_PIX_FMT_BAYER_RGGB8] = {
  1774.         .name = "bayer_rggb8",
  1775.         BAYER8_DESC_COMMON
  1776.     },
  1777.     [AV_PIX_FMT_BAYER_RGGB16LE] = {
  1778.         .name = "bayer_rggb16le",
  1779.         BAYER16_DESC_COMMON
  1780.     },
  1781.     [AV_PIX_FMT_BAYER_RGGB16BE] = {
  1782.         .name = "bayer_rggb16be",
  1783.         BAYER16_DESC_COMMON
  1784.     },
  1785.     [AV_PIX_FMT_BAYER_GBRG8] = {
  1786.         .name = "bayer_gbrg8",
  1787.         BAYER8_DESC_COMMON
  1788.     },
  1789.     [AV_PIX_FMT_BAYER_GBRG16LE] = {
  1790.         .name = "bayer_gbrg16le",
  1791.         BAYER16_DESC_COMMON
  1792.     },
  1793.     [AV_PIX_FMT_BAYER_GBRG16BE] = {
  1794.         .name = "bayer_gbrg16be",
  1795.         BAYER16_DESC_COMMON
  1796.     },
  1797.     [AV_PIX_FMT_BAYER_GRBG8] = {
  1798.         .name = "bayer_grbg8",
  1799.         BAYER8_DESC_COMMON
  1800.     },
  1801.     [AV_PIX_FMT_BAYER_GRBG16LE] = {
  1802.         .name = "bayer_grbg16le",
  1803.         BAYER16_DESC_COMMON
  1804.     },
  1805.     [AV_PIX_FMT_BAYER_GRBG16BE] = {
  1806.         .name = "bayer_grbg16be",
  1807.         BAYER16_DESC_COMMON
  1808.     },
  1809.     [AV_PIX_FMT_NV16] = {
  1810.         .name = "nv16",
  1811.         .nb_components = 3,
  1812.         .log2_chroma_w = 1,
  1813.         .log2_chroma_h = 0,
  1814.         .comp = {
  1815.             { 0, 0, 1, 0, 7 },        /* Y */
  1816.             { 1, 1, 1, 0, 7 },        /* U */
  1817.             { 1, 1, 2, 0, 7 },        /* V */
  1818.         },
  1819.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1820.     },
  1821.     [AV_PIX_FMT_NV20LE] = {
  1822.         .name = "nv20le",
  1823.         .nb_components = 3,
  1824.         .log2_chroma_w = 1,
  1825.         .log2_chroma_h = 0,
  1826.         .comp = {
  1827.             { 0, 1, 1, 0, 9 },        /* Y */
  1828.             { 1, 3, 1, 0, 9 },        /* U */
  1829.             { 1, 3, 3, 0, 9 },        /* V */
  1830.         },
  1831.         .flags = AV_PIX_FMT_FLAG_PLANAR,
  1832.     },
  1833.     [AV_PIX_FMT_NV20BE] = {
  1834.         .name = "nv20be",
  1835.         .nb_components = 3,
  1836.         .log2_chroma_w = 1,
  1837.         .log2_chroma_h = 0,
  1838.         .comp = {
  1839.             { 0, 1, 1, 0, 9 },        /* Y */
  1840.             { 1, 3, 1, 0, 9 },        /* U */
  1841.             { 1, 3, 3, 0, 9 },        /* V */
  1842.         },
  1843.         .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_BE,
  1844.     },
  1845. };
  1846.  
  1847. FF_DISABLE_DEPRECATION_WARNINGS
  1848. static enum AVPixelFormat get_pix_fmt_internal(const char *name)
  1849. {
  1850.     enum AVPixelFormat pix_fmt;
  1851.  
  1852.     for (pix_fmt = 0; pix_fmt < AV_PIX_FMT_NB; pix_fmt++)
  1853.         if (av_pix_fmt_descriptors[pix_fmt].name &&
  1854.             !strcmp(av_pix_fmt_descriptors[pix_fmt].name, name))
  1855.             return pix_fmt;
  1856.  
  1857.     return AV_PIX_FMT_NONE;
  1858. }
  1859.  
  1860. const char *av_get_pix_fmt_name(enum AVPixelFormat pix_fmt)
  1861. {
  1862.     return (unsigned)pix_fmt < AV_PIX_FMT_NB ?
  1863.         av_pix_fmt_descriptors[pix_fmt].name : NULL;
  1864. }
  1865.  
  1866. #if HAVE_BIGENDIAN
  1867. #   define X_NE(be, le) be
  1868. #else
  1869. #   define X_NE(be, le) le
  1870. #endif
  1871.  
  1872. enum AVPixelFormat av_get_pix_fmt(const char *name)
  1873. {
  1874.     enum AVPixelFormat pix_fmt;
  1875.  
  1876.     if (!strcmp(name, "rgb32"))
  1877.         name = X_NE("argb", "bgra");
  1878.     else if (!strcmp(name, "bgr32"))
  1879.         name = X_NE("abgr", "rgba");
  1880.  
  1881.     pix_fmt = get_pix_fmt_internal(name);
  1882.     if (pix_fmt == AV_PIX_FMT_NONE) {
  1883.         char name2[32];
  1884.  
  1885.         snprintf(name2, sizeof(name2), "%s%s", name, X_NE("be", "le"));
  1886.         pix_fmt = get_pix_fmt_internal(name2);
  1887.     }
  1888.     return pix_fmt;
  1889. }
  1890.  
  1891. int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
  1892. {
  1893.     int c, bits = 0;
  1894.     int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
  1895.  
  1896.     for (c = 0; c < pixdesc->nb_components; c++) {
  1897.         int s = c == 1 || c == 2 ? 0 : log2_pixels;
  1898.         bits += (pixdesc->comp[c].depth_minus1 + 1) << s;
  1899.     }
  1900.  
  1901.     return bits >> log2_pixels;
  1902. }
  1903.  
  1904. int av_get_padded_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
  1905. {
  1906.     int c, bits = 0;
  1907.     int log2_pixels = pixdesc->log2_chroma_w + pixdesc->log2_chroma_h;
  1908.     int steps[4] = {0};
  1909.  
  1910.     for (c = 0; c < pixdesc->nb_components; c++) {
  1911.         const AVComponentDescriptor *comp = &pixdesc->comp[c];
  1912.         int s = c == 1 || c == 2 ? 0 : log2_pixels;
  1913.         steps[comp->plane] = (comp->step_minus1 + 1) << s;
  1914.     }
  1915.     for (c = 0; c < 4; c++)
  1916.         bits += steps[c];
  1917.  
  1918.     if(!(pixdesc->flags & AV_PIX_FMT_FLAG_BITSTREAM))
  1919.         bits *= 8;
  1920.  
  1921.     return bits >> log2_pixels;
  1922. }
  1923.  
  1924. char *av_get_pix_fmt_string (char *buf, int buf_size, enum AVPixelFormat pix_fmt)
  1925. {
  1926.     /* print header */
  1927.     if (pix_fmt < 0) {
  1928.        snprintf (buf, buf_size, "name" " nb_components" " nb_bits");
  1929.     } else {
  1930.         const AVPixFmtDescriptor *pixdesc = &av_pix_fmt_descriptors[pix_fmt];
  1931.         snprintf(buf, buf_size, "%-11s %7d %10d", pixdesc->name,
  1932.                  pixdesc->nb_components, av_get_bits_per_pixel(pixdesc));
  1933.     }
  1934.  
  1935.     return buf;
  1936. }
  1937.  
  1938. const AVPixFmtDescriptor *av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
  1939. {
  1940.     if (pix_fmt < 0 || pix_fmt >= AV_PIX_FMT_NB)
  1941.         return NULL;
  1942.     return &av_pix_fmt_descriptors[pix_fmt];
  1943. }
  1944.  
  1945. const AVPixFmtDescriptor *av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev)
  1946. {
  1947.     if (!prev)
  1948.         return &av_pix_fmt_descriptors[0];
  1949.     while (prev - av_pix_fmt_descriptors < FF_ARRAY_ELEMS(av_pix_fmt_descriptors) - 1) {
  1950.         prev++;
  1951.         if (prev->name)
  1952.             return prev;
  1953.     }
  1954.     return NULL;
  1955. }
  1956.  
  1957. enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc)
  1958. {
  1959.     if (desc < av_pix_fmt_descriptors ||
  1960.         desc >= av_pix_fmt_descriptors + FF_ARRAY_ELEMS(av_pix_fmt_descriptors))
  1961.         return AV_PIX_FMT_NONE;
  1962.  
  1963.     return desc - av_pix_fmt_descriptors;
  1964. }
  1965. FF_ENABLE_DEPRECATION_WARNINGS
  1966.  
  1967. int av_pix_fmt_get_chroma_sub_sample(enum AVPixelFormat pix_fmt,
  1968.                                      int *h_shift, int *v_shift)
  1969. {
  1970.     const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
  1971.     if (!desc)
  1972.         return AVERROR(ENOSYS);
  1973.     *h_shift = desc->log2_chroma_w;
  1974.     *v_shift = desc->log2_chroma_h;
  1975.  
  1976.     return 0;
  1977. }
  1978.  
  1979. int av_pix_fmt_count_planes(enum AVPixelFormat pix_fmt)
  1980. {
  1981.     const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
  1982.     int i, planes[4] = { 0 }, ret = 0;
  1983.  
  1984.     if (!desc)
  1985.         return AVERROR(EINVAL);
  1986.  
  1987.     for (i = 0; i < desc->nb_components; i++)
  1988.         planes[desc->comp[i].plane] = 1;
  1989.     for (i = 0; i < FF_ARRAY_ELEMS(planes); i++)
  1990.         ret += planes[i];
  1991.     return ret;
  1992. }
  1993.  
  1994. void ff_check_pixfmt_descriptors(void){
  1995.     int i, j;
  1996.  
  1997.     for (i=0; i<FF_ARRAY_ELEMS(av_pix_fmt_descriptors); i++) {
  1998.         const AVPixFmtDescriptor *d = &av_pix_fmt_descriptors[i];
  1999.         uint8_t fill[4][8+6+3] = {{0}};
  2000.         uint8_t *data[4] = {fill[0], fill[1], fill[2], fill[3]};
  2001.         int linesize[4] = {0,0,0,0};
  2002.         uint16_t tmp[2];
  2003.  
  2004.         if (!d->name && !d->nb_components && !d->log2_chroma_w && !d->log2_chroma_h && !d->flags)
  2005.             continue;
  2006. //         av_log(NULL, AV_LOG_DEBUG, "Checking: %s\n", d->name);
  2007.         av_assert0(d->log2_chroma_w <= 3);
  2008.         av_assert0(d->log2_chroma_h <= 3);
  2009.         av_assert0(d->nb_components <= 4);
  2010.         av_assert0(d->name && d->name[0]);
  2011.         av_assert0((d->nb_components==4 || d->nb_components==2) == !!(d->flags & AV_PIX_FMT_FLAG_ALPHA));
  2012.         av_assert2(av_get_pix_fmt(d->name) == i);
  2013.  
  2014.         for (j=0; j<FF_ARRAY_ELEMS(d->comp); j++) {
  2015.             const AVComponentDescriptor *c = &d->comp[j];
  2016.             if(j>=d->nb_components) {
  2017.                 av_assert0(!c->plane && !c->step_minus1 && !c->offset_plus1 && !c->shift && !c->depth_minus1);
  2018.                 continue;
  2019.             }
  2020.             if (d->flags & AV_PIX_FMT_FLAG_BITSTREAM) {
  2021.                 av_assert0(c->step_minus1 >= c->depth_minus1);
  2022.             } else {
  2023.                 av_assert0(8*(c->step_minus1+1) >= c->depth_minus1+1);
  2024.             }
  2025.             if (!strncmp(d->name, "bayer_", 6))
  2026.                 continue;
  2027.             av_read_image_line(tmp, (void*)data, linesize, d, 0, 0, j, 2, 0);
  2028.             av_assert0(tmp[0] == 0 && tmp[1] == 0);
  2029.             tmp[0] = tmp[1] = (1<<(c->depth_minus1 + 1)) - 1;
  2030.             av_write_image_line(tmp, data, linesize, d, 0, 0, j, 2);
  2031.         }
  2032.     }
  2033. }
  2034.  
  2035.  
  2036. enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt)
  2037. {
  2038.     const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt);
  2039.     char name[16];
  2040.     int i;
  2041.  
  2042.     if (!desc || strlen(desc->name) < 2)
  2043.         return AV_PIX_FMT_NONE;
  2044.     av_strlcpy(name, desc->name, sizeof(name));
  2045.     i = strlen(name) - 2;
  2046.     if (strcmp(name + i, "be") && strcmp(name + i, "le"))
  2047.         return AV_PIX_FMT_NONE;
  2048.  
  2049.     name[i] ^= 'b' ^ 'l';
  2050.  
  2051.     return get_pix_fmt_internal(name);
  2052. }
  2053.