annotate libmpcodecs/vf_lavcdeint.c @ 25357:b265c001e64a

Add new audio filter for encoding multi-channel audio into ac3 at runtime. And if set first parameter of this filter to 1, it will do ac3 passthrough like hwac3 did.
author ulion
date Thu, 13 Dec 2007 12:38:17 +0000
parents 00fff9a3b735
children afa125da85cf
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
1 #include <stdio.h>
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
2 #include <stdlib.h>
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
3 #include <string.h>
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
4 #include <inttypes.h>
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
5
17012
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 9593
diff changeset
6 #include "config.h"
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 9593
diff changeset
7 #include "mp_msg.h"
6ff3379a0862 Unify include path handling, -I.. is in CFLAGS.
diego
parents: 9593
diff changeset
8 #include "help_mp.h"
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
9
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
10 #include "img_format.h"
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
11 #include "mp_image.h"
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
12 #include "vf.h"
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
13
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
14 #ifdef USE_LIBAVCODEC_SO
7004
8eff71f38685 dynamic libavcodec.so support updated by
arpi
parents: 6860
diff changeset
15 #include <ffmpeg/avcodec.h>
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
16 #else
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
17 #include "libavcodec/avcodec.h"
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
18 #endif
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
19
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
20 extern int avcodec_inited;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
21
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
22 struct vf_priv_s
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
23 {
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
24 int width, height;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
25 int pix_fmt;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
26 };
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
27
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
28 /* Support for avcodec's built-in deinterlacer.
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
29 * Based on vf_lavc.c
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
30 */
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
31
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
32 //===========================================================================//
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
33
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
34
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
35 /* Convert mplayer's IMGFMT_* to avcodec's PIX_FMT_* for the supported
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
36 * IMGFMT's, and return -1 if the deinterlacer doesn't support
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
37 * that format (-1 because 0 is a valid PIX_FMT).
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
38 */
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
39 /* The deinterlacer supports planer 4:2:0, 4:2:2, and 4:4:4 YUV */
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
40 static int
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
41 imgfmt_to_pixfmt (int imgfmt)
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
42 {
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
43 switch(imgfmt)
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
44 {
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
45 /* I hope I got all the supported formats */
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
46
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
47 /* 4:2:0 */
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
48 case IMGFMT_YV12:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
49 case IMGFMT_I420:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
50 case IMGFMT_IYUV:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
51 return PIX_FMT_YUV420P;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
52 break;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
53
6860
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
54 #if 0
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
55 /* 4:2:2 */
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
56 case IMGFMT_UYVY:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
57 case IMGFMT_UYNV:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
58 case IMGFMT_Y422:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
59 case IMGFMT_YUY2:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
60 case IMGFMT_YUNV:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
61 case IMGFMT_YVYU:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
62 case IMGFMT_Y42T:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
63 case IMGFMT_V422:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
64 case IMGFMT_V655:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
65 return PIX_FMT_YUV422P;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
66 break;
6860
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
67 #endif
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
68
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
69 /* Are there any _planar_ YUV 4:4:4 formats? */
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
70
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
71 default:
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
72 return -1;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
73 }
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
74 }
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
75
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
76
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
77 static int
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
78 config (struct vf_instance_s* vf,
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
79 int width, int height, int d_width, int d_height,
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
80 unsigned int flags, unsigned int outfmt)
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
81 {
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
82 struct vf_priv_s *priv = vf->priv;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
83
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
84 priv->pix_fmt = imgfmt_to_pixfmt(outfmt);
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
85 if(priv->pix_fmt == -1)
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
86 return 0;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
87
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
88 /* The deinterlacer will fail if this is false */
8787
e280692c0878 Found another 10l :-), but the filter is still broken :-(
filon
parents: 8427
diff changeset
89 if ((width & 3) != 0 || (height & 3) != 0)
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
90 return 0;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
91
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
92 /* If we get here, the deinterlacer is guaranteed not to fail */
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
93
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
94 priv->width = width;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
95 priv->height = height;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
96
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
97 return vf_next_config(vf,
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
98 width, height,
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
99 d_width, d_height,
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
100 flags, outfmt);
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
101 }
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
102
7368
a894e99c1e51 changing return type of put_image void->int
arpi
parents: 7004
diff changeset
103 static int
17906
20aca9baf5d8 passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents: 17523
diff changeset
104 put_image (struct vf_instance_s* vf, mp_image_t *mpi, double pts)
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
105 {
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
106 struct vf_priv_s *priv = vf->priv;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
107 mp_image_t* dmpi;
6860
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
108 AVPicture pic;
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
109 AVPicture lavc_picture;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
110
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
111 lavc_picture.data[0] = mpi->planes[0];
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
112 lavc_picture.data[1] = mpi->planes[1];
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
113 lavc_picture.data[2] = mpi->planes[2];
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
114 lavc_picture.linesize[0] = mpi->stride[0];
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
115 lavc_picture.linesize[1] = mpi->stride[1];
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
116 lavc_picture.linesize[2] = mpi->stride[2];
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
117
6860
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
118 dmpi = vf_get_image(vf->next, mpi->imgfmt,
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
119 MP_IMGTYPE_TEMP, MP_IMGFLAG_ACCEPT_STRIDE,
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
120 priv->width, priv->height);
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
121
6860
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
122 pic.data[0] = dmpi->planes[0];
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
123 pic.data[1] = dmpi->planes[1];
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
124 pic.data[2] = dmpi->planes[2];
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
125 pic.linesize[0] = dmpi->stride[0];
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
126 pic.linesize[1] = dmpi->stride[1];
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
127 pic.linesize[2] = dmpi->stride[2];
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
128
6860
e575f4ee82f1 - yuv422 disabled (no IMGFMT for _planar_ 422)
arpi
parents: 6859
diff changeset
129 if (avpicture_deinterlace(&pic, &lavc_picture,
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
130 priv->pix_fmt, priv->width, priv->height) < 0)
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
131 {
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
132 /* This should not happen -- see config() */
7368
a894e99c1e51 changing return type of put_image void->int
arpi
parents: 7004
diff changeset
133 return 0;
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
134 }
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
135
17906
20aca9baf5d8 passing pts through the filter layer (lets see if pts or cola comes out at the end)
michael
parents: 17523
diff changeset
136 return vf_next_put_image(vf, dmpi, pts);
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
137 }
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
138
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
139
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
140 static int
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
141 query_format (struct vf_instance_s* vf, unsigned int fmt)
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
142 {
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
143 if(imgfmt_to_pixfmt(fmt) == -1)
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
144 return 0;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
145
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
146 return vf_next_query_format(vf,fmt);
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
147 }
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
148
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
149
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
150 static int
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
151 open (vf_instance_t *vf, char* args)
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
152 {
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
153 /* We don't have any args */
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
154 (void) args;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
155
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
156 vf->config = config;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
157 vf->put_image = put_image;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
158 vf->query_format = query_format;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
159 vf->priv = malloc(sizeof(struct vf_priv_s));
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
160 memset(vf->priv,0,sizeof(struct vf_priv_s));
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
161
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
162 /* This may not technically be necessary just for a deinterlace,
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
163 * but it seems like a good idea.
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
164 */
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
165 if(!avcodec_inited)
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
166 {
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
167 avcodec_init();
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
168 avcodec_register_all();
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
169 avcodec_inited=1;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
170 }
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
171
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
172 return 1;
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
173 }
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
174
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
175
25221
00fff9a3b735 Make all vf_info_t structs const
reimar
parents: 23373
diff changeset
176 const vf_info_t vf_info_lavcdeint = {
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
177 "libavcodec's deinterlacing filter",
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
178 "lavcdeint",
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
179 "Joe Rabinoff",
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
180 "libavcodec's internal deinterlacer, in case you don't like "
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
181 "the builtin ones (invoked with -pp or -npp)",
9593
e9a2af584986 Add the new -vf option wich is the same as vop in reverse order.
albeu
parents: 8787
diff changeset
182 open,
e9a2af584986 Add the new -vf option wich is the same as vop in reverse order.
albeu
parents: 8787
diff changeset
183 NULL
6859
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
184 };
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
185
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
186
ed26b2d781e9 new filter to use libavcodec's deinterlacer
arpi
parents:
diff changeset
187 //===========================================================================//