[MPlayer-cvslog] r27270 - trunk/libmpcodecs/ad_msadpcm.c
reimar
subversion at mplayerhq.hu
Sat Jul 12 12:08:40 CEST 2008
Author: reimar
Date: Sat Jul 12 12:08:40 2008
New Revision: 27270
Log:
Simplify and clamp coefficient index for MS ADPCM
Modified:
trunk/libmpcodecs/ad_msadpcm.c
Modified: trunk/libmpcodecs/ad_msadpcm.c
==============================================================================
--- trunk/libmpcodecs/ad_msadpcm.c (original)
+++ trunk/libmpcodecs/ad_msadpcm.c Sat Jul 12 12:08:40 2008
@@ -91,10 +91,21 @@ static int control(sh_audio_t *sh_audio,
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,
int channels, int block_size)
{
int current_channel = 0;
+ int coeff_idx;
int idelta[2];
int sample1[2];
int sample2[2];
@@ -112,21 +123,15 @@ static int ms_adpcm_decode_block(unsigne
return -1;
// fetch the header information, in stereo if both channels are present
- if (input[stream_ptr] > 6)
- mp_msg(MSGT_DECAUDIO, MSGL_WARN,
- "MS ADPCM: coefficient (%d) out of range (should be [0..6])\n",
- input[stream_ptr]);
- coeff1[0] = ms_adapt_coeff1[input[stream_ptr]];
- coeff2[0] = ms_adapt_coeff2[input[stream_ptr]];
+ coeff_idx = check_coeff(input[stream_ptr]);
+ coeff1[0] = ms_adapt_coeff1[coeff_idx];
+ coeff2[0] = ms_adapt_coeff2[coeff_idx];
stream_ptr++;
if (channels == 2)
{
- if (input[stream_ptr] > 6)
- mp_msg(MSGT_DECAUDIO, MSGL_WARN,
- "MS ADPCM: coefficient (%d) out of range (should be [0..6])\n",
- input[stream_ptr]);
- coeff1[1] = ms_adapt_coeff1[input[stream_ptr]];
- coeff2[1] = ms_adapt_coeff2[input[stream_ptr]];
+ coeff_idx = check_coeff(input[stream_ptr]);
+ coeff1[1] = ms_adapt_coeff1[coeff_idx];
+ coeff2[1] = ms_adapt_coeff2[coeff_idx];
stream_ptr++;
}
More information about the MPlayer-cvslog
mailing list