summaryrefslogtreecommitdiffstats
path: root/libaf
diff options
context:
space:
mode:
authorreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-09 19:46:49 +0000
committerreimar <reimar@b3059339-0415-0410-9bf9-f77b7e298cf2>2005-05-09 19:46:49 +0000
commit313cc2c9553050df45f83d27e18aab9860c8e177 (patch)
tree1058b548ba1a28941a69585dcefc268209fd6669 /libaf
parent5bf0f176bb2f1fc3ee129168acc30c93e60f0e89 (diff)
downloadmpv-313cc2c9553050df45f83d27e18aab9860c8e177.tar.bz2
mpv-313cc2c9553050df45f83d27e18aab9860c8e177.tar.xz
actually output 2 channel audio (instead of 6 channel with 4 empty channels)
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@15385 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libaf')
-rw-r--r--libaf/af_hrtf.c26
1 files changed, 13 insertions, 13 deletions
diff --git a/libaf/af_hrtf.c b/libaf/af_hrtf.c
index 86d52c6599..f8d14b318e 100644
--- a/libaf/af_hrtf.c
+++ b/libaf/af_hrtf.c
@@ -267,6 +267,7 @@ inline void update_ch(af_hrtf_t *s, short *in, const int k)
static int control(struct af_instance_s *af, int cmd, void* arg)
{
af_hrtf_t *s = af->setup;
+ int test_output_res;
char mode;
switch(cmd) {
@@ -281,8 +282,6 @@ static int control(struct af_instance_s *af, int cmd, void* arg)
return AF_ERROR;
}
af->data->nch = ((af_data_t*)arg)->nch;
- if(af->data->nch < 5) {
- af->data->nch = 5;
if(af->data->nch == 2) {
/* 2 channel input */
if(s->decode_mode != HRTF_MIX_MATRIX2CH) {
@@ -290,11 +289,17 @@ static int control(struct af_instance_s *af, int cmd, void* arg)
s->decode_mode = HRTF_MIX_STEREO;
}
}
- }
+ else if (af->data->nch < 5)
+ af->data->nch = 5;
af->data->format = AF_FORMAT_S16_NE;
af->data->bps = 2;
+ test_output_res = af_test_output(af, (af_data_t*)arg);
+ af->mul.n = 2;
+ af->mul.d = af->data->nch;
+ // after testing input set the real output format
+ af->data->nch = 2;
s->print_flag = 1;
- return af_test_output(af, (af_data_t*)arg);
+ return test_output_res;
case AF_CONTROL_COMMAND_LINE:
sscanf((char*)arg, "%c", &mode);
switch(mode) {
@@ -516,9 +521,9 @@ static af_data_t* play(struct af_instance_s *af, af_data_t *data)
left += (1 - BASSCROSS) * left_b + BASSCROSS * right_b;
right += (1 - BASSCROSS) * right_b + BASSCROSS * left_b;
/* Also mix the LFE channel (if available) */
- if(af->data->nch >= 6) {
- left += out[5] * M3_01DB;
- right += out[5] * M3_01DB;
+ if(data->nch >= 6) {
+ left += in[5] * M3_01DB;
+ right += in[5] * M3_01DB;
}
/* Amplitude renormalization. */
@@ -545,11 +550,6 @@ static af_data_t* play(struct af_instance_s *af, af_data_t *data)
break;
}
- /* The remaining channels are not needed any more */
- out[2] = out[3] = out[4] = 0;
- if(af->data->nch >= 6)
- out[5] = 0;
-
/* Next sample... */
in = &in[data->nch];
out = &out[af->data->nch];
@@ -561,7 +561,7 @@ static af_data_t* play(struct af_instance_s *af, af_data_t *data)
/* Set output data */
data->audio = af->data->audio;
data->len = (data->len * af->mul.n) / af->mul.d;
- data->nch = af->data->nch;
+ data->nch = 2;
return data;
}