It is supposed to be used with mencoder only and does nothing when used with ffmpeg. Signed-off-by: Paul B Mahol <onemda@gmail.com>tags/n2.0
@@ -3893,7 +3893,6 @@ The list of the currently supported filters follows: | |||||
@item eq | @item eq | ||||
@item fil | @item fil | ||||
@item fspp | @item fspp | ||||
@item harddup | |||||
@item ilpack | @item ilpack | ||||
@item ivtc | @item ivtc | ||||
@item mcdeint | @item mcdeint | ||||
@@ -191,7 +191,6 @@ OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_eq.o | |||||
OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_fil.o | OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_fil.o | ||||
#OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_filmdint.o | #OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_filmdint.o | ||||
OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_fspp.o | OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_fspp.o | ||||
OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_harddup.o | |||||
OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_ilpack.o | OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_ilpack.o | ||||
OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_ivtc.o | OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_ivtc.o | ||||
OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_mcdeint.o | OBJS-$(CONFIG_MP_FILTER) += libmpcodecs/vf_mcdeint.o | ||||
@@ -1,92 +0,0 @@ | |||||
/* | |||||
* This file is part of MPlayer. | |||||
* | |||||
* MPlayer is free software; you can redistribute it and/or modify | |||||
* it under the terms of the GNU General Public License as published by | |||||
* the Free Software Foundation; either version 2 of the License, or | |||||
* (at your option) any later version. | |||||
* | |||||
* MPlayer is distributed in the hope that it will be useful, | |||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |||||
* GNU General Public License for more details. | |||||
* | |||||
* You should have received a copy of the GNU General Public License along | |||||
* with MPlayer; if not, write to the Free Software Foundation, Inc., | |||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | |||||
*/ | |||||
#include <stdio.h> | |||||
#include <stdlib.h> | |||||
#include <string.h> | |||||
#include "config.h" | |||||
#include "mp_msg.h" | |||||
#include "img_format.h" | |||||
#include "mp_image.h" | |||||
#include "vf.h" | |||||
struct vf_priv_s { | |||||
mp_image_t *last_mpi; | |||||
}; | |||||
static int put_image(struct vf_instance *vf, mp_image_t *mpi, double pts) | |||||
{ | |||||
mp_image_t *dmpi; | |||||
vf->priv->last_mpi = mpi; | |||||
dmpi = ff_vf_get_image(vf->next, mpi->imgfmt, | |||||
MP_IMGTYPE_EXPORT, 0, mpi->width, mpi->height); | |||||
dmpi->planes[0] = mpi->planes[0]; | |||||
dmpi->stride[0] = mpi->stride[0]; | |||||
if (dmpi->flags&MP_IMGFLAG_PLANAR) { | |||||
dmpi->planes[1] = mpi->planes[1]; | |||||
dmpi->stride[1] = mpi->stride[1]; | |||||
dmpi->planes[2] = mpi->planes[2]; | |||||
dmpi->stride[2] = mpi->stride[2]; | |||||
} | |||||
return ff_vf_next_put_image(vf, dmpi, pts); | |||||
} | |||||
static int control(struct vf_instance *vf, int request, void* data) | |||||
{ | |||||
switch (request) { | |||||
case VFCTRL_DUPLICATE_FRAME: | |||||
if (!vf->priv->last_mpi) break; | |||||
// This is a huge hack. We assume nothing | |||||
// has been called earlier in the filter chain | |||||
// since the last put_image. This is reasonable | |||||
// because we're handling a duplicate frame! | |||||
if (put_image(vf, vf->priv->last_mpi, MP_NOPTS_VALUE)) | |||||
return CONTROL_TRUE; | |||||
break; | |||||
} | |||||
return ff_vf_next_control(vf, request, data); | |||||
} | |||||
static void uninit(struct vf_instance *vf) | |||||
{ | |||||
free(vf->priv); | |||||
} | |||||
static int vf_open(vf_instance_t *vf, char *args) | |||||
{ | |||||
vf->put_image = put_image; | |||||
vf->control = control; | |||||
vf->uninit = uninit; | |||||
vf->priv = calloc(1, sizeof(struct vf_priv_s)); | |||||
return 1; | |||||
} | |||||
const vf_info_t ff_vf_info_harddup = { | |||||
"resubmit duplicate frames for encoding", | |||||
"harddup", | |||||
"Rich Felker", | |||||
"", | |||||
vf_open, | |||||
NULL | |||||
}; |
@@ -30,7 +30,7 @@ | |||||
#define LIBAVFILTER_VERSION_MAJOR 3 | #define LIBAVFILTER_VERSION_MAJOR 3 | ||||
#define LIBAVFILTER_VERSION_MINOR 47 | #define LIBAVFILTER_VERSION_MINOR 47 | ||||
#define LIBAVFILTER_VERSION_MICRO 103 | |||||
#define LIBAVFILTER_VERSION_MICRO 104 | |||||
#define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \ | ||||
LIBAVFILTER_VERSION_MINOR, \ | LIBAVFILTER_VERSION_MINOR, \ | ||||
@@ -131,7 +131,6 @@ extern const vf_info_t ff_vf_info_eq; | |||||
extern const vf_info_t ff_vf_info_fil; | extern const vf_info_t ff_vf_info_fil; | ||||
//extern const vf_info_t ff_vf_info_filmdint; | //extern const vf_info_t ff_vf_info_filmdint; | ||||
extern const vf_info_t ff_vf_info_fspp; | extern const vf_info_t ff_vf_info_fspp; | ||||
extern const vf_info_t ff_vf_info_harddup; | |||||
extern const vf_info_t ff_vf_info_ilpack; | extern const vf_info_t ff_vf_info_ilpack; | ||||
extern const vf_info_t ff_vf_info_ivtc; | extern const vf_info_t ff_vf_info_ivtc; | ||||
extern const vf_info_t ff_vf_info_mcdeint; | extern const vf_info_t ff_vf_info_mcdeint; | ||||
@@ -160,7 +159,6 @@ static const vf_info_t* const filters[]={ | |||||
&ff_vf_info_fil, | &ff_vf_info_fil, | ||||
// &ff_vf_info_filmdint, cmmx.h vd.h ‘opt_screen_size_x’ | // &ff_vf_info_filmdint, cmmx.h vd.h ‘opt_screen_size_x’ | ||||
&ff_vf_info_fspp, | &ff_vf_info_fspp, | ||||
&ff_vf_info_harddup, | |||||
&ff_vf_info_ilpack, | &ff_vf_info_ilpack, | ||||
&ff_vf_info_ivtc, | &ff_vf_info_ivtc, | ||||
&ff_vf_info_mcdeint, | &ff_vf_info_mcdeint, | ||||