1
0
mirror of https://github.com/mpv-player/mpv synced 2025-03-07 22:57:42 +00:00

Simplify and clamp coefficient index for MS ADPCM

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@27270 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
reimar 2008-07-12 10:08:40 +00:00
parent c83dca172f
commit 422c92e314

View File

@ -91,10 +91,21 @@ static int control(sh_audio_t *sh_audio,int cmd,void* arg, ...)
return CONTROL_UNKNOWN; return CONTROL_UNKNOWN;
} }
static inline int check_coeff(uint8_t c) {
if (c > 6) {
mp_msg(MSGT_DECAUDIO, MSGL_WARN,
"MS ADPCM: coefficient (%d) out of range (should be [0..6])\n",
c);
c = 6;
}
return c;
}
static int ms_adpcm_decode_block(unsigned short *output, unsigned char *input, static int ms_adpcm_decode_block(unsigned short *output, unsigned char *input,
int channels, int block_size) int channels, int block_size)
{ {
int current_channel = 0; int current_channel = 0;
int coeff_idx;
int idelta[2]; int idelta[2];
int sample1[2]; int sample1[2];
int sample2[2]; int sample2[2];
@ -112,21 +123,15 @@ static int ms_adpcm_decode_block(unsigned short *output, unsigned char *input,
return -1; return -1;
// fetch the header information, in stereo if both channels are present // fetch the header information, in stereo if both channels are present
if (input[stream_ptr] > 6) coeff_idx = check_coeff(input[stream_ptr]);
mp_msg(MSGT_DECAUDIO, MSGL_WARN, coeff1[0] = ms_adapt_coeff1[coeff_idx];
"MS ADPCM: coefficient (%d) out of range (should be [0..6])\n", coeff2[0] = ms_adapt_coeff2[coeff_idx];
input[stream_ptr]);
coeff1[0] = ms_adapt_coeff1[input[stream_ptr]];
coeff2[0] = ms_adapt_coeff2[input[stream_ptr]];
stream_ptr++; stream_ptr++;
if (channels == 2) if (channels == 2)
{ {
if (input[stream_ptr] > 6) coeff_idx = check_coeff(input[stream_ptr]);
mp_msg(MSGT_DECAUDIO, MSGL_WARN, coeff1[1] = ms_adapt_coeff1[coeff_idx];
"MS ADPCM: coefficient (%d) out of range (should be [0..6])\n", coeff2[1] = ms_adapt_coeff2[coeff_idx];
input[stream_ptr]);
coeff1[1] = ms_adapt_coeff1[input[stream_ptr]];
coeff2[1] = ms_adapt_coeff2[input[stream_ptr]];
stream_ptr++; stream_ptr++;
} }