summaryrefslogtreecommitdiff
path: root/libavcodec/mace.c
diff options
context:
space:
mode:
authorVitor Sessak <vitor1001@gmail.com>2008-09-07 09:46:55 +0000
committerVitor Sessak <vitor1001@gmail.com>2008-09-07 09:46:55 +0000
commitc8e0861e4910a0ec7182b89bf8eecbe98846f44e (patch)
tree886c047eb3a25b583e12484b69e8b1d922c4a02e /libavcodec/mace.c
parent4ea70242a804714f70bd6003cac7c48240c2a60f (diff)
Use the same 8 bit -> 16 bit conversion as QuickTime.
Originally committed as revision 15245 to svn://svn.ffmpeg.org/ffmpeg/trunk
Diffstat (limited to 'libavcodec/mace.c')
-rw-r--r--libavcodec/mace.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/libavcodec/mace.c b/libavcodec/mace.c
index 2fdf6c6f21..1153a9934c 100644
--- a/libavcodec/mace.c
+++ b/libavcodec/mace.c
@@ -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;