summaryrefslogtreecommitdiffstats
path: root/libmpcodecs
diff options
context:
space:
mode:
authorrtogni <rtogni@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-10-07 15:06:53 +0000
committerrtogni <rtogni@b3059339-0415-0410-9bf9-f77b7e298cf2>2007-10-07 15:06:53 +0000
commitb8c80f6477d647ad26ff94b20a22e5dcaa0eddc6 (patch)
tree42aab37044d633a66a7e6afba8fb5d84c5f38d54 /libmpcodecs
parenta3f24d8300623ba09e67db7ca02764dd4d294d5b (diff)
downloadmpv-b8c80f6477d647ad26ff94b20a22e5dcaa0eddc6.tar.bz2
mpv-b8c80f6477d647ad26ff94b20a22e5dcaa0eddc6.tar.xz
Fix output channle ordering
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24721 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libmpcodecs')
-rw-r--r--libmpcodecs/ad_libdca.c49
1 files changed, 24 insertions, 25 deletions
diff --git a/libmpcodecs/ad_libdca.c b/libmpcodecs/ad_libdca.c
index b8eef07352..e59225c1d5 100644
--- a/libmpcodecs/ad_libdca.c
+++ b/libmpcodecs/ad_libdca.c
@@ -52,7 +52,7 @@ LIBAD_EXTERN(libdca)
static const char ch2flags[6] = {
DTS_MONO,
DTS_STEREO,
- DTS_2F1R,
+ DTS_3F,
DTS_2F2R,
DTS_3F2R,
DTS_3F2R | DTS_LFE
@@ -90,10 +90,9 @@ static void convert2s16_multi(sample_t *f, int16_t *s16, int flags, int ch_out)
break;
case DTS_3F:
for(i = 0; i < 256; i++){
- s16[5*i] = convert(f[i]);
- s16[5*i+1] = convert(f[i+512]);
- s16[5*i+2] = s16[5*i+3] = 0;
- s16[5*i+4] = convert(f[i+256]);
+ s16[3*i] = convert(f[i+256]);
+ s16[3*i+1] = convert(f[i+512]);
+ s16[3*i+2] = convert(f[i]);
}
break;
case DTS_2F2R:
@@ -106,57 +105,57 @@ static void convert2s16_multi(sample_t *f, int16_t *s16, int flags, int ch_out)
break;
case DTS_3F2R:
for(i = 0; i < 256; i++){
- s16[5*i] = convert(f[i]);
+ s16[5*i] = convert(f[i+256]);
s16[5*i+1] = convert(f[i+512]);
s16[5*i+2] = convert(f[i+768]);
s16[5*i+3] = convert(f[i+1024]);
- s16[5*i+4] = convert(f[i+256]);
+ s16[5*i+4] = convert(f[i]);
}
break;
case DTS_MONO | DTS_LFE:
for(i = 0; i < 256; i++){
s16[6*i] = s16[6*i+1] = s16[6*i+2] = s16[6*i+3] = 0;
- s16[6*i+4] = convert(f[i+256]);
- s16[6*i+5] = convert(f[i]);
+ s16[6*i+4] = convert(f[i]);
+ s16[6*i+5] = convert(f[i+256]);
}
break;
case DTS_CHANNEL | DTS_LFE:
case DTS_STEREO | DTS_LFE:
case DTS_DOLBY | DTS_LFE:
for(i = 0; i < 256; i++){
- s16[6*i] = convert(f[i+256]);
- s16[6*i+1] = convert(f[i+512]);
+ s16[6*i] = convert(f[i]);
+ s16[6*i+1] = convert(f[i+256]);
s16[6*i+2] = s16[6*i+3] = s16[6*i+4] = 0;
- s16[6*i+5] = convert(f[i]);
+ s16[6*i+5] = convert(f[i+512]);
}
break;
case DTS_3F | DTS_LFE:
for(i = 0; i < 256; i++){
s16[6*i] = convert(f[i+256]);
- s16[6*i+1] = convert(f[i+768]);
+ s16[6*i+1] = convert(f[i+512]);
s16[6*i+2] = s16[6*i+3] = 0;
- s16[6*i+4] = convert(f[i+512]);
- s16[6*i+5] = convert(f[i]);
+ s16[6*i+4] = convert(f[i]);
+ s16[6*i+5] = convert(f[i+768]);
}
break;
case DTS_2F2R | DTS_LFE:
for(i = 0; i < 256; i++){
- s16[6*i] = convert(f[i+256]);
- s16[6*i+1] = convert(f[i+512]);
- s16[6*i+2] = convert(f[i+768]);
- s16[6*i+3] = convert(f[i+1024]);
+ s16[6*i] = convert(f[i]);
+ s16[6*i+1] = convert(f[i+256]);
+ s16[6*i+2] = convert(f[i+512]);
+ s16[6*i+3] = convert(f[i+768]);
s16[6*i+4] = 0;
- s16[6*i+5] = convert(f[i]);
+ s16[6*i+5] = convert(f[1024]);
}
break;
case DTS_3F2R | DTS_LFE:
for(i = 0; i < 256; i++){
s16[6*i] = convert(f[i+256]);
- s16[6*i+1] = convert(f[i+768]);
- s16[6*i+2] = convert(f[i+1024]);
- s16[6*i+3] = convert(f[i+1280]);
- s16[6*i+4] = convert(f[i+512]);
- s16[6*i+5] = convert(f[i]);
+ s16[6*i+1] = convert(f[i+512]);
+ s16[6*i+2] = convert(f[i+768]);
+ s16[6*i+3] = convert(f[i+1024]);
+ s16[6*i+4] = convert(f[i]);
+ s16[6*i+5] = convert(f[i+1280]);
}
break;
}