-
Notifications
You must be signed in to change notification settings - Fork 345
/
filter_force.c
129 lines (110 loc) · 2.91 KB
/
filter_force.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
/* Not really proper filters, these are all no-ops but they each only "handle"
* one format, so they can be used to force a format selection
*/
#include <stdlib.h>
#include "filter.h"
#include "frame.h"
static VideoFilter *
new_force_template (VideoFrameType inpixfmt, VideoFrameType outpixfmt,
VideoFrameType mypixfmt)
{
VideoFilter *filter;
if (inpixfmt != mypixfmt || outpixfmt != mypixfmt)
return NULL;
filter = (VideoFilter *) malloc(sizeof(VideoFilter));
if (filter)
{
filter->filter = NULL;
filter->cleanup = NULL;
}
return filter;
}
static VideoFilter *
new_force_yv12 (VideoFrameType inpixfmt, VideoFrameType outpixfmt, int *width,
int *height, char *options, int threads)
{
(void) width;
(void) height;
(void) options;
return new_force_template (inpixfmt, outpixfmt, FMT_YV12);
}
static VideoFilter *
new_force_yuv422p (VideoFrameType inpixfmt, VideoFrameType outpixfmt, int *width,
int *height, char *options, int threads)
{
(void) width;
(void) height;
(void) options;
return new_force_template (inpixfmt, outpixfmt, FMT_YUV422P);
}
static VideoFilter *
new_force_rgb24 (VideoFrameType inpixfmt, VideoFrameType outpixfmt, int *width,
int *height, char *options, int threads)
{
(void) width;
(void) height;
(void) options;
return new_force_template (inpixfmt, outpixfmt, FMT_RGB24);
}
static VideoFilter *
new_force_argb32 (VideoFrameType inpixfmt, VideoFrameType outpixfmt, int *width,
int *height, char *options, int threads)
{
(void) width;
(void) height;
(void) options;
(void) threads;
return new_force_template (inpixfmt, outpixfmt, FMT_ARGB32);
}
static FmtConv Fmt_List_YV12[] =
{
{ FMT_YV12, FMT_YV12 },
FMT_NULL
};
static FmtConv Fmt_List_YUV422P[] =
{
{ FMT_YUV422P, FMT_YUV422P },
FMT_NULL
};
static FmtConv Fmt_List_RGB24[] =
{
{ FMT_RGB24, FMT_RGB24 },
FMT_NULL
};
static FmtConv Fmt_List_ARGB32[] =
{
{ FMT_ARGB32, FMT_ARGB32 },
FMT_NULL
};
ConstFilterInfo filter_table[] =
{
{
filter_init: &new_force_yv12,
name: "forceyv12",
descript: "forces use of YV12 video format",
formats: Fmt_List_YV12,
libname: NULL
},
{
filter_init: &new_force_yuv422p,
name: "forceyuv422p",
descript: "forces use of YUV422P video format",
formats: Fmt_List_YUV422P,
libname: NULL
},
{
filter_init: &new_force_rgb24,
name: "forcergb24",
descript: "forces use of RGB24 video format",
formats: Fmt_List_RGB24,
libname: NULL
},
{
filter_init: &new_force_argb32,
name: "forceargb32",
descript: "forces use of ARGB32 video format",
formats: Fmt_List_ARGB32,
libname: NULL
},
FILT_NULL
};