[FFmpeg-devel] [RFC] libavfilter audio API and related issues
S.N. Hemanth Meenakshisundaram
smeenaks
Wed Apr 28 09:07:54 CEST 2010
Stefano Sabatini <stefano.sabatini-lala <at> poste.it> writes:
>
> Follow some notes about a possible design for the audio support in
> libavfilter.
>
> AVFilterSamples struct
> ======================
>
> (Already defined in afilters, but renamed AVFilterBuffer at some
> point.)
>
> Follows a possible definition (with some differences whit respect to
> that currently implemented in afilters):
>
[...]
>
> Audio/video synchronization
> ===========================
>
> Some design work has to be done for understanding how request_samples()
> and request_frame() can work togheter.
>
> I'm only considering ffplay for now, as it looks simpler than ffmpeg.
>
> Currently audio and video follows two separate paths, audio is
> processed by the SDL thread thorugh the sdl_audio_callback function,
> while the video thread reads from the video queue whenever there are
> video packets available and process them.
>
Currently, the dsl audio callback gets a decoded audio buffer via the
audio_decode_frame call and then seems to be doing AV sync via the
synchronize_audio call.
I was thinking about replacing this with the audio_request_samples function
suggested above. This is similar to what happens in video. The request_samples
would then propagate backwards through the audio filter chain until the input
audio filter (src filter) calls the audio_decode_frame to get decoded audio
samples and then passes them up the filter chain for processing.
Does this sound ok? Since the sdl_audio_callback will be making a
synchronize_audio call only after this, any additional delay introduced by
filtering would also get adjusted for.
>
> Audio API
> =========
>
> Much of what discussed in [3] is also relevant to libavfilter, and
> much of that functionality may be implemented in it if we decide to
> follow that route, e.g. audio mixing may be implemented in a filter.
>
> Also it isn't clear where the audio API should be implemented,
> libavfilter will need to use the resampling functionality, if we don't
> want to make lavfi depend on lavc then this should be moved somewhere
> else (e.g. libavresample?).
>
> References
> ==========
>
> [1] afilters repo: svn://svn.ffmpeg.org/soc/afilters
> [2] gsoc discussion:
http://thread.gmane.org/gmane.comp.video.ffmpeg.soc/6163/focus=6178
> [3] http://wiki.multimedia.cx/index.php?title=FFmpeg_audio_API
> [4] http://wiki.multimedia.cx/index.php?title=Libavfilter
> [5]
http://wiki.multimedia.cx/index.php?title=FFmpeg_Summer_Of_Code_2010#Libavfilter_audio_work
>
> ....
>
> Comments are welcome.
>
> Regards.
Regards,
Hemanth
More information about the ffmpeg-devel
mailing list