diff options
Diffstat (limited to 'DOCS/OUTDATED-tech/libao2.txt')
-rw-r--r-- | DOCS/OUTDATED-tech/libao2.txt | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/DOCS/OUTDATED-tech/libao2.txt b/DOCS/OUTDATED-tech/libao2.txt new file mode 100644 index 0000000000..49cb0284f7 --- /dev/null +++ b/DOCS/OUTDATED-tech/libao2.txt @@ -0,0 +1,56 @@ +6. libao2: this control audio playing + + As in libvo (see 5.) also here are some drivers, based on the same API: + +static int control(int cmd, int arg); + This is for reading/setting driver-specific and other special parameters. + Not really used for now. + +static int init(int rate,int channels,int format,int flags); + The init of driver, opens device, sets sample rate, channels, sample format + parameters. + Sample format: usually AFMT_S16_LE or AFMT_U8, for more definitions see + dec_audio.c and linux/soundcards.h files! + +static void uninit(void); + Guess what. + Ok I help: closes the device, not (yet) called when exit. + +static void reset(void); + Resets device. To be exact, it's for deleting buffers' contents, + so after reset() the previously received stuff won't be output. + (called if pause or seek) + +static int get_space(void); + Returns how many bytes can be written into the audio buffer without + blocking (making caller process wait). MPlayer occasionally checks the + remaining space and tries to fill the buffer with play() if there's free + space. The buffer size used should be sane; a buffer that is too small + could run empty before MPlayer tries filling it again (normally once per + video frame), a buffer that is too big would force MPlayer decode the file + far ahead trying to find enough audio data to fill it. + +static int play(void* data,int len,int flags); + Plays a bit of audio, which is received throught the "data" memory area, with + a size of "len". It has to copy the data, because they can be overwritten + after the call is made. Doesn't have to use all the bytes; it has to + return the number of bytes used used (copied to buffer). If + flags|AOPLAY_FINAL_CHUNK is true then this is the last audio in the file. + The purpose of this flag is to tell aos that round down the audio played + from "len" to a multiple of some chunksize that this "len" should not be + rounded down to 0 or the data will never be played (as MPlayer will never + call play() with a larger len). + +static float get_delay(void); + Returns how long time it will take to play the data currently in the + output buffer. Be exact, if possible, since the whole timing depends + on this! In the worst case, return the maximum delay. + +!!! Because the video is synchronized to the audio (card), it's very important +!!! that the get_delay function is correctly implemented! + +static void audio_pause(void); + Pause playing but do not delete buffered data if possible. + +static void audio_resume(void); + Continue playing after audio_pause(). |