diff options
author | atmosfear <atmosfear@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-06-12 11:00:15 +0000 |
---|---|---|
committer | atmosfear <atmosfear@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2001-06-12 11:00:15 +0000 |
commit | de46867f2d19a9aff40ac95597a590e33c9c66d5 (patch) | |
tree | 691604e73ffa6ef049531ba37a7b60929f995fa4 /libao2/ao_pcm.c | |
parent | 17ae9505a42d49428afb2559ed417d615c265db8 (diff) | |
download | mpv-de46867f2d19a9aff40ac95597a590e33c9c66d5.tar.bz2 mpv-de46867f2d19a9aff40ac95597a590e33c9c66d5.tar.xz |
Added raw PCM writer ao driver.
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@1108 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'libao2/ao_pcm.c')
-rw-r--r-- | libao2/ao_pcm.c | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/libao2/ao_pcm.c b/libao2/ao_pcm.c new file mode 100644 index 0000000000..165b2acba4 --- /dev/null +++ b/libao2/ao_pcm.c @@ -0,0 +1,97 @@ +#include <stdio.h> +#include <stdlib.h> + +#include "audio_out.h" +#include "audio_out_internal.h" + +static ao_info_t info = +{ + "PCM writer audio output", + "pcm", + "Atmosfear", + "" +}; + +LIBAO_EXTERN(pcm) + +// there are some globals: +// ao_samplerate +// ao_channels +// ao_format +// ao_bps +// ao_outburst +// ao_buffersize + +static FILE *fp = NULL; + +// to set/get/query special features/parameters +static int control(int cmd,int arg){ + return -1; +} + +// open & setup audio device +// return: 1=success 0=fail +static int init(int rate,int channels,int format,int flags){ + + printf("PCM: File: audiodump.pcm Samplerate: %iHz Channels: %s Format %s\n", rate, (channels > 1) ? "Stereo" : "Mono", audio_out_format_name(format)); + printf("PCM: Info - fastest dumping is achieved with -vo null -hardframedrop.\n"); + fp = fopen("audiodump.pcm", "wb"); + + ao_outburst = 4096; + + + if(fp) return 1; + printf("PCM: Failed to open audiodump.pcm for writing!\n"); + return 0; +} + +// close audio device +static void uninit(){ + fclose(fp); +} + +// stop playing and empty buffers (for seeking/pause) +static void reset(){ + +} + +// stop playing, keep buffers (for pause) +static void audio_pause() +{ + // for now, just call reset(); + reset(); +} + +// resume playing, after audio_pause() +static void audio_resume() +{ +} + +// return: how many bytes can be played without blocking +static int get_space(){ + + return ao_outburst; +} + +// plays 'len' bytes of 'data' +// it should round it down to outburst*n +// return: number of bytes played +static int play(void* data,int len,int flags){ + + //printf("PCM: Writing chunk!\n"); + fwrite(data,len,1,fp); + + return len; +} + +// return: how many unplayed bytes are in the buffer +static int get_delay(){ + + return 0; +} + + + + + + |