FFmpeg
Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
libavfilter
libmpcodecs
vf_softskip.c
Go to the documentation of this file.
1
/*
2
* This file is part of MPlayer.
3
*
4
* MPlayer is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
8
*
9
* MPlayer is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License along
15
* with MPlayer; if not, write to the Free Software Foundation, Inc.,
16
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
*/
18
19
#include <stdio.h>
20
#include <stdlib.h>
21
#include <string.h>
22
23
#include "config.h"
24
#include "
mp_msg.h
"
25
26
#include "
img_format.h
"
27
#include "
mp_image.h
"
28
#include "
vf.h
"
29
30
struct
vf_priv_s
{
31
int
skipflag
;
32
};
33
34
static
int
put_image
(
struct
vf_instance
*vf,
mp_image_t
*mpi,
double
pts)
35
{
36
mp_image_t
*dmpi;
37
38
if
(vf->
priv
->
skipflag
)
39
return
vf->
priv
->
skipflag
= 0;
40
41
dmpi =
ff_vf_get_image
(vf->
next
, mpi->
imgfmt
,
42
MP_IMGTYPE_EXPORT
, 0, mpi->
width
, mpi->
height
);
43
ff_vf_clone_mpi_attributes
(dmpi, mpi);
44
45
dmpi->
planes
[0] = mpi->
planes
[0];
46
dmpi->
stride
[0] = mpi->
stride
[0];
47
if
(dmpi->
flags
&
MP_IMGFLAG_PLANAR
) {
48
dmpi->
planes
[1] = mpi->
planes
[1];
49
dmpi->
stride
[1] = mpi->
stride
[1];
50
dmpi->
planes
[2] = mpi->
planes
[2];
51
dmpi->
stride
[2] = mpi->
stride
[2];
52
}
53
54
return
ff_vf_next_put_image
(vf, dmpi, pts);
55
}
56
57
static
int
control
(
struct
vf_instance
*vf,
int
request,
void
*
data
)
58
{
59
switch
(request) {
60
case
VFCTRL_SKIP_NEXT_FRAME
:
61
vf->
priv
->
skipflag
= 1;
62
return
CONTROL_TRUE
;
63
}
64
return
ff_vf_next_control
(vf, request, data);
65
}
66
67
#if 0
68
static
int
query_format
(
struct
vf_instance
*vf,
unsigned
int
fmt
)
69
{
70
/* FIXME - figure out which other formats work */
71
switch
(fmt) {
72
case
IMGFMT_YV12
:
73
case
IMGFMT_IYUV
:
74
case
IMGFMT_I420
:
75
return
ff_vf_next_query_format
(vf, fmt);
76
}
77
return
0;
78
}
79
#endif
80
81
static
void
uninit
(
struct
vf_instance
*vf)
82
{
83
free(vf->
priv
);
84
}
85
86
static
int
vf_open
(
vf_instance_t
*vf,
char
*args)
87
{
88
vf->
put_image
=
put_image
;
89
vf->
control
=
control
;
90
vf->
uninit
=
uninit
;
91
vf->
priv
= calloc(1,
sizeof
(
struct
vf_priv_s
));
92
return
1;
93
}
94
95
const
vf_info_t
ff_vf_info_softskip
= {
96
"soft (post-filter) frame skipping for encoding"
,
97
"softskip"
,
98
"Rich Felker"
,
99
""
,
100
vf_open
,
101
NULL
102
};
Generated on Wed Feb 13 2013 19:21:31 for FFmpeg by
1.8.2