[FFmpeg-devel] [PATCH] dtsdec: add missing break statements to convert2s16_multi()

Pavlov Konstantin thresh
Tue May 15 16:19:17 CEST 2007


Hello.

DTS decoding was broken for every speaker config except 5.1.

Patch by Sergey Vlasov <vsu at altlinux.org>

-- 
Your depth of comprehension may tend to make you lax in worldly ways.
-------------- next part --------------
>From 487ee0ad23898ebe3d49a2ffadef88c665200eb3 Mon Sep 17 00:00:00 2001
From: Sergey Vlasov <vsu at altlinux.ru>
Date: Tue, 15 May 2007 13:55:09 +0400
Subject: dtsdec: add missing break statements to convert2s16_multi()

DTS decoding was broken for every speaker config except 5.1.

Signed-off-by: Sergey Vlasov <vsu at altlinux.ru>
---
 libavcodec/dtsdec.c |   10 ++++++++++
 1 files changed, 10 insertions(+), 0 deletions(-)

diff --git a/libavcodec/dtsdec.c b/libavcodec/dtsdec.c
index 1be7c84..cf77a57 100644
--- a/libavcodec/dtsdec.c
+++ b/libavcodec/dtsdec.c
@@ -55,6 +55,7 @@ convert2s16_multi(sample_t *f, int16_t *s16, int flags)
             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 @@ convert2s16_multi(sample_t *f, int16_t *s16, int flags)
             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 @@ convert2s16_multi(sample_t *f, int16_t *s16, int flags)
             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 @@ convert2s16_multi(sample_t *f, int16_t *s16, int flags)
             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 @@ convert2s16_multi(sample_t *f, int16_t *s16, int flags)
             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 @@ convert2s16_multi(sample_t *f, int16_t *s16, int flags)
             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 @@ convert2s16_multi(sample_t *f, int16_t *s16, int flags)
             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 @@ convert2s16_multi(sample_t *f, int16_t *s16, int flags)
             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 @@ convert2s16_multi(sample_t *f, int16_t *s16, int flags)
             s16[6*i+4] = convert(f[i]);
             s16[6*i+5] = convert(f[i+1280]);
         }
+        break;
     }
 }
 
-- 
1.5.1.1.197.g66b3

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: Digital signature
URL: <http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/attachments/20070515/f1d69e42/attachment.pgp>



More information about the ffmpeg-devel mailing list