summaryrefslogtreecommitdiffstats
path: root/libaf
diff options
context:
space:
mode:
authorzuxy <zuxy@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-17 12:18:13 +0000
committerzuxy <zuxy@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-06-17 12:18:13 +0000
commit6e6d3acfa9b3a9d6d9bc9a9697202af62e3c9f92 (patch)
treed2ad215efd36600c066c75bdc201fe3df87c0385 /libaf
parent2c1ee29835bc381f150a578afcd0b30b7423554b (diff)
downloadmpv-6e6d3acfa9b3a9d6d9bc9a9697202af62e3c9f92.tar.bz2
mpv-6e6d3acfa9b3a9d6d9bc9a9697202af62e3c9f92.tar.xz
Add AF_CONTROL_PAN_BALANCE control
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@23571 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libaf')
-rw-r--r--libaf/af_pan.c17
-rw-r--r--libaf/control.h2
2 files changed, 19 insertions, 0 deletions
diff --git a/libaf/af_pan.c b/libaf/af_pan.c
index 12955897d7..7d25e1afde 100644
--- a/libaf/af_pan.c
+++ b/libaf/af_pan.c
@@ -111,6 +111,23 @@ static int control(struct af_instance_s* af, int cmd, void* arg)
case AF_CONTROL_PAN_NOUT | AF_CONTROL_GET:
*(int*)arg = af->data->nch;
return AF_OK;
+ case AF_CONTROL_PAN_BALANCE | AF_CONTROL_SET:{
+ float val = *(float*)arg;
+ if (s->nch)
+ return AF_ERROR;
+ if (af->data->nch >= 2) {
+ s->level[0][0] = min(1.f, 1.f - val);
+ s->level[0][1] = max(0.f, val);
+ s->level[1][0] = max(0.f, -val);
+ s->level[1][1] = min(1.f, 1.f + val);
+ }
+ return AF_OK;
+ }
+ case AF_CONTROL_PAN_BALANCE | AF_CONTROL_GET:
+ if (s->nch)
+ return AF_ERROR;
+ *(float*)arg = s->level[0][1] - s->level[1][0];
+ return AF_OK;
}
return AF_UNKNOWN;
}
diff --git a/libaf/control.h b/libaf/control.h
index b580a6f7fa..80eff7c584 100644
--- a/libaf/control.h
+++ b/libaf/control.h
@@ -193,6 +193,8 @@ typedef struct af_control_ext_s{
// Number of outputs from pan, arg is int*
#define AF_CONTROL_PAN_NOUT 0x00001B00 | AF_CONTROL_FILTER_SPECIFIC
+// Balance, arg is float*; range -1 (left) to 1 (right), 0 center
+#define AF_CONTROL_PAN_BALANCE 0x00002500 | AF_CONTROL_FILTER_SPECIFIC
// Set equalizer gain, arg is a control_ext with a float*
#define AF_CONTROL_EQUALIZER_GAIN 0x00001C00 | AF_CONTROL_FILTER_SPECIFIC