Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
tools
lavfi-showfiltfmts.c
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2009 Stefano Sabatini
3
*
4
* This file is part of Libav.
5
*
6
* Libav 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
* Libav 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 Libav; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#include "
libavformat/avformat.h
"
22
#include "
libavutil/pixdesc.h
"
23
#include "
libavfilter/avfilter.h
"
24
25
int
main
(
int
argc,
char
**argv)
26
{
27
AVFilter
*
filter
;
28
AVFilterContext
*filter_ctx;
29
const
char
*
filter_name
;
30
const
char
*filter_args =
NULL
;
31
int
i, j;
32
33
av_log_set_level
(
AV_LOG_DEBUG
);
34
35
if
(!argv[1]) {
36
fprintf
(stderr,
"Missing filter name as argument\n"
);
37
return
1;
38
}
39
40
filter_name = argv[1];
41
if
(argv[2])
42
filter_args = argv[2];
43
44
avfilter_register_all
();
45
46
/* get a corresponding filter and open it */
47
if
(!(filter =
avfilter_get_by_name
(filter_name))) {
48
fprintf
(stderr,
"Unrecognized filter with name '%s'\n"
, filter_name);
49
return
1;
50
}
51
52
if
(
avfilter_open
(&filter_ctx, filter,
NULL
) < 0) {
53
fprintf
(stderr,
"Inpossible to open filter with name '%s'\n"
, filter_name);
54
return
1;
55
}
56
if
(
avfilter_init_filter
(filter_ctx, filter_args,
NULL
) < 0) {
57
fprintf
(stderr,
"Impossible to init filter '%s' with arguments '%s'\n"
, filter_name, filter_args);
58
return
1;
59
}
60
61
/* create a link for each of the input pads */
62
for
(i = 0; i < filter_ctx->
input_count
; i++) {
63
AVFilterLink
*link =
av_mallocz
(
sizeof
(
AVFilterLink
));
64
link->
type
= filter_ctx->
filter
->
inputs
[i].
type
;
65
filter_ctx->
inputs
[i] = link;
66
}
67
for
(i = 0; i < filter_ctx->
output_count
; i++) {
68
AVFilterLink
*link =
av_mallocz
(
sizeof
(
AVFilterLink
));
69
link->
type
= filter_ctx->
filter
->
outputs
[i].
type
;
70
filter_ctx->
outputs
[i] = link;
71
}
72
73
if
(filter->
query_formats
)
74
filter->
query_formats
(filter_ctx);
75
else
76
avfilter_default_query_formats
(filter_ctx);
77
78
/* print the supported formats in input */
79
for
(i = 0; i < filter_ctx->
input_count
; i++) {
80
AVFilterFormats
*fmts = filter_ctx->
inputs
[i]->
out_formats
;
81
for
(j = 0; j < fmts->
format_count
; j++)
82
printf
(
"INPUT[%d] %s: %s\n"
,
83
i, filter_ctx->
filter
->
inputs
[i].
name
,
84
av_pix_fmt_descriptors
[fmts->
formats
[j]].
name
);
85
}
86
87
/* print the supported formats in output */
88
for
(i = 0; i < filter_ctx->
output_count
; i++) {
89
AVFilterFormats
*fmts = filter_ctx->
outputs
[i]->
in_formats
;
90
for
(j = 0; j < fmts->
format_count
; j++)
91
printf
(
"OUTPUT[%d] %s: %s\n"
,
92
i, filter_ctx->
filter
->
outputs
[i].
name
,
93
av_pix_fmt_descriptors
[fmts->
formats
[j]].
name
);
94
}
95
96
avfilter_free
(filter_ctx);
97
fflush(stdout);
98
return
0;
99
}