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
tools
fourcc2pixfmt.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2012 Stefano Sabatini
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 "config.h"
22
#if HAVE_UNISTD_H
23
#include <unistd.h>
/* getopt */
24
#endif
25
26
#include "
libavutil/pixdesc.h
"
27
#include "
libavcodec/avcodec.h
"
28
#include "
libavutil/common.h
"
29
#include "
libavcodec/raw.h
"
30
31
#undef printf
32
#undef fprintf
33
34
#if !HAVE_GETOPT
35
#include "
compat/getopt.c
"
36
#endif
37
38
static
void
usage
(
void
)
39
{
40
printf(
"Show the relationships between rawvideo pixel formats and FourCC tags.\n"
);
41
printf(
"usage: fourcc2pixfmt [OPTIONS]\n"
);
42
printf(
"\n"
43
"Options:\n"
44
"-l list the pixel format for each fourcc\n"
45
"-L list the fourccs for each pixel format\n"
46
"-p PIX_FMT given a pixel format, print the list of associated fourccs (one per line)\n"
47
"-h print this help\n"
);
48
}
49
50
static
void
print_pix_fmt_fourccs
(
enum
AVPixelFormat
pix_fmt
,
char
sep)
51
{
52
int
i;
53
54
for
(i = 0;
ff_raw_pix_fmt_tags
[i].
pix_fmt
!=
AV_PIX_FMT_NONE
; i++) {
55
if
(
ff_raw_pix_fmt_tags
[i].pix_fmt == pix_fmt) {
56
char
buf
[32];
57
av_get_codec_tag_string
(buf,
sizeof
(buf),
ff_raw_pix_fmt_tags
[i].fourcc);
58
printf(
"%s%c"
, buf, sep);
59
}
60
}
61
}
62
63
int
main
(
int
argc,
char
**argv)
64
{
65
int
i, list_fourcc_pix_fmt = 0, list_pix_fmt_fourccs = 0;
66
const
char
*pix_fmt_name = NULL;
67
char
c
;
68
69
if
(argc == 1) {
70
usage
();
71
return
0;
72
}
73
74
while
((c =
getopt
(argc, argv,
"hp:lL"
)) != -1) {
75
switch
(c) {
76
case
'h'
:
77
usage
();
78
return
0;
79
case
'l'
:
80
list_fourcc_pix_fmt = 1;
81
break
;
82
case
'L'
:
83
list_pix_fmt_fourccs = 1;
84
break
;
85
case
'p'
:
86
pix_fmt_name =
optarg
;
87
break
;
88
case
'?'
:
89
usage
();
90
return
1;
91
}
92
}
93
94
if
(list_fourcc_pix_fmt) {
95
for
(i = 0;
ff_raw_pix_fmt_tags
[i].
pix_fmt
!=
AV_PIX_FMT_NONE
; i++) {
96
char
buf
[32];
97
av_get_codec_tag_string
(buf,
sizeof
(buf),
ff_raw_pix_fmt_tags
[i].fourcc);
98
printf(
"%s: %s\n"
, buf,
av_get_pix_fmt_name
(
ff_raw_pix_fmt_tags
[i].
pix_fmt
));
99
}
100
}
101
102
if
(list_pix_fmt_fourccs) {
103
for
(i = 0; i <
AV_PIX_FMT_NB
; i++) {
104
const
AVPixFmtDescriptor
*pix_desc =
av_pix_fmt_desc_get
(i);
105
if
(!pix_desc->
name
|| pix_desc->
flags
&
AV_PIX_FMT_FLAG_HWACCEL
)
106
continue
;
107
printf(
"%s: "
, pix_desc->
name
);
108
print_pix_fmt_fourccs
(i,
' '
);
109
printf(
"\n"
);
110
}
111
}
112
113
if
(pix_fmt_name) {
114
enum
AVPixelFormat
pix_fmt
=
av_get_pix_fmt
(pix_fmt_name);
115
if
(pix_fmt ==
AV_PIX_FMT_NONE
) {
116
fprintf(stderr,
"Invalid pixel format selected '%s'\n"
, pix_fmt_name);
117
return
1;
118
}
119
print_pix_fmt_fourccs
(pix_fmt,
'\n'
);
120
}
121
122
return
0;
123
}
Generated on Sun Mar 23 2014 23:50:16 for FFmpeg by
1.8.2