changeset 3307:4a5d56e89735

correced memory deallocation bug and erors in comments
author anders
date Tue, 04 Dec 2001 12:20:17 +0000
parents f1ba704d7b40
children ea7c1bfc4391
files libao2/pl_delay.c
diffstat 1 files changed, 25 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/libao2/pl_delay.c	Tue Dec 04 09:49:44 2001 +0000
+++ b/libao2/pl_delay.c	Tue Dec 04 12:20:17 2001 +0000
@@ -1,8 +1,8 @@
-/* This is a null audio out plugin it doesnt't really do anything
-   useful but serves an example of how audio plugins work. It delays
-   the output signal by the nuber of samples set by aop_delay n
-   where n is the number of bytes.
- */
+/* Audio out plugin it doesnt't really do anything useful but serves
+   an example of how audio plugins work. It delays the output signal
+   by the nuber of samples set by delay=n where n is the number of
+   bytes.  
+*/
 #define PLUGIN
 
 #include <stdio.h>
@@ -32,7 +32,6 @@
   int rate;         // local data rate
   int channels;     // local number of channels
   int format;       // local format
-
 } pl_delay_t;
 
 static pl_delay_t pl_delay={NULL,NULL,0,0,0,0};
@@ -42,9 +41,11 @@
   switch(cmd){
   case AOCONTROL_PLUGIN_SET_LEN:
     if(pl_delay.data) 
-      uninit();
+      free(pl_delay.data);
     pl_delay.len = ao_plugin_data.len;
     pl_delay.data=(void*)malloc(ao_plugin_data.len);
+    if(!pl_delay.data)
+      return CONTROL_ERROR;
     return CONTROL_OK;
   }
   return -1;
@@ -54,11 +55,12 @@
 // return: 1=success 0=fail
 static int init(){
   int i=0;
-  float time_delay; // The number of tsamples this plugin delays the output data
-  /* if the output format of any of the below parameters differs from
+  float time_delay; // The time in [s] this plugin delays the output data
+  
+  /* If the output format of any of the below parameters differs from
      what is give it should be changed. See ao_plugin init() */
   pl_delay.rate=ao_plugin_data.rate;
-  pl_delay.channels=ao_plugin_data.channels+1; //0=mono 1=stereo
+  pl_delay.channels=ao_plugin_data.channels; //1=mono 2=stereo
   pl_delay.format=ao_plugin_data.format;
 
   // Tell ao_plugin how much this plugin adds to the overall time delay
@@ -67,11 +69,13 @@
     time_delay/=2;
   ao_plugin_data.delay_fix+=time_delay;
 
+  // Create buffer for the delayed data
   pl_delay.delay=(void*)malloc(ao_plugin_cfg.pl_delay_len);
   if(!pl_delay.delay)
     return 0;
-  for(i=0;i<ao_plugin_cfg.pl_delay_len;i++)
-    ((char*)pl_delay.delay)[i]=0;
+  memset(pl_delay.delay, 0, ao_plugin_cfg.pl_delay_len);
+
+  // Print some cool remark of what the plugin does
   printf("[pl_delay] Output sound delayed by %i bytes\n",ao_plugin_cfg.pl_delay_len);
   return 1;
 }
@@ -116,3 +120,12 @@
 
 
 
+
+
+
+
+
+
+
+
+