]> rtime.felk.cvut.cz Git - frescor/ffmpeg.git/commitdiff
Use the same 8 bit -> 16 bit convertion as quicktime
authorvitor <vitor@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sun, 7 Sep 2008 09:46:55 +0000 (09:46 +0000)
committervitor <vitor@9553f0bf-9b14-0410-a0b8-cfaf0461ba5b>
Sun, 7 Sep 2008 09:46:55 +0000 (09:46 +0000)
git-svn-id: file:///var/local/repositories/ffmpeg/trunk@15245 9553f0bf-9b14-0410-a0b8-cfaf0461ba5b

libavcodec/mace.c

index 2fdf6c6f21ccbba1a2e29cb1ac865b6e2a6cf902..1153a9934c7b981b5f897c34b3fb804b0b3fa4a6 100644 (file)
@@ -234,6 +234,8 @@ static const uint16_t MACEtab4[][8] = {
     { 0x3E22, 0x7FFF, 0x8000, 0xC1DD, 0, 0, 0, 0 },  { 0x40E7, 0x7FFF, 0x8000, 0xBF18, 0, 0, 0, 0 },
 };
 
+#define QT_8S_2_16S(x) (((x) & 0xFF00) | (((x) >> 8) & 0xFF))
+
 typedef struct ChannelData {
     short index, lev, factor, prev2, previous, level;
 } ChannelData;
@@ -259,7 +261,7 @@ static void chomp3(ChannelData *ctx, int16_t *output, uint8_t val,
 
     ctx->lev = current - (current >> 3);
     //*ctx->outPtr++=current >> 8;
-    *output = current;
+    *output = QT_8S_2_16S(current);
     if (( ctx->index += tab1[val]-(ctx->index >> 5) ) < 0)
         ctx->index = 0;
 }
@@ -296,8 +298,10 @@ static void chomp6(ChannelData *ctx, int16_t *output, uint8_t val,
 
 //  *ctx->outPtr++=(ctx->previous+ctx->prev2-((ctx->prev2-current) >> 2)) >> 8;
 //  *ctx->outPtr++=(ctx->previous+current+((ctx->prev2-current) >> 2)) >> 8;
-    output[0] = (ctx->previous + ctx->prev2 - ((ctx->prev2-current) >> 2));
-    output[numChannels] = (ctx->previous + current + ((ctx->prev2-current) >> 2));
+    output[0] = QT_8S_2_16S(ctx->previous + ctx->prev2 -
+                            ((ctx->prev2-current) >> 2));
+    output[numChannels] = QT_8S_2_16S(ctx->previous + current +
+                                      ((ctx->prev2-current) >> 2));
     ctx->prev2 = ctx->previous;
     ctx->previous = current;