FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
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 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
/**
23
* @file
24
* Raw Video Codec
25
*/
26
27
#include "
avcodec.h
"
28
#include "
raw.h
"
29
#include "
libavutil/common.h
"
30
31
const
PixelFormatTag
ff_raw_pix_fmt_tags
[] = {
32
{
AV_PIX_FMT_YUV420P
,
MKTAG
(
'I'
,
'4'
,
'2'
,
'0'
) },
/* Planar formats */
33
{
AV_PIX_FMT_YUV420P
,
MKTAG
(
'I'
,
'Y'
,
'U'
,
'V'
) },
34
{
AV_PIX_FMT_YUV420P
,
MKTAG
(
'Y'
,
'V'
,
'1'
,
'2'
) },
35
{
AV_PIX_FMT_YUV410P
,
MKTAG
(
'Y'
,
'U'
,
'V'
,
'9'
) },
36
{
AV_PIX_FMT_YUV410P
,
MKTAG
(
'Y'
,
'V'
,
'U'
,
'9'
) },
37
{
AV_PIX_FMT_YUV411P
,
MKTAG
(
'Y'
,
'4'
,
'1'
,
'B'
) },
38
{
AV_PIX_FMT_YUV422P
,
MKTAG
(
'Y'
,
'4'
,
'2'
,
'B'
) },
39
{
AV_PIX_FMT_YUV422P
,
MKTAG
(
'P'
,
'4'
,
'2'
,
'2'
) },
40
{
AV_PIX_FMT_YUV422P
,
MKTAG
(
'Y'
,
'V'
,
'1'
,
'6'
) },
41
/* yuvjXXX formats are deprecated hacks specific to libav*,
42
they are identical to yuvXXX */
43
{
AV_PIX_FMT_YUVJ420P
,
MKTAG
(
'I'
,
'4'
,
'2'
,
'0'
) },
/* Planar formats */
44
{
AV_PIX_FMT_YUVJ420P
,
MKTAG
(
'I'
,
'Y'
,
'U'
,
'V'
) },
45
{
AV_PIX_FMT_YUVJ420P
,
MKTAG
(
'Y'
,
'V'
,
'1'
,
'2'
) },
46
{
AV_PIX_FMT_YUVJ422P
,
MKTAG
(
'Y'
,
'4'
,
'2'
,
'B'
) },
47
{
AV_PIX_FMT_YUVJ422P
,
MKTAG
(
'P'
,
'4'
,
'2'
,
'2'
) },
48
{
AV_PIX_FMT_GRAY8
,
MKTAG
(
'Y'
,
'8'
,
'0'
,
'0'
) },
49
{
AV_PIX_FMT_GRAY8
,
MKTAG
(
'Y'
,
'8'
,
' '
,
' '
) },
50
51
{
AV_PIX_FMT_YUYV422
,
MKTAG
(
'Y'
,
'U'
,
'Y'
,
'2'
) },
/* Packed formats */
52
{
AV_PIX_FMT_YUYV422
,
MKTAG
(
'Y'
,
'4'
,
'2'
,
'2'
) },
53
{
AV_PIX_FMT_YUYV422
,
MKTAG
(
'V'
,
'4'
,
'2'
,
'2'
) },
54
{
AV_PIX_FMT_YUYV422
,
MKTAG
(
'V'
,
'Y'
,
'U'
,
'Y'
) },
55
{
AV_PIX_FMT_YUYV422
,
MKTAG
(
'Y'
,
'U'
,
'N'
,
'V'
) },
56
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'U'
,
'Y'
,
'V'
,
'Y'
) },
57
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'H'
,
'D'
,
'Y'
,
'C'
) },
58
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'U'
,
'Y'
,
'N'
,
'V'
) },
59
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'U'
,
'Y'
,
'N'
,
'Y'
) },
60
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'u'
,
'y'
,
'v'
,
'1'
) },
61
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'2'
,
'V'
,
'u'
,
'1'
) },
62
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'A'
,
'V'
,
'R'
,
'n'
) },
/* Avid AVI Codec 1:1 */
63
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'A'
,
'V'
,
'1'
,
'x'
) },
/* Avid 1:1x */
64
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'A'
,
'V'
,
'u'
,
'p'
) },
65
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'V'
,
'D'
,
'T'
,
'Z'
) },
/* SoftLab-NSK VideoTizer */
66
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'a'
,
'u'
,
'v'
,
'2'
) },
67
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'c'
,
'y'
,
'u'
,
'v'
) },
/* CYUV is also Creative YUV */
68
{
AV_PIX_FMT_UYYVYY411
,
MKTAG
(
'Y'
,
'4'
,
'1'
,
'1'
) },
69
{
AV_PIX_FMT_GRAY8
,
MKTAG
(
'G'
,
'R'
,
'E'
,
'Y'
) },
70
{
AV_PIX_FMT_NV12
,
MKTAG
(
'N'
,
'V'
,
'1'
,
'2'
) },
71
{
AV_PIX_FMT_NV21
,
MKTAG
(
'N'
,
'V'
,
'2'
,
'1'
) },
72
73
/* nut */
74
{
AV_PIX_FMT_RGB555LE
,
MKTAG
(
'R'
,
'G'
,
'B'
, 15) },
75
{
AV_PIX_FMT_BGR555LE
,
MKTAG
(
'B'
,
'G'
,
'R'
, 15) },
76
{
AV_PIX_FMT_RGB565LE
,
MKTAG
(
'R'
,
'G'
,
'B'
, 16) },
77
{
AV_PIX_FMT_BGR565LE
,
MKTAG
(
'B'
,
'G'
,
'R'
, 16) },
78
{
AV_PIX_FMT_RGB555BE
,
MKTAG
(15 ,
'B'
,
'G'
,
'R'
) },
79
{
AV_PIX_FMT_BGR555BE
,
MKTAG
(15 ,
'R'
,
'G'
,
'B'
) },
80
{
AV_PIX_FMT_RGB565BE
,
MKTAG
(16 ,
'B'
,
'G'
,
'R'
) },
81
{
AV_PIX_FMT_BGR565BE
,
MKTAG
(16 ,
'R'
,
'G'
,
'B'
) },
82
{
AV_PIX_FMT_RGB444LE
,
MKTAG
(
'R'
,
'G'
,
'B'
, 12) },
83
{
AV_PIX_FMT_BGR444LE
,
MKTAG
(
'B'
,
'G'
,
'R'
, 12) },
84
{
AV_PIX_FMT_RGB444BE
,
MKTAG
(12 ,
'B'
,
'G'
,
'R'
) },
85
{
AV_PIX_FMT_BGR444BE
,
MKTAG
(12 ,
'R'
,
'G'
,
'B'
) },
86
{
AV_PIX_FMT_RGBA64LE
,
MKTAG
(
'R'
,
'B'
,
'A'
, 64 ) },
87
{
AV_PIX_FMT_BGRA64LE
,
MKTAG
(
'B'
,
'R'
,
'A'
, 64 ) },
88
{
AV_PIX_FMT_RGBA64BE
,
MKTAG
(64 ,
'R'
,
'B'
,
'A'
) },
89
{
AV_PIX_FMT_BGRA64BE
,
MKTAG
(64 ,
'B'
,
'R'
,
'A'
) },
90
{
AV_PIX_FMT_RGBA
,
MKTAG
(
'R'
,
'G'
,
'B'
,
'A'
) },
91
{
AV_PIX_FMT_RGB0
,
MKTAG
(
'R'
,
'G'
,
'B'
, 0 ) },
92
{
AV_PIX_FMT_BGRA
,
MKTAG
(
'B'
,
'G'
,
'R'
,
'A'
) },
93
{
AV_PIX_FMT_BGR0
,
MKTAG
(
'B'
,
'G'
,
'R'
, 0 ) },
94
{
AV_PIX_FMT_ABGR
,
MKTAG
(
'A'
,
'B'
,
'G'
,
'R'
) },
95
{
AV_PIX_FMT_0BGR
,
MKTAG
( 0 ,
'B'
,
'G'
,
'R'
) },
96
{
AV_PIX_FMT_ARGB
,
MKTAG
(
'A'
,
'R'
,
'G'
,
'B'
) },
97
{
AV_PIX_FMT_0RGB
,
MKTAG
( 0 ,
'R'
,
'G'
,
'B'
) },
98
{
AV_PIX_FMT_RGB24
,
MKTAG
(
'R'
,
'G'
,
'B'
, 24 ) },
99
{
AV_PIX_FMT_BGR24
,
MKTAG
(
'B'
,
'G'
,
'R'
, 24 ) },
100
{
AV_PIX_FMT_YUV411P
,
MKTAG
(
'4'
,
'1'
,
'1'
,
'P'
) },
101
{
AV_PIX_FMT_YUV422P
,
MKTAG
(
'4'
,
'2'
,
'2'
,
'P'
) },
102
{
AV_PIX_FMT_YUVJ422P
,
MKTAG
(
'4'
,
'2'
,
'2'
,
'P'
) },
103
{
AV_PIX_FMT_YUV440P
,
MKTAG
(
'4'
,
'4'
,
'0'
,
'P'
) },
104
{
AV_PIX_FMT_YUVJ440P
,
MKTAG
(
'4'
,
'4'
,
'0'
,
'P'
) },
105
{
AV_PIX_FMT_YUV444P
,
MKTAG
(
'4'
,
'4'
,
'4'
,
'P'
) },
106
{
AV_PIX_FMT_YUVJ444P
,
MKTAG
(
'4'
,
'4'
,
'4'
,
'P'
) },
107
{
AV_PIX_FMT_MONOWHITE
,
MKTAG
(
'B'
,
'1'
,
'W'
,
'0'
) },
108
{
AV_PIX_FMT_MONOBLACK
,
MKTAG
(
'B'
,
'0'
,
'W'
,
'1'
) },
109
{
AV_PIX_FMT_BGR8
,
MKTAG
(
'B'
,
'G'
,
'R'
, 8 ) },
110
{
AV_PIX_FMT_RGB8
,
MKTAG
(
'R'
,
'G'
,
'B'
, 8 ) },
111
{
AV_PIX_FMT_BGR4
,
MKTAG
(
'B'
,
'G'
,
'R'
, 4 ) },
112
{
AV_PIX_FMT_RGB4
,
MKTAG
(
'R'
,
'G'
,
'B'
, 4 ) },
113
{
AV_PIX_FMT_RGB4_BYTE
,
MKTAG
(
'B'
,
'4'
,
'B'
,
'Y'
) },
114
{
AV_PIX_FMT_BGR4_BYTE
,
MKTAG
(
'R'
,
'4'
,
'B'
,
'Y'
) },
115
{
AV_PIX_FMT_RGB48LE
,
MKTAG
(
'R'
,
'G'
,
'B'
, 48 ) },
116
{
AV_PIX_FMT_RGB48BE
,
MKTAG
( 48,
'R'
,
'G'
,
'B'
) },
117
{
AV_PIX_FMT_BGR48LE
,
MKTAG
(
'B'
,
'G'
,
'R'
, 48 ) },
118
{
AV_PIX_FMT_BGR48BE
,
MKTAG
( 48,
'B'
,
'G'
,
'R'
) },
119
{
AV_PIX_FMT_GRAY16LE
,
MKTAG
(
'Y'
,
'1'
, 0 , 16 ) },
120
{
AV_PIX_FMT_GRAY16BE
,
MKTAG
(16 , 0 ,
'1'
,
'Y'
) },
121
{
AV_PIX_FMT_YUV420P10LE
,
MKTAG
(
'Y'
,
'3'
, 11 , 10 ) },
122
{
AV_PIX_FMT_YUV420P10BE
,
MKTAG
(10 , 11 ,
'3'
,
'Y'
) },
123
{
AV_PIX_FMT_YUV422P10LE
,
MKTAG
(
'Y'
,
'3'
, 10 , 10 ) },
124
{
AV_PIX_FMT_YUV422P10BE
,
MKTAG
(10 , 10 ,
'3'
,
'Y'
) },
125
{
AV_PIX_FMT_YUV444P10LE
,
MKTAG
(
'Y'
,
'3'
, 0 , 10 ) },
126
{
AV_PIX_FMT_YUV444P10BE
,
MKTAG
(10 , 0 ,
'3'
,
'Y'
) },
127
{
AV_PIX_FMT_YUV420P12LE
,
MKTAG
(
'Y'
,
'3'
, 11 , 12 ) },
128
{
AV_PIX_FMT_YUV420P12BE
,
MKTAG
(12 , 11 ,
'3'
,
'Y'
) },
129
{
AV_PIX_FMT_YUV422P12LE
,
MKTAG
(
'Y'
,
'3'
, 10 , 12 ) },
130
{
AV_PIX_FMT_YUV422P12BE
,
MKTAG
(12 , 10 ,
'3'
,
'Y'
) },
131
{
AV_PIX_FMT_YUV444P12LE
,
MKTAG
(
'Y'
,
'3'
, 0 , 12 ) },
132
{
AV_PIX_FMT_YUV444P12BE
,
MKTAG
(12 , 0 ,
'3'
,
'Y'
) },
133
{
AV_PIX_FMT_YUV420P14LE
,
MKTAG
(
'Y'
,
'3'
, 11 , 14 ) },
134
{
AV_PIX_FMT_YUV420P14BE
,
MKTAG
(14 , 11 ,
'3'
,
'Y'
) },
135
{
AV_PIX_FMT_YUV422P14LE
,
MKTAG
(
'Y'
,
'3'
, 10 , 14 ) },
136
{
AV_PIX_FMT_YUV422P14BE
,
MKTAG
(14 , 10 ,
'3'
,
'Y'
) },
137
{
AV_PIX_FMT_YUV444P14LE
,
MKTAG
(
'Y'
,
'3'
, 0 , 14 ) },
138
{
AV_PIX_FMT_YUV444P14BE
,
MKTAG
(14 , 0 ,
'3'
,
'Y'
) },
139
{
AV_PIX_FMT_YUV420P16LE
,
MKTAG
(
'Y'
,
'3'
, 11 , 16 ) },
140
{
AV_PIX_FMT_YUV420P16BE
,
MKTAG
(16 , 11 ,
'3'
,
'Y'
) },
141
{
AV_PIX_FMT_YUV422P16LE
,
MKTAG
(
'Y'
,
'3'
, 10 , 16 ) },
142
{
AV_PIX_FMT_YUV422P16BE
,
MKTAG
(16 , 10 ,
'3'
,
'Y'
) },
143
{
AV_PIX_FMT_YUV444P16LE
,
MKTAG
(
'Y'
,
'3'
, 0 , 16 ) },
144
{
AV_PIX_FMT_YUV444P16BE
,
MKTAG
(16 , 0 ,
'3'
,
'Y'
) },
145
{
AV_PIX_FMT_YUVA420P
,
MKTAG
(
'Y'
,
'4'
, 11 , 8 ) },
146
{
AV_PIX_FMT_YUVA422P
,
MKTAG
(
'Y'
,
'4'
, 10 , 8 ) },
147
{
AV_PIX_FMT_YUVA444P
,
MKTAG
(
'Y'
,
'4'
, 0 , 8 ) },
148
{
AV_PIX_FMT_GRAY8A
,
MKTAG
(
'Y'
,
'2'
, 0 , 8 ) },
149
150
{
AV_PIX_FMT_YUVA420P9LE
,
MKTAG
(
'Y'
,
'4'
, 11 , 9 ) },
151
{
AV_PIX_FMT_YUVA420P9BE
,
MKTAG
( 9 , 11 ,
'4'
,
'Y'
) },
152
{
AV_PIX_FMT_YUVA422P9LE
,
MKTAG
(
'Y'
,
'4'
, 10 , 9 ) },
153
{
AV_PIX_FMT_YUVA422P9BE
,
MKTAG
( 9 , 10 ,
'4'
,
'Y'
) },
154
{
AV_PIX_FMT_YUVA444P9LE
,
MKTAG
(
'Y'
,
'4'
, 0 , 9 ) },
155
{
AV_PIX_FMT_YUVA444P9BE
,
MKTAG
( 9 , 0 ,
'4'
,
'Y'
) },
156
{
AV_PIX_FMT_YUVA420P10LE
,
MKTAG
(
'Y'
,
'4'
, 11 , 10 ) },
157
{
AV_PIX_FMT_YUVA420P10BE
,
MKTAG
(10 , 11 ,
'4'
,
'Y'
) },
158
{
AV_PIX_FMT_YUVA422P10LE
,
MKTAG
(
'Y'
,
'4'
, 10 , 10 ) },
159
{
AV_PIX_FMT_YUVA422P10BE
,
MKTAG
(10 , 10 ,
'4'
,
'Y'
) },
160
{
AV_PIX_FMT_YUVA444P10LE
,
MKTAG
(
'Y'
,
'4'
, 0 , 10 ) },
161
{
AV_PIX_FMT_YUVA444P10BE
,
MKTAG
(10 , 0 ,
'4'
,
'Y'
) },
162
{
AV_PIX_FMT_YUVA420P16LE
,
MKTAG
(
'Y'
,
'4'
, 11 , 16 ) },
163
{
AV_PIX_FMT_YUVA420P16BE
,
MKTAG
(16 , 11 ,
'4'
,
'Y'
) },
164
{
AV_PIX_FMT_YUVA422P16LE
,
MKTAG
(
'Y'
,
'4'
, 10 , 16 ) },
165
{
AV_PIX_FMT_YUVA422P16BE
,
MKTAG
(16 , 10 ,
'4'
,
'Y'
) },
166
{
AV_PIX_FMT_YUVA444P16LE
,
MKTAG
(
'Y'
,
'4'
, 0 , 16 ) },
167
{
AV_PIX_FMT_YUVA444P16BE
,
MKTAG
(16 , 0 ,
'4'
,
'Y'
) },
168
169
/* quicktime */
170
{
AV_PIX_FMT_YUV420P
,
MKTAG
(
'R'
,
'4'
,
'2'
,
'0'
) },
/* Radius DV YUV PAL */
171
{
AV_PIX_FMT_YUV411P
,
MKTAG
(
'R'
,
'4'
,
'1'
,
'1'
) },
/* Radius DV YUV NTSC */
172
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'2'
,
'v'
,
'u'
,
'y'
) },
173
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'2'
,
'V'
,
'u'
,
'y'
) },
174
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'A'
,
'V'
,
'U'
,
'I'
) },
/* FIXME merge both fields */
175
{
AV_PIX_FMT_UYVY422
,
MKTAG
(
'b'
,
'x'
,
'y'
,
'v'
) },
176
{
AV_PIX_FMT_YUYV422
,
MKTAG
(
'y'
,
'u'
,
'v'
,
'2'
) },
177
{
AV_PIX_FMT_YUYV422
,
MKTAG
(
'y'
,
'u'
,
'v'
,
's'
) },
178
{
AV_PIX_FMT_YUYV422
,
MKTAG
(
'D'
,
'V'
,
'O'
,
'O'
) },
/* Digital Voodoo SD 8 Bit */
179
{
AV_PIX_FMT_RGB555LE
,
MKTAG
(
'L'
,
'5'
,
'5'
,
'5'
) },
180
{
AV_PIX_FMT_RGB565LE
,
MKTAG
(
'L'
,
'5'
,
'6'
,
'5'
) },
181
{
AV_PIX_FMT_RGB565BE
,
MKTAG
(
'B'
,
'5'
,
'6'
,
'5'
) },
182
{
AV_PIX_FMT_BGR24
,
MKTAG
(
'2'
,
'4'
,
'B'
,
'G'
) },
183
{
AV_PIX_FMT_BGR24
,
MKTAG
(
'b'
,
'x'
,
'b'
,
'g'
) },
184
{
AV_PIX_FMT_BGRA
,
MKTAG
(
'B'
,
'G'
,
'R'
,
'A'
) },
185
{
AV_PIX_FMT_RGBA
,
MKTAG
(
'R'
,
'G'
,
'B'
,
'A'
) },
186
{
AV_PIX_FMT_RGB24
,
MKTAG
(
'b'
,
'x'
,
'r'
,
'g'
) },
187
{
AV_PIX_FMT_ABGR
,
MKTAG
(
'A'
,
'B'
,
'G'
,
'R'
) },
188
{
AV_PIX_FMT_GRAY16BE
,
MKTAG
(
'b'
,
'1'
,
'6'
,
'g'
) },
189
{
AV_PIX_FMT_RGB48BE
,
MKTAG
(
'b'
,
'4'
,
'8'
,
'r'
) },
190
191
/* special */
192
{
AV_PIX_FMT_RGB565LE
,
MKTAG
( 3 , 0 , 0 , 0 ) },
/* flipped RGB565LE */
193
{
AV_PIX_FMT_YUV444P
,
MKTAG
(
'Y'
,
'V'
,
'2'
,
'4'
) },
/* YUV444P, swapped UV */
194
{
AV_PIX_FMT_YUYV422
,
MKTAG
(
'Y'
,
'V'
,
'Y'
,
'U'
) },
/* YUYV, swapped UV */
195
196
{
AV_PIX_FMT_NONE
, 0 },
197
};
198
199
unsigned
int
avcodec_pix_fmt_to_codec_tag
(
enum
AVPixelFormat
fmt
)
200
{
201
const
PixelFormatTag
*tags =
ff_raw_pix_fmt_tags
;
202
while
(tags->
pix_fmt
>= 0) {
203
if
(tags->
pix_fmt
== fmt)
204
return
tags->
fourcc
;
205
tags++;
206
}
207
return
0;
208
}
Generated on Wed Jul 10 2013 23:48:04 for FFmpeg by
1.8.2