summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-03-15 18:01:02 +0000
committeralbeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>2003-03-15 18:01:02 +0000
commit33b62af94760186c523e90375daaab9968cf09e3 (patch)
tree10f97f0db5e1cf978f392457fd09e6731cd5dca6
parent83ee572cffff0b324b1664fc7de0402b01758500 (diff)
downloadmpv-33b62af94760186c523e90375daaab9968cf09e3.tar.bz2
mpv-33b62af94760186c523e90375daaab9968cf09e3.tar.xz
Add the new -vf option wich is the same as vop in reverse order.
Syntax is we decided, so you can give the nomes or not with both vop and vf. vf take precedence over vop. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9594 b3059339-0415-0410-9bf9-f77b7e298cf2
-rw-r--r--cfg-common.h7
-rw-r--r--libmpcodecs/vf.c93
-rw-r--r--libmpcodecs/vf.h6
-rw-r--r--libmpcodecs/vf_1bpp.c3
-rw-r--r--libmpcodecs/vf_2xsai.c3
-rw-r--r--libmpcodecs/vf_bmovl.c3
-rw-r--r--libmpcodecs/vf_boxblur.c3
-rw-r--r--libmpcodecs/vf_crop.c3
-rw-r--r--libmpcodecs/vf_cropdetect.c3
-rw-r--r--libmpcodecs/vf_denoise3d.c3
-rw-r--r--libmpcodecs/vf_detc.c3
-rw-r--r--libmpcodecs/vf_dint.c3
-rw-r--r--libmpcodecs/vf_down3dright.c3
-rw-r--r--libmpcodecs/vf_dvbscale.c3
-rw-r--r--libmpcodecs/vf_eq.c3
-rw-r--r--libmpcodecs/vf_eq2.c3
-rw-r--r--libmpcodecs/vf_expand.c3
-rw-r--r--libmpcodecs/vf_fame.c3
-rw-r--r--libmpcodecs/vf_field.c3
-rw-r--r--libmpcodecs/vf_flip.c3
-rw-r--r--libmpcodecs/vf_format.c3
-rw-r--r--libmpcodecs/vf_halfpack.c3
-rw-r--r--libmpcodecs/vf_hqdn3d.c3
-rw-r--r--libmpcodecs/vf_il.c3
-rw-r--r--libmpcodecs/vf_lavc.c3
-rw-r--r--libmpcodecs/vf_lavcdeint.c3
-rw-r--r--libmpcodecs/vf_mirror.c3
-rw-r--r--libmpcodecs/vf_noise.c3
-rw-r--r--libmpcodecs/vf_palette.c3
-rw-r--r--libmpcodecs/vf_perspective.c3
-rw-r--r--libmpcodecs/vf_pp.c3
-rw-r--r--libmpcodecs/vf_rectangle.c3
-rw-r--r--libmpcodecs/vf_rgb2bgr.c3
-rw-r--r--libmpcodecs/vf_rotate.c3
-rw-r--r--libmpcodecs/vf_sab.c3
-rw-r--r--libmpcodecs/vf_scale.c71
-rw-r--r--libmpcodecs/vf_smartblur.c3
-rw-r--r--libmpcodecs/vf_swapuv.c3
-rw-r--r--libmpcodecs/vf_telecine.c3
-rw-r--r--libmpcodecs/vf_test.c3
-rw-r--r--libmpcodecs/vf_tfields.c3
-rw-r--r--libmpcodecs/vf_unsharp.c3
-rw-r--r--libmpcodecs/vf_vo.c3
-rw-r--r--libmpcodecs/vf_yuy2.c3
-rw-r--r--libmpcodecs/vf_yvu9.c3
-rw-r--r--m_config.c2
-rw-r--r--m_option.c444
-rw-r--r--m_option.h29
-rw-r--r--mplayer.c16
49 files changed, 702 insertions, 89 deletions
diff --git a/cfg-common.h b/cfg-common.h
index 4a8876eea3..ac222efd6f 100644
--- a/cfg-common.h
+++ b/cfg-common.h
@@ -150,7 +150,8 @@
{"pphelp", &pp_help, CONF_TYPE_PRINT_INDIRECT, CONF_NOCFG, 0, 0, NULL},
#endif
- {"vop", &vo_plugin_args, CONF_TYPE_STRING_LIST, 0, 0, 0, NULL},
+ {"vop", &vo_plugin_args, CONF_TYPE_OBJ_SETTINGS_LIST, 0, 0, 0,&vf_obj_list },
+ {"vf", &vf_settings, CONF_TYPE_OBJ_SETTINGS_LIST, 0, 0, 0, &vf_obj_list},
// scaling:
{"sws", &sws_flags, CONF_TYPE_INT, 0, 0, 2, NULL},
@@ -336,6 +337,8 @@ extern int mf_w;
extern int mf_h;
extern float mf_fps;
extern char * mf_type;
+extern m_obj_settings_t* vf_settings;
+extern m_obj_list_t vf_obj_list;
struct config mfopts_conf[]={
{"on", &mf_support, CONF_TYPE_FLAG, 0, 0, 1, NULL},
@@ -346,7 +349,7 @@ struct config mfopts_conf[]={
{NULL, NULL, 0, 0, 0, 0, NULL}
};
-extern char** vo_plugin_args;
+extern m_obj_settings_t* vo_plugin_args;
#include "libaf/af.h"
extern af_cfg_t af_cfg; // Audio filter configuration, defined in libmpcodecs/dec_audio.c
diff --git a/libmpcodecs/vf.c b/libmpcodecs/vf.c
index d4629d7e12..e833065ad3 100644
--- a/libmpcodecs/vf.c
+++ b/libmpcodecs/vf.c
@@ -9,6 +9,8 @@
#include "../mp_msg.h"
#include "../help_mp.h"
+#include "../m_option.h"
+#include "../m_struct.h"
#include "img_format.h"
@@ -60,8 +62,6 @@ extern vf_info_t vf_info_detc;
extern vf_info_t vf_info_telecine;
extern vf_info_t vf_info_tfields;
-char** vo_plugin_args=(char**) NULL;
-
// list of available filters:
static vf_info_t* filter_list[]={
&vf_info_rectangle,
@@ -116,6 +116,17 @@ static vf_info_t* filter_list[]={
NULL
};
+// For the vf option
+m_obj_settings_t* vf_settings = NULL;
+// For the vop option
+m_obj_settings_t* vo_plugin_args = NULL;
+m_obj_list_t vf_obj_list = {
+ (void**)filter_list,
+ M_ST_OFF(vf_info_t,name),
+ M_ST_OFF(vf_info_t,info),
+ M_ST_OFF(vf_info_t,opts)
+};
+
//============================================================================
// mpi stuff:
@@ -306,7 +317,7 @@ static int vf_default_query_format(struct vf_instance_s* vf, unsigned int fmt){
return vf_next_query_format(vf,fmt);
}
-vf_instance_t* vf_open_plugin(vf_info_t** filter_list, vf_instance_t* next, char *name, char *args){
+vf_instance_t* vf_open_plugin(vf_info_t** filter_list, vf_instance_t* next, char *name, char **args){
vf_instance_t* vf;
int i;
for(i=0;;i++){
@@ -326,18 +337,48 @@ vf_instance_t* vf_open_plugin(vf_info_t** filter_list, vf_instance_t* next, char
vf->put_image=vf_next_put_image;
vf->default_caps=VFCAP_ACCEPT_STRIDE;
vf->default_reqs=0;
- if(vf->info->open(vf,args)>0) return vf; // Success!
+ if(vf->info->opts) { // vf_vo get some special argument
+ m_struct_t* st = vf->info->opts;
+ void* vf_priv = m_struct_alloc(st);
+ int n;
+ for(n = 0 ; args && args[2*n] ; n++)
+ m_struct_set(st,vf_priv,args[2*n],args[2*n+1]);
+ vf->priv = vf_priv;
+ args = NULL;
+ } else // Otherwise we should have the '_oldargs_'
+ if(args && !strcmp(args[0],"_oldargs_"))
+ args = (char**)args[1];
+ else
+ args = NULL;
+ if(vf->info->open(vf,(char*)args)>0) return vf; // Success!
free(vf);
mp_msg(MSGT_VFILTER,MSGL_ERR,MSGTR_CouldNotOpenVideoFilter,name);
return NULL;
}
-vf_instance_t* vf_open_filter(vf_instance_t* next, char *name, char *args){
- if(strcmp(name,"vo"))
- mp_msg(MSGT_VFILTER,MSGL_INFO,
- args ? MSGTR_OpeningVideoFilter "[%s=%s]\n"
- : MSGTR_OpeningVideoFilter "[%s]\n",name,args);
- return vf_open_plugin(filter_list,next,name,args);
+vf_instance_t* vf_open_filter(vf_instance_t* next, char *name, char **args){
+ if(args && strcmp(args[0],"_oldargs_")) {
+ int i,l = 0;
+ for(i = 0 ; args && args[2*i] ; i++)
+ l += 1 + strlen(args[2*i]) + 1 + strlen(args[2*i+1]);
+ l += strlen(name);
+ {
+ char str[l+1];
+ char* p = str;
+ p += sprintf(str,"%s",name);
+ for(i = 0 ; args && args[2*i] ; i++)
+ p += sprintf(p," %s=%s",args[2*i],args[2*i+1]);
+ mp_msg(MSGT_VFILTER,MSGL_INFO,MSGTR_OpeningVideoFilter "[%s]\n",str);
+ }
+ } else if(strcmp(name,"vo")) {
+ if(args && strcmp(args[0],"_oldargs_") == 0)
+ mp_msg(MSGT_VFILTER,MSGL_INFO,MSGTR_OpeningVideoFilter
+ "[%s=%s]\n", name,args[1]);
+ else
+ mp_msg(MSGT_VFILTER,MSGL_INFO,MSGTR_OpeningVideoFilter
+ "[%s]\n", name);
+ }
+ return vf_open_plugin(filter_list,next,name,args);
}
//============================================================================
@@ -425,19 +466,27 @@ void vf_next_draw_slice(struct vf_instance_s* vf,unsigned char** src, int * stri
//============================================================================
vf_instance_t* append_filters(vf_instance_t* last){
- vf_instance_t* vf;
- char** plugin_args = vo_plugin_args;
- if(!vo_plugin_args) return last;
- while(*plugin_args){
- char* name=strdup(*plugin_args);
- char* args=strchr(name,'=');
- if(args){args[0]=0;++args;}
- vf=vf_open_filter(last,name,args);
- if(vf) last=vf;
- free(name);
- ++plugin_args;
+ vf_instance_t* vf;
+ int i;
+
+ // -vf take precedence over -vop
+ if(vf_settings) {
+ // We want to add them in the 'right order'
+ for(i = 0 ; vf_settings[i].name ; i++)
+ /* NOP */;
+ for(i-- ; i >= 0 ; i--) {
+ //printf("Open filter %s\n",vf_settings[i].name);
+ vf = vf_open_filter(last,vf_settings[i].name,vf_settings[i].attribs);
+ if(vf) last=vf;
}
- return last;
+ } else if(vo_plugin_args) {
+ for(i = 0 ; vo_plugin_args[i].name ; i++) {
+ vf = vf_open_filter(last,vo_plugin_args[i].name,
+ vo_plugin_args[i].attribs);
+ if(vf) last=vf;
+ }
+ }
+ return last;
}
//============================================================================
diff --git a/libmpcodecs/vf.h b/libmpcodecs/vf.h
index ffe8ef934a..1f21500ac7 100644
--- a/libmpcodecs/vf.h
+++ b/libmpcodecs/vf.h
@@ -8,6 +8,8 @@ typedef struct vf_info_s {
const char *author;
const char *comment;
int (*open)(struct vf_instance_s* vf,char* args);
+ // Ptr to a struct dscribing the options
+ void* opts;
} vf_info_t;
typedef struct vf_image_context_s {
@@ -67,8 +69,8 @@ typedef struct vf_seteq_s
void vf_mpi_clear(mp_image_t* mpi,int x0,int y0,int w,int h);
mp_image_t* vf_get_image(vf_instance_t* vf, unsigned int outfmt, int mp_imgtype, int mp_imgflag, int w, int h);
-vf_instance_t* vf_open_plugin(vf_info_t** filter_list, vf_instance_t* next, char *name, char *args);
-vf_instance_t* vf_open_filter(vf_instance_t* next, char *name, char *args);
+vf_instance_t* vf_open_plugin(vf_info_t** filter_list, vf_instance_t* next, char *name, char **args);
+vf_instance_t* vf_open_filter(vf_instance_t* next, char *name, char **args);
vf_instance_t* vf_open_encoder(vf_instance_t* next, char *name, char *args);
unsigned int vf_match_csp(vf_instance_t** vfp,unsigned int* list,unsigned int preferred);
diff --git a/libmpcodecs/vf_1bpp.c b/libmpcodecs/vf_1bpp.c
index 2d6a959dc9..f1c9e5920d 100644
--- a/libmpcodecs/vf_1bpp.c
+++ b/libmpcodecs/vf_1bpp.c
@@ -178,7 +178,8 @@ vf_info_t vf_info_1bpp = {
"1bpp",
"A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_2xsai.c b/libmpcodecs/vf_2xsai.c
index 20db798722..21a8f48ab9 100644
--- a/libmpcodecs/vf_2xsai.c
+++ b/libmpcodecs/vf_2xsai.c
@@ -357,7 +357,8 @@ vf_info_t vf_info_2xsai = {
"2xsai",
"A'rpi",
"http://elektron.its.tudelft.nl/~dalikifa/",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_bmovl.c b/libmpcodecs/vf_bmovl.c
index 5cba56d6f0..8f5bad8f53 100644
--- a/libmpcodecs/vf_bmovl.c
+++ b/libmpcodecs/vf_bmovl.c
@@ -452,5 +452,6 @@ vf_info_t vf_info_bmovl = {
"bmovl",
"Per Wigren",
"",
- vf_open
+ vf_open,
+ NULL
};
diff --git a/libmpcodecs/vf_boxblur.c b/libmpcodecs/vf_boxblur.c
index a5e7f9767a..729c174d72 100644
--- a/libmpcodecs/vf_boxblur.c
+++ b/libmpcodecs/vf_boxblur.c
@@ -212,7 +212,8 @@ vf_info_t vf_info_boxblur = {
"boxblur",
"Michael Niedermayer",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_crop.c b/libmpcodecs/vf_crop.c
index f00cccadad..110bac5176 100644
--- a/libmpcodecs/vf_crop.c
+++ b/libmpcodecs/vf_crop.c
@@ -115,7 +115,8 @@ vf_info_t vf_info_crop = {
"crop",
"A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_cropdetect.c b/libmpcodecs/vf_cropdetect.c
index c8d4aae560..e8bdf83e88 100644
--- a/libmpcodecs/vf_cropdetect.c
+++ b/libmpcodecs/vf_cropdetect.c
@@ -133,7 +133,8 @@ vf_info_t vf_info_cropdetect = {
"cropdetect",
"A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_denoise3d.c b/libmpcodecs/vf_denoise3d.c
index 03b4569991..ea9e5f27a0 100644
--- a/libmpcodecs/vf_denoise3d.c
+++ b/libmpcodecs/vf_denoise3d.c
@@ -265,7 +265,8 @@ vf_info_t vf_info_denoise3d = {
"denoise3d",
"Daniel Moreno",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_detc.c b/libmpcodecs/vf_detc.c
index bccd3c6c9e..bf311d7938 100644
--- a/libmpcodecs/vf_detc.c
+++ b/libmpcodecs/vf_detc.c
@@ -457,7 +457,8 @@ vf_info_t vf_info_detc = {
"detc",
"Rich Felker",
"",
- open
+ open,
+ NULL
};
diff --git a/libmpcodecs/vf_dint.c b/libmpcodecs/vf_dint.c
index 679a306ae6..80f95b1263 100644
--- a/libmpcodecs/vf_dint.c
+++ b/libmpcodecs/vf_dint.c
@@ -191,5 +191,6 @@ vf_info_t vf_info_dint = {
"dint",
"A.G.",
"",
- open
+ open,
+ NULL
};
diff --git a/libmpcodecs/vf_down3dright.c b/libmpcodecs/vf_down3dright.c
index c142c05675..6a9f979420 100644
--- a/libmpcodecs/vf_down3dright.c
+++ b/libmpcodecs/vf_down3dright.c
@@ -139,6 +139,7 @@ vf_info_t vf_info_down3dright = {
"down3dright",
"Zdenek Kabelac",
"",
- open
+ open,
+ NULL
};
diff --git a/libmpcodecs/vf_dvbscale.c b/libmpcodecs/vf_dvbscale.c
index 987482e12b..3dcdb1b3fa 100644
--- a/libmpcodecs/vf_dvbscale.c
+++ b/libmpcodecs/vf_dvbscale.c
@@ -42,7 +42,8 @@ vf_info_t vf_info_dvbscale = {
"dvbscale",
"A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_eq.c b/libmpcodecs/vf_eq.c
index 8ee2f6bf30..a5c27b7fd1 100644
--- a/libmpcodecs/vf_eq.c
+++ b/libmpcodecs/vf_eq.c
@@ -219,6 +219,7 @@ vf_info_t vf_info_eq = {
"eq",
"Richard Felker",
"",
- open
+ open,
+ NULL
};
diff --git a/libmpcodecs/vf_eq2.c b/libmpcodecs/vf_eq2.c
index 919b2ad8c9..ae7ce9beda 100644
--- a/libmpcodecs/vf_eq2.c
+++ b/libmpcodecs/vf_eq2.c
@@ -463,5 +463,6 @@ vf_info_t vf_info_eq2 = {
"eq2",
"Hampa Hug, Daniel Moreno, Richard Felker",
"",
- &open
+ &open,
+ NULL
};
diff --git a/libmpcodecs/vf_expand.c b/libmpcodecs/vf_expand.c
index 550fdb20b6..e3681d9d84 100644
--- a/libmpcodecs/vf_expand.c
+++ b/libmpcodecs/vf_expand.c
@@ -356,7 +356,8 @@ vf_info_t vf_info_expand = {
"expand",
"A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_fame.c b/libmpcodecs/vf_fame.c
index a996019aa8..820865e0a5 100644
--- a/libmpcodecs/vf_fame.c
+++ b/libmpcodecs/vf_fame.c
@@ -145,7 +145,8 @@ vf_info_t vf_info_fame = {
"fame",
"A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_field.c b/libmpcodecs/vf_field.c
index 0e2a5c9585..21efc7b59e 100644
--- a/libmpcodecs/vf_field.c
+++ b/libmpcodecs/vf_field.c
@@ -72,7 +72,8 @@ vf_info_t vf_info_field = {
"field",
"Rich Felker",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_flip.c b/libmpcodecs/vf_flip.c
index 78706aff2f..7977dd9229 100644
--- a/libmpcodecs/vf_flip.c
+++ b/libmpcodecs/vf_flip.c
@@ -90,7 +90,8 @@ vf_info_t vf_info_flip = {
"flip",
"A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_format.c b/libmpcodecs/vf_format.c
index 5e351f0d2d..772a575478 100644
--- a/libmpcodecs/vf_format.c
+++ b/libmpcodecs/vf_format.c
@@ -66,7 +66,8 @@ vf_info_t vf_info_format = {
"format",
"A'rpi",
"FIXME! get_image()/put_image()",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_halfpack.c b/libmpcodecs/vf_halfpack.c
index dac3c61630..b4fc0e648f 100644
--- a/libmpcodecs/vf_halfpack.c
+++ b/libmpcodecs/vf_halfpack.c
@@ -216,6 +216,7 @@ vf_info_t vf_info_halfpack = {
"halfpack",
"Richard Felker",
"",
- open
+ open,
+ NULL
};
diff --git a/libmpcodecs/vf_hqdn3d.c b/libmpcodecs/vf_hqdn3d.c
index 341c282288..ce59d0f66e 100644
--- a/libmpcodecs/vf_hqdn3d.c
+++ b/libmpcodecs/vf_hqdn3d.c
@@ -290,7 +290,8 @@ vf_info_t vf_info_hqdn3d = {
"hqdn3d",
"Daniel Moreno & A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_il.c b/libmpcodecs/vf_il.c
index d4e9a840db..1cbf1135ec 100644
--- a/libmpcodecs/vf_il.c
+++ b/libmpcodecs/vf_il.c
@@ -145,7 +145,8 @@ vf_info_t vf_info_il = {
"il",
"Michael Niedermayer",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_lavc.c b/libmpcodecs/vf_lavc.c
index 5c84665368..57378e9b05 100644
--- a/libmpcodecs/vf_lavc.c
+++ b/libmpcodecs/vf_lavc.c
@@ -200,7 +200,8 @@ vf_info_t vf_info_lavc = {
"lavc",
"A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_lavcdeint.c b/libmpcodecs/vf_lavcdeint.c
index eee128768c..7b4188eefe 100644
--- a/libmpcodecs/vf_lavcdeint.c
+++ b/libmpcodecs/vf_lavcdeint.c
@@ -183,7 +183,8 @@ vf_info_t vf_info_lavcdeint = {
"Joe Rabinoff",
"libavcodec's internal deinterlacer, in case you don't like "
"the builtin ones (invoked with -pp or -npp)",
- open
+ open,
+ NULL
};
diff --git a/libmpcodecs/vf_mirror.c b/libmpcodecs/vf_mirror.c
index a16a062ab4..3d77730e12 100644
--- a/libmpcodecs/vf_mirror.c
+++ b/libmpcodecs/vf_mirror.c
@@ -109,7 +109,8 @@ vf_info_t vf_info_mirror = {
"mirror",
"Eyck",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_noise.c b/libmpcodecs/vf_noise.c
index 7a1ce5b739..d11178a100 100644
--- a/libmpcodecs/vf_noise.c
+++ b/libmpcodecs/vf_noise.c
@@ -464,7 +464,8 @@ vf_info_t vf_info_noise = {
"noise",
"Michael Niedermayer",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_palette.c b/libmpcodecs/vf_palette.c
index b7f2cd7d2d..51d69405dc 100644
--- a/libmpcodecs/vf_palette.c
+++ b/libmpcodecs/vf_palette.c
@@ -190,7 +190,8 @@ vf_info_t vf_info_palette = {
"palette",
"A'rpi & Alex",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_perspective.c b/libmpcodecs/vf_perspective.c
index 30ee17fcd3..59e2f3f467 100644
--- a/libmpcodecs/vf_perspective.c
+++ b/libmpcodecs/vf_perspective.c
@@ -335,7 +335,8 @@ vf_info_t vf_info_perspective = {
"perspective",
"Michael Niedermayer",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_pp.c b/libmpcodecs/vf_pp.c
index 58b996bc72..f9b79039ea 100644
--- a/libmpcodecs/vf_pp.c
+++ b/libmpcodecs/vf_pp.c
@@ -239,7 +239,8 @@ vf_info_t vf_info_pp = {
"pp",
"A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_rectangle.c b/libmpcodecs/vf_rectangle.c
index a27c3f8bff..2325c08410 100644
--- a/libmpcodecs/vf_rectangle.c
+++ b/libmpcodecs/vf_rectangle.c
@@ -168,5 +168,6 @@ vf_info_t vf_info_rectangle = {
"rectangle",
"Kim Minh Kaplan",
"",
- open
+ open,
+ NULL
};
diff --git a/libmpcodecs/vf_rgb2bgr.c b/libmpcodecs/vf_rgb2bgr.c
index 99574b17db..0db4b2c4d2 100644
--- a/libmpcodecs/vf_rgb2bgr.c
+++ b/libmpcodecs/vf_rgb2bgr.c
@@ -97,7 +97,8 @@ vf_info_t vf_info_rgb2bgr = {
"rgb2bgr",
"A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_rotate.c b/libmpcodecs/vf_rotate.c
index fb5e7e96e8..5cb42a86ae 100644
--- a/libmpcodecs/vf_rotate.c
+++ b/libmpcodecs/vf_rotate.c
@@ -130,7 +130,8 @@ vf_info_t vf_info_rotate = {
"rotate",
"A'rpi",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_sab.c b/libmpcodecs/vf_sab.c
index d4b6d5b419..3c6e686ac9 100644
--- a/libmpcodecs/vf_sab.c
+++ b/libmpcodecs/vf_sab.c
@@ -311,7 +311,8 @@ vf_info_t vf_info_sab = {
"sab",
"Michael Niedermayer",
"",
- open
+ open,
+ NULL
};
//===========================================================================//
diff --git a/libmpcodecs/vf_scale.c b/libmpcodecs/vf_scale.c
index fd8a1f061b..9637804dd7 100644
--- a/libmpcodecs/vf_scale.c
+++ b/libmpcodecs/vf_scale.c
@@ -13,7 +13,10 @@
#include "../libvo/fastmemcpy.h"
#include "../postproc/swscale.h"
-struct vf_priv_s {
+#include "m_option.h"
+#include "m_struct.h"
+
+static struct vf_priv_s {
int w,h;
int v_chr_drop;
int param;
@@ -21,6 +24,14 @@ struct vf_priv_s {
struct SwsContext *ctx;
unsigned char* palette;
mp_image_t *dmpi;
+} vf_priv_dflt = {
+ -1,-1,
+ 0,
+ 0,
+ 0,
+ NULL,
+ NULL,
+ NULL
};
extern