Mercurial > mplayer.hg
changeset 6848:4846c53f548d
libao2 stuff move dto libao2.txt
added reference to codecs related .txt files
author | arpi |
---|---|
date | Tue, 30 Jul 2002 17:56:24 +0000 |
parents | c0a3d33f3245 |
children | 91d6e1365427 |
files | DOCS/tech/general.txt DOCS/tech/libao2.txt |
diffstat | 2 files changed, 105 insertions(+), 94 deletions(-) [+] |
line wrap: on
line diff
--- a/DOCS/tech/general.txt Tue Jul 30 17:41:11 2002 +0000 +++ b/DOCS/tech/general.txt Tue Jul 30 17:56:24 2002 +0000 @@ -211,104 +211,18 @@ ve_*.c - video encoder (used by mencoder) vf_*.c - video filter (see option -vop) + On this topic, see also: + dr-methods.txt - Direct rendering, MPI buffer management for video codecs + codecs.conf.txt - How to write/edit codec configuration file (codecs.conf) + codec-devel.txt - Mike's hints about codec development - a bit OUTDATED + hwac3.txt - about SP/DIF audio passthrough + 5. libvo: this displays the frame. for details on this, read libvo.txt 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(); - Guess what. - Ok I help: closes the device, not (yet) called when exit. - -static void reset(); - 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(); - Returns how many bytes can be written into the audio buffer without - blocking (making caller process wait). If the buffer is (nearly) full, - has to return 0! - If it never gives 0, MPlayer won't work! - -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". The "flags" isn't used yet. It has to copy the data, because - they can be overwritten after the call is made. Doesn't really have to use - all the bytes, it has to give back how many have been used (copied to - buffer). - -static float get_delay(); - 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_space and get_delay functions are correctly implemented! +6.a audio plugins -6.a audio plugins - Audio plugins are used for processing the audio data before it - reaches the soundcard driver. A plugin can change the following - aspects of the audio data stream: - 1. Sample format - 2. Sample rate - 3. Number of channels - 4. The data itself (i.e. filtering and other sound effects) - 5. The delay (almost all plugins does this) - The plugin interface is implemented as a pseudo device driver with - the catchy name "plugin". The plugins are executed sequentially - ordered by the "-aop list=plugin1,plugin2,..." command line switch. - To add plugins add an entry in audio_plugin.h the makefile and - create a source file named "pl_whatever.c". Input parameters are - added to audio_plugin.h and to cfg-mplayer.h. A good starting point - for writing plugins is pl_delay.c. Below is a description of what - the functions does: - -static int control(int cmd, int arg); - This is for reading/setting plugin-specific and other special - parameters and can be used for keyboard input for example. All - plugins bust respond to cmd=AOCONTROL_PLUGIN_SET_LEN which is part - of the initialization of the plugin. When this command is received - the parameter pl_delay.len will contain the maximum size of data the - plugin can produce. This can be used for calculating and allocating - buffer space for the plugin. Before the function exits the parameter - pl_delay.len must be set to the maximum data size the plugin can - receive. Return CONTROL_OK for success and CONTROL_ERROR for fail, - other control codes are found in audio_out.h. + for details on this, read libao2.txt -static int init(); - This function is for initializing the plugin, it is called once - before the playing is started. In this function the plugin can read - AND write to the ao_plugin_data struct to determine and set input - and output parameters. It is important to write to the - ao_plugin_data.sz_mult and ao_plugin_data.delay_fix parameters if - the plugin changes the data size or adds delay. Return 0 for fail - and 1 for success. - -static void uninit() - Called before mplayer exits. Used for deallocating dynamic buffers. - -static void reset() - Called during reset can be used to empty buffers. Mplayer calls this - function when pause is pressed. - -static int play() - Called for every block of audio data sent through the plugin. This - function should be optimized for speed. The incoming data is found - in ao_plugin_data.data having length ao_plugin_data.len. These two - parameters should be changed by the plugin. Return 1 for success and - 0 for fail. -
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DOCS/tech/libao2.txt Tue Jul 30 17:56:24 2002 +0000 @@ -0,0 +1,97 @@ +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(); + Guess what. + Ok I help: closes the device, not (yet) called when exit. + +static void reset(); + 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(); + Returns how many bytes can be written into the audio buffer without + blocking (making caller process wait). If the buffer is (nearly) full, + has to return 0! + If it never gives 0, MPlayer won't work! + +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". The "flags" isn't used yet. It has to copy the data, because + they can be overwritten after the call is made. Doesn't really have to use + all the bytes, it has to give back how many have been used (copied to + buffer). + +static float get_delay(); + 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_space and get_delay functions are correctly implemented! + +6.a audio plugins + Audio plugins are used for processing the audio data before it + reaches the soundcard driver. A plugin can change the following + aspects of the audio data stream: + 1. Sample format + 2. Sample rate + 3. Number of channels + 4. The data itself (i.e. filtering and other sound effects) + 5. The delay (almost all plugins does this) + The plugin interface is implemented as a pseudo device driver with + the catchy name "plugin". The plugins are executed sequentially + ordered by the "-aop list=plugin1,plugin2,..." command line switch. + To add plugins add an entry in audio_plugin.h the makefile and + create a source file named "pl_whatever.c". Input parameters are + added to audio_plugin.h and to cfg-mplayer.h. A good starting point + for writing plugins is pl_delay.c. Below is a description of what + the functions does: + +static int control(int cmd, int arg); + This is for reading/setting plugin-specific and other special + parameters and can be used for keyboard input for example. All + plugins bust respond to cmd=AOCONTROL_PLUGIN_SET_LEN which is part + of the initialization of the plugin. When this command is received + the parameter pl_delay.len will contain the maximum size of data the + plugin can produce. This can be used for calculating and allocating + buffer space for the plugin. Before the function exits the parameter + pl_delay.len must be set to the maximum data size the plugin can + receive. Return CONTROL_OK for success and CONTROL_ERROR for fail, + other control codes are found in audio_out.h. + +static int init(); + This function is for initializing the plugin, it is called once + before the playing is started. In this function the plugin can read + AND write to the ao_plugin_data struct to determine and set input + and output parameters. It is important to write to the + ao_plugin_data.sz_mult and ao_plugin_data.delay_fix parameters if + the plugin changes the data size or adds delay. Return 0 for fail + and 1 for success. + +static void uninit() + Called before mplayer exits. Used for deallocating dynamic buffers. + +static void reset() + Called during reset can be used to empty buffers. Mplayer calls this + function when pause is pressed. + +static int play() + Called for every block of audio data sent through the plugin. This + function should be optimized for speed. The incoming data is found + in ao_plugin_data.data having length ao_plugin_data.len. These two + parameters should be changed by the plugin. Return 1 for success and + 0 for fail. +