mirror of
https://git.videolan.org/git/ffmpeg.git
synced 2024-09-06 16:10:09 +02:00
smackaud: use sign_extend() for difference value instead of casting
This commit is contained in:
parent
979c8de549
commit
c86c3c8017
@ -33,6 +33,7 @@
|
||||
|
||||
#include "avcodec.h"
|
||||
#include "libavutil/audioconvert.h"
|
||||
#include "mathops.h"
|
||||
|
||||
#define ALT_BITSTREAM_READER_LE
|
||||
#include "get_bits.h"
|
||||
@ -655,7 +656,7 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
|
||||
else
|
||||
res = 0;
|
||||
val |= h[3].values[res] << 8;
|
||||
pred[1] += (int16_t)val;
|
||||
pred[1] += sign_extend(val, 16);
|
||||
*samples++ = pred[1];
|
||||
} else {
|
||||
if(vlc[0].table)
|
||||
@ -668,7 +669,7 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
|
||||
else
|
||||
res = 0;
|
||||
val |= h[1].values[res] << 8;
|
||||
pred[0] += val;
|
||||
pred[0] += sign_extend(val, 16);
|
||||
*samples++ = pred[0];
|
||||
}
|
||||
}
|
||||
@ -683,14 +684,14 @@ static int smka_decode_frame(AVCodecContext *avctx, void *data, int *data_size,
|
||||
res = get_vlc2(&gb, vlc[1].table, SMKTREE_BITS, 3);
|
||||
else
|
||||
res = 0;
|
||||
pred[1] += (int8_t)h[1].values[res];
|
||||
pred[1] += sign_extend(h[1].values[res], 8);
|
||||
*samples8++ = pred[1];
|
||||
} else {
|
||||
if(vlc[0].table)
|
||||
res = get_vlc2(&gb, vlc[0].table, SMKTREE_BITS, 3);
|
||||
else
|
||||
res = 0;
|
||||
pred[0] += (int8_t)h[0].values[res];
|
||||
pred[0] += sign_extend(h[0].values[res], 8);
|
||||
*samples8++ = pred[0];
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user