From 1842f12170da338f0703096586370ab011ffd7b0 Mon Sep 17 00:00:00 2001
From: albeu <albeu@b3059339-0415-0410-9bf9-f77b7e298cf2>
Date: Sat, 15 Mar 2003 20:45:03 +0000
Subject: [PATCH] Support for the new options stuff

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@9600 b3059339-0415-0410-9bf9-f77b7e298cf2
---
 libmpcodecs/vf_crop.c | 28 ++++++++++++++++++++++++++--
 libmpcodecs/vf_eq.c   | 27 +++++++++++++++++++++++++--
 2 files changed, 51 insertions(+), 4 deletions(-)

diff --git a/libmpcodecs/vf_crop.c b/libmpcodecs/vf_crop.c
index 110bac5176..bd4c406245 100644
--- a/libmpcodecs/vf_crop.c
+++ b/libmpcodecs/vf_crop.c
@@ -9,9 +9,15 @@
 #include "mp_image.h"
 #include "vf.h"
 
-struct vf_priv_s {
+#include "m_option.h"
+#include "m_struct.h"
+
+static struct vf_priv_s {
     int crop_w,crop_h;
     int crop_x,crop_y;
+} vf_priv_dflt = {
+  -1,-1,
+  -1,-1
 };
 
 extern int opt_screen_size_x;
@@ -91,12 +97,14 @@ static int open(vf_instance_t *vf, char* args){
     vf->config=config;
     vf->put_image=put_image;
     vf->default_reqs=VFCAP_ACCEPT_STRIDE;
+    if(!vf->priv) {
     vf->priv=malloc(sizeof(struct vf_priv_s));
     // TODO: parse args ->
     vf->priv->crop_x=
     vf->priv->crop_y=
     vf->priv->crop_w=
     vf->priv->crop_h=-1;
+    } //if(!vf->priv)
     if(args) sscanf(args, "%d:%d:%d:%d", 
     &vf->priv->crop_w,
     &vf->priv->crop_h,
@@ -110,13 +118,29 @@ static int open(vf_instance_t *vf, char* args){
     return 1;
 }
 
+#define ST_OFF(f) M_ST_OFF(struct vf_priv_s,f)
+static m_option_t vf_opts_fields[] = {
+  {"w", ST_OFF(crop_w), CONF_TYPE_INT, M_OPT_MIN,1 ,0, NULL},
+  {"h", ST_OFF(crop_h), CONF_TYPE_INT, M_OPT_MIN,1 ,0, NULL},
+  {"x", ST_OFF(crop_x), CONF_TYPE_INT, M_OPT_MIN,0 ,0, NULL},
+  {"y", ST_OFF(crop_y), CONF_TYPE_INT, M_OPT_MIN,0 ,0, NULL},
+  { NULL, NULL, 0, 0, 0, 0,  NULL }
+};
+
+static m_struct_t vf_opts = {
+  "crop",
+  sizeof(struct vf_priv_s),
+  &vf_priv_dflt,
+  vf_opts_fields
+};
+
 vf_info_t vf_info_crop = {
     "cropping",
     "crop",
     "A'rpi",
     "",
     open,
-    NULL
+    &vf_opts
 };
 
 //===========================================================================//
diff --git a/libmpcodecs/vf_eq.c b/libmpcodecs/vf_eq.c
index a5c27b7fd1..74395f61c6 100644
--- a/libmpcodecs/vf_eq.c
+++ b/libmpcodecs/vf_eq.c
@@ -15,10 +15,17 @@
 #include "../libvo/fastmemcpy.h"
 #include "../postproc/rgb2rgb.h"
 
-struct vf_priv_s {
+#include "m_option.h"
+#include "m_struct.h"
+
+static struct vf_priv_s {
 	unsigned char *buf;
 	int brightness;
 	int contrast;
+} vf_priv_dflt = {
+  NULL,
+  0,
+  0
 };
 
 #ifdef HAVE_MMX
@@ -202,8 +209,10 @@ static int open(vf_instance_t *vf, char* args)
 	vf->put_image=put_image;
 	vf->uninit=uninit;
 	
+	if(!vf->priv) {
 	vf->priv = malloc(sizeof(struct vf_priv_s));
 	memset(vf->priv, 0, sizeof(struct vf_priv_s));
+	}
 	if (args) sscanf(args, "%d:%d", &vf->priv->brightness, &vf->priv->contrast);
 
 	process = process_C;
@@ -214,12 +223,26 @@ static int open(vf_instance_t *vf, char* args)
 	return 1;
 }
 
+#define ST_OFF(f) M_ST_OFF(struct vf_priv_s,f)
+static m_option_t vf_opts_fields[] = {
+  {"brightness", ST_OFF(brightness), CONF_TYPE_INT, M_OPT_RANGE,-100 ,100, NULL},
+  {"contrast", ST_OFF(contrast), CONF_TYPE_INT, M_OPT_RANGE,-100 ,100, NULL},
+  { NULL, NULL, 0, 0, 0, 0,  NULL }
+};
+
+static m_struct_t vf_opts = {
+  "eq",
+  sizeof(struct vf_priv_s),
+  &vf_priv_dflt,
+  vf_opts_fields
+};
+
 vf_info_t vf_info_eq = {
 	"soft video equalizer",
 	"eq",
 	"Richard Felker",
 	"",
 	open,
-	NULL
+	&vf_opts
 };