LCOV - code coverage report
Current view: top level - libswscale/tests - pixdesc_query.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 26 26 100.0 %
Date: 2017-10-22 09:09:27 Functions: 2 2 100.0 %

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2017 Clément Bœsch <u pkh me>
       3             :  *
       4             :  * This file is part of FFmpeg.
       5             :  *
       6             :  * FFmpeg is free software; you can redistribute it and/or
       7             :  * modify it under the terms of the GNU Lesser General Public
       8             :  * License as published by the Free Software Foundation; either
       9             :  * version 2.1 of the License, or (at your option) any later version.
      10             :  *
      11             :  * FFmpeg is distributed in the hope that it will be useful,
      12             :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      13             :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
      14             :  * Lesser General Public License for more details.
      15             :  *
      16             :  * You should have received a copy of the GNU Lesser General Public
      17             :  * License along with FFmpeg; if not, write to the Free Software
      18             :  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
      19             :  */
      20             : 
      21             : #include <stdlib.h>
      22             : 
      23             : #include "libavutil/mem.h"
      24             : #include "libswscale/swscale_internal.h"
      25             : 
      26             : static const struct {
      27             :     const char *class;
      28             :     int (*cond)(enum AVPixelFormat pix_fmt);
      29             : } query_tab[] = {
      30             :     {"is16BPS",     is16BPS},
      31             :     {"isNBPS",      isNBPS},
      32             :     {"isBE",        isBE},
      33             :     {"isYUV",       isYUV},
      34             :     {"isPlanarYUV", isPlanarYUV},
      35             :     {"isRGB",       isRGB},
      36             :     {"Gray",        isGray},
      37             :     {"RGBinInt",    isRGBinInt},
      38             :     {"BGRinInt",    isBGRinInt},
      39             :     {"Bayer",       isBayer},
      40             :     {"AnyRGB",      isAnyRGB},
      41             :     {"ALPHA",       isALPHA},
      42             :     {"Packed",      isPacked},
      43             :     {"Planar",      isPlanar},
      44             :     {"PackedRGB",   isPackedRGB},
      45             :     {"PlanarRGB",   isPlanarRGB},
      46             :     {"usePal",      usePal},
      47             : };
      48             : 
      49        3407 : static int cmp_str(const void *a, const void *b)
      50             : {
      51        3407 :     const char *s1 = *(const char **)a;
      52        3407 :     const char *s2 = *(const char **)b;
      53        3407 :     return strcmp(s1, s2);
      54             : }
      55             : 
      56           1 : int main(void)
      57             : {
      58             :     int i, j;
      59             : 
      60          18 :     for (i = 0; i < FF_ARRAY_ELEMS(query_tab); i++) {
      61          17 :         const char **pix_fmts = NULL;
      62          17 :         int nb_pix_fmts = 0;
      63          17 :         const AVPixFmtDescriptor *pix_desc = NULL;
      64             : 
      65        3162 :         while ((pix_desc = av_pix_fmt_desc_next(pix_desc))) {
      66        3128 :             enum AVPixelFormat pix_fmt = av_pix_fmt_desc_get_id(pix_desc);
      67        3128 :             if (query_tab[i].cond(pix_fmt)) {
      68         798 :                 const char *pix_name = pix_desc->name;
      69         798 :                 if      (pix_fmt == AV_PIX_FMT_RGB32)   pix_name = "rgb32";
      70         792 :                 else if (pix_fmt == AV_PIX_FMT_RGB32_1) pix_name = "rgb32_1";
      71         786 :                 else if (pix_fmt == AV_PIX_FMT_BGR32)   pix_name = "bgr32";
      72         780 :                 else if (pix_fmt == AV_PIX_FMT_BGR32_1) pix_name = "bgr32_1";
      73             : 
      74         798 :                 av_dynarray_add(&pix_fmts, &nb_pix_fmts, (void *)pix_name);
      75             :             }
      76             :         }
      77             : 
      78          17 :         if (pix_fmts) {
      79          17 :             qsort(pix_fmts, nb_pix_fmts, sizeof(*pix_fmts), cmp_str);
      80             : 
      81          17 :             printf("%s:\n", query_tab[i].class);
      82         815 :             for (j = 0; j < nb_pix_fmts; j++)
      83         798 :                 printf("  %s\n", pix_fmts[j]);
      84          17 :             printf("\n");
      85             : 
      86          17 :             av_free(pix_fmts);
      87             :         }
      88             :     }
      89           1 :     return 0;
      90             : }

Generated by: LCOV version 1.13