Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavcodec
raw.c
Go to the documentation of this file.
1
/*
2
* Raw Video Codec
3
* Copyright (c) 2001 Fabrice Bellard
4
*
5
* This file is part of Libav.
6
*
7
* Libav 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
* Libav 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 Libav; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
27
#include "
avcodec.h
"
28
#include "
raw.h
"
29
30
const
PixelFormatTag
ff_raw_pix_fmt_tags
[] = {
31
{
PIX_FMT_YUV420P
,
MKTAG
(
'I'
,
'4'
,
'2'
,
'0'
) },
/* Planar formats */
32
{
PIX_FMT_YUV420P
,
MKTAG
(
'I'
,
'Y'
,
'U'
,
'V'
) },
33
{
PIX_FMT_YUV420P
,
MKTAG
(
'Y'
,
'V'
,
'1'
,
'2'
) },
34
{
PIX_FMT_YUV410P
,
MKTAG
(
'Y'
,
'U'
,
'V'
,
'9'
) },
35
{
PIX_FMT_YUV410P
,
MKTAG
(
'Y'
,
'V'
,
'U'
,
'9'
) },
36
{
PIX_FMT_YUV411P
,
MKTAG
(
'Y'
,
'4'
,
'1'
,
'B'
) },
37
{
PIX_FMT_YUV422P
,
MKTAG
(
'Y'
,
'4'
,
'2'
,
'B'
) },
38
{
PIX_FMT_YUV422P
,
MKTAG
(
'P'
,
'4'
,
'2'
,
'2'
) },
39
{
PIX_FMT_YUV422P
,
MKTAG
(
'Y'
,
'V'
,
'1'
,
'6'
) },
40
/* yuvjXXX formats are deprecated hacks specific to libav*,
41
they are identical to yuvXXX */
42
{
PIX_FMT_YUVJ420P
,
MKTAG
(
'I'
,
'4'
,
'2'
,
'0'
) },
/* Planar formats */
43
{
PIX_FMT_YUVJ420P
,
MKTAG
(
'I'
,
'Y'
,
'U'
,
'V'
) },
44
{
PIX_FMT_YUVJ420P
,
MKTAG
(
'Y'
,
'V'
,
'1'
,
'2'
) },
45
{
PIX_FMT_YUVJ422P
,
MKTAG
(
'Y'
,
'4'
,
'2'
,
'B'
) },
46
{
PIX_FMT_YUVJ422P
,
MKTAG
(
'P'
,
'4'
,
'2'
,
'2'
) },
47
{
PIX_FMT_GRAY8
,
MKTAG
(
'Y'
,
'8'
,
'0'
,
'0'
) },
48
{
PIX_FMT_GRAY8
,
MKTAG
(
'Y'
,
'8'
,
' '
,
' '
) },
49
50
{
PIX_FMT_YUYV422
,
MKTAG
(
'Y'
,
'U'
,
'Y'
,
'2'
) },
/* Packed formats */
51
{
PIX_FMT_YUYV422
,
MKTAG
(
'Y'
,
'4'
,
'2'
,
'2'
) },
52
{
PIX_FMT_YUYV422
,
MKTAG
(
'V'
,
'4'
,
'2'
,
'2'
) },
53
{
PIX_FMT_YUYV422
,
MKTAG
(
'V'
,
'Y'
,
'U'
,
'Y'
) },
54
{
PIX_FMT_YUYV422
,
MKTAG
(
'Y'
,
'U'
,
'N'
,
'V'
) },
55
{
PIX_FMT_UYVY422
,
MKTAG
(
'U'
,
'Y'
,
'V'
,
'Y'
) },
56
{
PIX_FMT_UYVY422
,
MKTAG
(
'H'
,
'D'
,
'Y'
,
'C'
) },
57
{
PIX_FMT_UYVY422
,
MKTAG
(
'U'
,
'Y'
,
'N'
,
'V'
) },
58
{
PIX_FMT_UYVY422
,
MKTAG
(
'U'
,
'Y'
,
'N'
,
'Y'
) },
59
{
PIX_FMT_UYVY422
,
MKTAG
(
'u'
,
'y'
,
'v'
,
'1'
) },
60
{
PIX_FMT_UYVY422
,
MKTAG
(
'2'
,
'V'
,
'u'
,
'1'
) },
61
{
PIX_FMT_UYVY422
,
MKTAG
(
'A'
,
'V'
,
'R'
,
'n'
) },
/* Avid AVI Codec 1:1 */
62
{
PIX_FMT_UYVY422
,
MKTAG
(
'A'
,
'V'
,
'1'
,
'x'
) },
/* Avid 1:1x */
63
{
PIX_FMT_UYVY422
,
MKTAG
(
'A'
,
'V'
,
'u'
,
'p'
) },
64
{
PIX_FMT_UYVY422
,
MKTAG
(
'V'
,
'D'
,
'T'
,
'Z'
) },
/* SoftLab-NSK VideoTizer */
65
{
PIX_FMT_UYVY422
,
MKTAG
(
'a'
,
'u'
,
'v'
,
'2'
) },
66
{
PIX_FMT_UYYVYY411
,
MKTAG
(
'Y'
,
'4'
,
'1'
,
'1'
) },
67
{
PIX_FMT_GRAY8
,
MKTAG
(
'G'
,
'R'
,
'E'
,
'Y'
) },
68
{
PIX_FMT_NV12
,
MKTAG
(
'N'
,
'V'
,
'1'
,
'2'
) },
69
{
PIX_FMT_NV21
,
MKTAG
(
'N'
,
'V'
,
'2'
,
'1'
) },
70
71
/* nut */
72
{
PIX_FMT_RGB555LE
,
MKTAG
(
'R'
,
'G'
,
'B'
, 15) },
73
{
PIX_FMT_BGR555LE
,
MKTAG
(
'B'
,
'G'
,
'R'
, 15) },
74
{
PIX_FMT_RGB565LE
,
MKTAG
(
'R'
,
'G'
,
'B'
, 16) },
75
{
PIX_FMT_BGR565LE
,
MKTAG
(
'B'
,
'G'
,
'R'
, 16) },
76
{
PIX_FMT_RGB555BE
,
MKTAG
(15 ,
'B'
,
'G'
,
'R'
) },
77
{
PIX_FMT_BGR555BE
,
MKTAG
(15 ,
'R'
,
'G'
,
'B'
) },
78
{
PIX_FMT_RGB565BE
,
MKTAG
(16 ,
'B'
,
'G'
,
'R'
) },
79
{
PIX_FMT_BGR565BE
,
MKTAG
(16 ,
'R'
,
'G'
,
'B'
) },
80
{
PIX_FMT_RGB444LE
,
MKTAG
(
'R'
,
'G'
,
'B'
, 12) },
81
{
PIX_FMT_BGR444LE
,
MKTAG
(
'B'
,
'G'
,
'R'
, 12) },
82
{
PIX_FMT_RGB444BE
,
MKTAG
(12 ,
'B'
,
'G'
,
'R'
) },
83
{
PIX_FMT_BGR444BE
,
MKTAG
(12 ,
'R'
,
'G'
,
'B'
) },
84
{
PIX_FMT_RGBA
,
MKTAG
(
'R'
,
'G'
,
'B'
,
'A'
) },
85
{
PIX_FMT_BGRA
,
MKTAG
(
'B'
,
'G'
,
'R'
,
'A'
) },
86
{
PIX_FMT_ABGR
,
MKTAG
(
'A'
,
'B'
,
'G'
,
'R'
) },
87
{
PIX_FMT_ARGB
,
MKTAG
(
'A'
,
'R'
,
'G'
,
'B'
) },
88
{
PIX_FMT_RGB24
,
MKTAG
(
'R'
,
'G'
,
'B'
, 24 ) },
89
{
PIX_FMT_BGR24
,
MKTAG
(
'B'
,
'G'
,
'R'
, 24 ) },
90
{
PIX_FMT_YUV411P
,
MKTAG
(
'4'
,
'1'
,
'1'
,
'P'
) },
91
{
PIX_FMT_YUV422P
,
MKTAG
(
'4'
,
'2'
,
'2'
,
'P'
) },
92
{
PIX_FMT_YUVJ422P
,
MKTAG
(
'4'
,
'2'
,
'2'
,
'P'
) },
93
{
PIX_FMT_YUV440P
,
MKTAG
(
'4'
,
'4'
,
'0'
,
'P'
) },
94
{
PIX_FMT_YUVJ440P
,
MKTAG
(
'4'
,
'4'
,
'0'
,
'P'
) },
95
{
PIX_FMT_YUV444P
,
MKTAG
(
'4'
,
'4'
,
'4'
,
'P'
) },
96
{
PIX_FMT_YUVJ444P
,
MKTAG
(
'4'
,
'4'
,
'4'
,
'P'
) },
97
{
PIX_FMT_MONOWHITE
,
MKTAG
(
'B'
,
'1'
,
'W'
,
'0'
) },
98
{
PIX_FMT_MONOBLACK
,
MKTAG
(
'B'
,
'0'
,
'W'
,
'1'
) },
99
{
PIX_FMT_BGR8
,
MKTAG
(
'B'
,
'G'
,
'R'
, 8 ) },
100
{
PIX_FMT_RGB8
,
MKTAG
(
'R'
,
'G'
,
'B'
, 8 ) },
101
{
PIX_FMT_BGR4
,
MKTAG
(
'B'
,
'G'
,
'R'
, 4 ) },
102
{
PIX_FMT_RGB4
,
MKTAG
(
'R'
,
'G'
,
'B'
, 4 ) },
103
{
PIX_FMT_RGB4_BYTE
,
MKTAG
(
'B'
,
'4'
,
'B'
,
'Y'
) },
104
{
PIX_FMT_BGR4_BYTE
,
MKTAG
(
'R'
,
'4'
,
'B'
,
'Y'
) },
105
{
PIX_FMT_RGB48LE
,
MKTAG
(
'R'
,
'G'
,
'B'
, 48 ) },
106
{
PIX_FMT_RGB48BE
,
MKTAG
( 48,
'R'
,
'G'
,
'B'
) },
107
{
PIX_FMT_BGR48LE
,
MKTAG
(
'B'
,
'G'
,
'R'
, 48 ) },
108
{
PIX_FMT_BGR48BE
,
MKTAG
( 48,
'B'
,
'G'
,
'R'
) },
109
{
PIX_FMT_GRAY16LE
,
MKTAG
(
'Y'
,
'1'
, 0 , 16 ) },
110
{
PIX_FMT_GRAY16BE
,
MKTAG
(16 , 0 ,
'1'
,
'Y'
) },
111
{
PIX_FMT_YUV420P10LE
,
MKTAG
(
'Y'
,
'3'
, 11 , 10 ) },
112
{
PIX_FMT_YUV420P10BE
,
MKTAG
(10 , 11 ,
'3'
,
'Y'
) },
113
{
PIX_FMT_YUV422P10LE
,
MKTAG
(
'Y'
,
'3'
, 10 , 10 ) },
114
{
PIX_FMT_YUV422P10BE
,
MKTAG
(10 , 10 ,
'3'
,
'Y'
) },
115
{
PIX_FMT_YUV444P10LE
,
MKTAG
(
'Y'
,
'3'
, 0 , 10 ) },
116
{
PIX_FMT_YUV444P10BE
,
MKTAG
(10 , 0 ,
'3'
,
'Y'
) },
117
{
PIX_FMT_YUV420P16LE
,
MKTAG
(
'Y'
,
'3'
, 11 , 16 ) },
118
{
PIX_FMT_YUV420P16BE
,
MKTAG
(16 , 11 ,
'3'
,
'Y'
) },
119
{
PIX_FMT_YUV422P16LE
,
MKTAG
(
'Y'
,
'3'
, 10 , 16 ) },
120
{
PIX_FMT_YUV422P16BE
,
MKTAG
(16 , 10 ,
'3'
,
'Y'
) },
121
{
PIX_FMT_YUV444P16LE
,
MKTAG
(
'Y'
,
'3'
, 0 , 16 ) },
122
{
PIX_FMT_YUV444P16BE
,
MKTAG
(16 , 0 ,
'3'
,
'Y'
) },
123
{
PIX_FMT_YUVA420P
,
MKTAG
(
'Y'
,
'4'
, 11 , 8 ) },
124
{
PIX_FMT_Y400A
,
MKTAG
(
'Y'
,
'2'
, 0 , 8 ) },
125
126
/* quicktime */
127
{
PIX_FMT_UYVY422
,
MKTAG
(
'2'
,
'v'
,
'u'
,
'y'
) },
128
{
PIX_FMT_UYVY422
,
MKTAG
(
'2'
,
'V'
,
'u'
,
'y'
) },
129
{
PIX_FMT_UYVY422
,
MKTAG
(
'A'
,
'V'
,
'U'
,
'I'
) },
/* FIXME merge both fields */
130
{
PIX_FMT_YUYV422
,
MKTAG
(
'y'
,
'u'
,
'v'
,
'2'
) },
131
{
PIX_FMT_YUYV422
,
MKTAG
(
'y'
,
'u'
,
'v'
,
's'
) },
132
{
PIX_FMT_YUYV422
,
MKTAG
(
'D'
,
'V'
,
'O'
,
'O'
) },
/* Digital Voodoo SD 8 Bit */
133
{
PIX_FMT_RGB555LE
,
MKTAG
(
'L'
,
'5'
,
'5'
,
'5'
) },
134
{
PIX_FMT_RGB565LE
,
MKTAG
(
'L'
,
'5'
,
'6'
,
'5'
) },
135
{
PIX_FMT_RGB565BE
,
MKTAG
(
'B'
,
'5'
,
'6'
,
'5'
) },
136
{
PIX_FMT_BGR24
,
MKTAG
(
'2'
,
'4'
,
'B'
,
'G'
) },
137
{
PIX_FMT_BGRA
,
MKTAG
(
'B'
,
'G'
,
'R'
,
'A'
) },
138
{
PIX_FMT_RGBA
,
MKTAG
(
'R'
,
'G'
,
'B'
,
'A'
) },
139
{
PIX_FMT_ABGR
,
MKTAG
(
'A'
,
'B'
,
'G'
,
'R'
) },
140
{
PIX_FMT_GRAY16BE
,
MKTAG
(
'b'
,
'1'
,
'6'
,
'g'
) },
141
{
PIX_FMT_RGB48BE
,
MKTAG
(
'b'
,
'4'
,
'8'
,
'r'
) },
142
143
/* special */
144
{
PIX_FMT_RGB565LE
,
MKTAG
( 3 , 0 , 0 , 0 ) },
/* flipped RGB565LE */
145
{
PIX_FMT_YUV444P
,
MKTAG
(
'Y'
,
'V'
,
'2'
,
'4'
) },
/* YUV444P, swapped UV */
146
147
{
PIX_FMT_NONE
, 0 },
148
};
149
150
unsigned
int
avcodec_pix_fmt_to_codec_tag
(
enum
PixelFormat
fmt)
151
{
152
const
PixelFormatTag
*tags =
ff_raw_pix_fmt_tags
;
153
while
(tags->
pix_fmt
>= 0) {
154
if
(tags->
pix_fmt
== fmt)
155
return
tags->
fourcc
;
156
tags++;
157
}
158
return
0;
159
}