diff options
author | gabucino <gabucino@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-02-08 13:54:57 +0000 |
---|---|---|
committer | gabucino <gabucino@b3059339-0415-0410-9bf9-f77b7e298cf2> | 2002-02-08 13:54:57 +0000 |
commit | 75d93813e6e995cd3e5bb09601566da5ebd1d2e3 (patch) | |
tree | c6bf447e6c8036b017de5773eb8ea9da34184eaa /DOCS | |
parent | 46054f5fdc2b56f5db6e99133a4467441d6fd5e0 (diff) | |
download | mpv-75d93813e6e995cd3e5bb09601566da5ebd1d2e3.tar.bz2 mpv-75d93813e6e995cd3e5bb09601566da5ebd1d2e3.tar.xz |
applied patch from Andres Johansson
git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4583 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'DOCS')
-rw-r--r-- | DOCS/tech/general.txt | 63 | ||||
-rw-r--r-- | DOCS/tech/tech-hun.txt | 8 |
2 files changed, 63 insertions, 8 deletions
diff --git a/DOCS/tech/general.txt b/DOCS/tech/general.txt index 86fc4890cc..1eb4a7883a 100644 --- a/DOCS/tech/general.txt +++ b/DOCS/tech/general.txt @@ -273,11 +273,64 @@ static int play(void* data,int len,int flags); all the bytes, it has to give back how many have been used (copied to buffer). -static int get_delay(); - Has to return how many bytes are in the audio buffer. Be exact, if possible, - since the whole timing depends on this! In the worst case, return the size - of the 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 be correctly implemented! +!!! 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. diff --git a/DOCS/tech/tech-hun.txt b/DOCS/tech/tech-hun.txt index 1c186c3704..4783dab28e 100644 --- a/DOCS/tech/tech-hun.txt +++ b/DOCS/tech/tech-hun.txt @@ -285,10 +285,12 @@ static int play(void* data,int len,int flags); hanem azt kell visszaadnia, mennyit használt fel (másolt a bufferbe). static int get_delay(); - Vissza kell adja, hogy hány byte várakozik az audio bufferben. lehetőleg - minél pontosabban, mert ettől függ az egész időzítés! - Legrosszabb esetben adja vissza a buffer méretét! + Visszaadja meddig fog tartani az éppen az audio bufferben levő adat + lejátszása. Lehetőleg minél pontosabban, mert ettől függ az egész időzítés! + Legrosszabb esetben adja vissza a maximális időzítést. !!! Mivel a kép a hanghoz (hangkártyához) van szinkronizálva, így nagyon fontos, !!! hogy a get_space ill. get_delay függvények korrektül legyenek megírva! +6.a Audio plugin-ek + Remélem tudsz angolul. |