1
0
mirror of https://github.com/mpv-player/mpv synced 2024-12-24 15:52:25 +00:00

applied patch from Andres Johansson

git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@4583 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
gabucino 2002-02-08 13:54:57 +00:00
parent 46054f5fdc
commit 75d93813e6
2 changed files with 63 additions and 8 deletions

View File

@ -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.

View File

@ -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.