summaryrefslogtreecommitdiffstats
path: root/libmpcodecs/vf_pp.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmpcodecs/vf_pp.c')
-rw-r--r--libmpcodecs/vf_pp.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/libmpcodecs/vf_pp.c b/libmpcodecs/vf_pp.c
index 12939e8740..546da060b6 100644
--- a/libmpcodecs/vf_pp.c
+++ b/libmpcodecs/vf_pp.c
@@ -28,6 +28,17 @@ static int query_format(struct vf_instance_s* vf, unsigned int fmt){
return 0;
}
+static int control(struct vf_instance_s* vf, int request, void* data){
+ switch(request){
+ case VFCTRL_QUERY_MAX_PP_LEVEL:
+ return GET_PP_QUALITY_MAX;
+ case VFCTRL_SET_PP_LEVEL:
+ vf->priv->pp=getPpModeForQuality(*((unsigned int*)data));
+ return CONTROL_TRUE;
+ }
+ return vf_next_control(vf,request,data);
+}
+
static void get_image(struct vf_instance_s* vf, mp_image_t *mpi){
if(vf->priv->pp&0xFFFF) return; // non-local filters enabled
if((mpi->type==MP_IMGTYPE_IPB || vf->priv->pp) &&
@@ -74,6 +85,7 @@ extern int divx_quality;
static int open(vf_instance_t *vf, char* args){
char *endptr;
vf->query_format=query_format;
+ vf->control=control;
vf->get_image=get_image;
vf->put_image=put_image;
vf->priv=malloc(sizeof(struct vf_priv_s));