Factorize broken clipping in its own function and document it.
Originally committed as revision 15247 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
5659156760
commit
42c7aeea67
@ -244,6 +244,20 @@ typedef struct MACEContext {
|
||||
ChannelData chd[2];
|
||||
} MACEContext;
|
||||
|
||||
/**
|
||||
* MACE version of av_clip_int16(). We have to do this to keep binary
|
||||
* identical output to the binary decoder.
|
||||
*/
|
||||
static inline int16_t mace_broken_clip_int16(int n)
|
||||
{
|
||||
if (n > 32767)
|
||||
return 32767;
|
||||
else if (n < -32768)
|
||||
return -32767;
|
||||
else
|
||||
return n;
|
||||
}
|
||||
|
||||
static void chomp3(ChannelData *ctx, int16_t *output, uint8_t val,
|
||||
const uint16_t tab1[],
|
||||
const uint16_t tab2[][8], uint32_t numChannels)
|
||||
@ -252,12 +266,7 @@ static void chomp3(ChannelData *ctx, int16_t *output, uint8_t val,
|
||||
|
||||
current = (short) tab2[(ctx->index & 0x7f0) >> 4][val];
|
||||
|
||||
if (current + ctx->lev > 32767)
|
||||
current = 32767;
|
||||
else if (current + ctx->lev < -32768)
|
||||
current = -32767;
|
||||
else
|
||||
current += ctx->lev;
|
||||
current = mace_broken_clip_int16(current + ctx->lev);
|
||||
|
||||
ctx->lev = current - (current >> 3);
|
||||
//*ctx->outPtr++=current >> 8;
|
||||
@ -286,12 +295,7 @@ static void chomp6(ChannelData *ctx, int16_t *output, uint8_t val,
|
||||
ctx->factor -= 314;
|
||||
}
|
||||
|
||||
if (current + ctx->level > 32767)
|
||||
current = 32767;
|
||||
else if (current + ctx->level < -32768)
|
||||
current = -32767;
|
||||
else
|
||||
current += ctx->level;
|
||||
current = mace_broken_clip_int16(current + ctx->level);
|
||||
|
||||
ctx->level = ((current*ctx->factor) >> 15);
|
||||
current >>= 1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user