changeset 5011:03aa103464d4 libavcodec

DTS decoding was broken for every speaker configuration except 5.1. patch by Sergey Vlasov, vsu altlinux org
author diego
date Wed, 16 May 2007 10:50:18 +0000
parents d5ba514e3f4a
children 3769553b95a2
files dtsdec.c
diffstat 1 files changed, 10 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- 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;
     }
 }