3 * Copyright (c) 2001 Fabrice Bellard
5 * This file is part of FFmpeg.
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.
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.
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
29 #include "raw_pix_fmt_tags.h"
31 unsigned int avcodec_pix_fmt_to_codec_tag(enum AVPixelFormat fmt
)
33 const PixelFormatTag
*tags
= raw_pix_fmt_tags
;
34 while (tags
->pix_fmt
>= 0) {
35 if (tags
->pix_fmt
== fmt
)
42 static const PixelFormatTag pix_fmt_bps_avi
[] = {
43 { AV_PIX_FMT_PAL8
, 1 },
44 { AV_PIX_FMT_PAL8
, 2 },
45 { AV_PIX_FMT_PAL8
, 4 },
46 { AV_PIX_FMT_PAL8
, 8 },
47 { AV_PIX_FMT_RGB444LE
, 12 },
48 { AV_PIX_FMT_RGB555LE
, 15 },
49 { AV_PIX_FMT_RGB555LE
, 16 },
50 { AV_PIX_FMT_BGR24
, 24 },
51 { AV_PIX_FMT_BGRA
, 32 },
52 { AV_PIX_FMT_NONE
, 0 },
55 static const PixelFormatTag pix_fmt_bps_mov
[] = {
56 { AV_PIX_FMT_PAL8
, 1 },
57 { AV_PIX_FMT_PAL8
, 2 },
58 { AV_PIX_FMT_PAL8
, 4 },
59 { AV_PIX_FMT_PAL8
, 8 },
60 { AV_PIX_FMT_RGB555BE
, 16 },
61 { AV_PIX_FMT_RGB24
, 24 },
62 { AV_PIX_FMT_ARGB
, 32 },
63 { AV_PIX_FMT_PAL8
, 33 },
64 { AV_PIX_FMT_NONE
, 0 },
67 static enum AVPixelFormat
find_pix_fmt(const PixelFormatTag
*tags
,
70 while (tags
->pix_fmt
!= AV_PIX_FMT_NONE
) {
71 if (tags
->fourcc
== fourcc
)
75 return AV_PIX_FMT_NONE
;
78 enum AVPixelFormat
avpriv_pix_fmt_find(enum PixelFormatTagLists list
,
81 const PixelFormatTag
*tags
;
84 case PIX_FMT_LIST_RAW
:
85 tags
= raw_pix_fmt_tags
;
87 case PIX_FMT_LIST_AVI
:
88 tags
= pix_fmt_bps_avi
;
90 case PIX_FMT_LIST_MOV
:
91 tags
= pix_fmt_bps_mov
;
94 return find_pix_fmt(tags
, fourcc
);