[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