summaryrefslogtreecommitdiffstats
path: root/libao2
diff options
context:
space:
mode:
authoranders <anders@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-12-04 12:20:17 +0000
committeranders <anders@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-12-04 12:20:17 +0000
commit68ac817cb76dff6ac70df545927554cf9e6c4269 (patch)
treecaa4dfbdb7c9261867e5955dd56d9f86c04ecab4 /libao2
parente49ab7e5bf41722cac80ce4bd60645a2441cdbab (diff)
downloadmpv-68ac817cb76dff6ac70df545927554cf9e6c4269.tar.bz2
mpv-68ac817cb76dff6ac70df545927554cf9e6c4269.tar.xz
correced memory deallocation bug and erors in comments
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@3308 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2')
-rw-r--r--libao2/pl_delay.c37
1 files changed, 25 insertions, 12 deletions
diff --git a/libao2/pl_delay.c b/libao2/pl_delay.c
index c7eb4c5f27..70c5a37c69 100644
--- a/libao2/pl_delay.c
+++ b/libao2/pl_delay.c
@@ -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 @@ typedef struct pl_delay_s
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 @@ static int control(int cmd,int arg){
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 @@ static int control(int cmd,int arg){
// 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 @@ static int init(){
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 @@ static int play(){
+
+
+
+
+
+
+
+
+