[asterisk-commits] branch file/coremedia - r7323 in /team/file/coremedia: ./ include/asterisk/ s...

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Sat Dec 3 19:38:24 CST 2005


Author: file
Date: Sat Dec  3 19:38:22 2005
New Revision: 7323

URL: http://svn.digium.com/view/asterisk?rev=7323&view=rev
Log:
Add checks to shim_volume (thanks stevek!)

Modified:
    team/file/coremedia/coremedia.c
    team/file/coremedia/include/asterisk/frame.h
    team/file/coremedia/shims/shim_volume.c

Modified: team/file/coremedia/coremedia.c
URL: http://svn.digium.com/view/asterisk/team/file/coremedia/coremedia.c?rev=7323&r1=7322&r2=7323&view=diff
==============================================================================
--- team/file/coremedia/coremedia.c (original)
+++ team/file/coremedia/coremedia.c Sat Dec  3 19:38:22 2005
@@ -256,10 +256,8 @@
     frame = path->decoder->frameout(path->dec_state);
     /* Override subclass to be that of the decoder entry */
     frame->subclass = path->decoder_entry->subclass;
-    /* Get the sample rate of the decoded entry */
   } else {
     frame = f;
-    /* Using the subclass - get the sample rate */
   }
 
   /* If we are here we are absolutely signed linear - so hand off to the shims */
@@ -273,7 +271,6 @@
 
   /* Do our pass through the encoder if available */
   if (path->encoder != NULL) {
-    /* Make sure the sample rate is the same - otherwise we need to change it */
     /* Now run it through this encoder */
     path->encoder->framein(path->enc_state, frame);
     frame = path->encoder->frameout(path->enc_state);

Modified: team/file/coremedia/include/asterisk/frame.h
URL: http://svn.digium.com/view/asterisk/team/file/coremedia/include/asterisk/frame.h?rev=7323&r1=7322&r2=7323&view=diff
==============================================================================
--- team/file/coremedia/include/asterisk/frame.h (original)
+++ team/file/coremedia/include/asterisk/frame.h Sat Dec  3 19:38:22 2005
@@ -92,7 +92,7 @@
 	/*! Subclass, frame dependent */
 	int subclass;				
 	/*! Length of data */
-	int datalen;				
+	int datalen;
 	/*! Number of 8khz samples in this frame */
 	int samples;				
 	/*! Was the data malloc'd?  i.e. should we free it when we discard the frame? */

Modified: team/file/coremedia/shims/shim_volume.c
URL: http://svn.digium.com/view/asterisk/team/file/coremedia/shims/shim_volume.c?rev=7323&r1=7322&r2=7323&view=diff
==============================================================================
--- team/file/coremedia/shims/shim_volume.c (original)
+++ team/file/coremedia/shims/shim_volume.c Sat Dec  3 19:38:22 2005
@@ -58,6 +58,7 @@
 {
   int i = 0;
   short *s = frame->data;
+  int new_value = 0;
 
   /* Using the private structure - adjust the audio */
   if (pvt == NULL) /* No private structure - just return the audio */
@@ -66,9 +67,16 @@
   /* Okay here is where it gets complicated */
   for (i=0; i<frame->datalen; i++) {
     if (0 > pvt->volume)
-      s[i] = s[i] / (short)abs(pvt->volume);
+      new_value = s[i] / abs(pvt->volume);
     else
-      s[i] = s[i] * (short)pvt->volume;
+      new_value = s[i] * pvt->volume;
+    /* Do sanity checks on the new value */
+    if (new_value > 32767)
+      new_value = 32767;
+    else if (new_value < -32768)
+      new_value = -32768;
+    /* Finally - commit the value */
+    s[i] = (short)new_value;
   }
 
 



More information about the asterisk-commits mailing list