# HG changeset patch # User diego # Date 1179312618 0 # Node ID 03aa103464d498888ca5b7a9441efc3928242f1c # Parent d5ba514e3f4ae1597a8f4db74ad4c044256b106d DTS decoding was broken for every speaker configuration except 5.1. patch by Sergey Vlasov, vsu altlinux org diff -r d5ba514e3f4a -r 03aa103464d4 dtsdec.c --- a/dtsdec.c Wed May 16 09:51:45 2007 +0000 +++ b/dtsdec.c Wed May 16 10:50:18 2007 +0000 @@ -55,6 +55,7 @@ s16[5*i] = s16[5*i+1] = s16[5*i+2] = s16[5*i+3] = 0; s16[5*i+4] = convert(f[i]); } + break; case DTS_CHANNEL: case DTS_STEREO: case DTS_DOLBY: @@ -62,6 +63,7 @@ s16[2*i] = convert(f[i]); s16[2*i+1] = convert(f[i+256]); } + break; case DTS_3F: for(i = 0; i < 256; i++){ s16[5*i] = convert(f[i+256]); @@ -69,6 +71,7 @@ s16[5*i+2] = s16[5*i+3] = 0; s16[5*i+4] = convert(f[i]); } + break; case DTS_2F2R: for(i = 0; i < 256; i++){ s16[4*i] = convert(f[i]); @@ -76,6 +79,7 @@ s16[4*i+2] = convert(f[i+512]); s16[4*i+3] = convert(f[i+768]); } + break; case DTS_3F2R: for(i = 0; i < 256; i++){ s16[5*i] = convert(f[i+256]); @@ -84,12 +88,14 @@ s16[5*i+3] = convert(f[i+1024]); 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]); s16[6*i+5] = convert(f[i+256]); } + break; case DTS_CHANNEL | DTS_LFE: case DTS_STEREO | DTS_LFE: case DTS_DOLBY | DTS_LFE: @@ -99,6 +105,7 @@ s16[6*i+2] = s16[6*i+3] = s16[6*i+4] = 0; 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]); @@ -107,6 +114,7 @@ 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]); @@ -116,6 +124,7 @@ s16[6*i+4] = 0; s16[6*i+5] = convert(f[i+1024]); } + break; case DTS_3F2R | DTS_LFE: for(i = 0; i < 256; i++){ s16[6*i] = convert(f[i+256]); @@ -125,6 +134,7 @@ s16[6*i+4] = convert(f[i]); s16[6*i+5] = convert(f[i+1280]); } + break; } }