[FFmpeg-devel] [RFC] libavfilter audio API and related issues
S.N. Hemanth Meenakshisundaram
Mon Jun 14 04:20:55 CEST 2010
On 06/05/2010 01:24 PM, S.N. Hemanth Meenakshisundaram wrote:
>>>>> On 05/02/2010 12:08 PM, Stefano Sabatini wrote:
>>>>>> On date Wednesday 2010-04-28 07:07:54 +0000, S.N. Hemanth
>>>>>> Meenakshisundaram encoded:
>>>>>>> Stefano Sabatini<stefano.sabatini-lala<at> poste.it> writes:
>>>>>>>> Follow some notes about a possible design for the audio support in
> Hi All,
> Attached is a rough draft of the audio API. [...]
I now have a working audio filter framework. Made some changes to the
audio API from last week and the earlier ffplay changes based on
comments and some problems encountered along the way. Now when playing a
video/audio file, the input and output filters are created and the audio
data passes through these two filters and plays out. The video filters
work without any breakages.
Here are the changes and comments incorporated:
1. AVFilterSamplesRef now has a pts field as suggested. I can't find a
pos field for audio in existing code so I haven't added that yet.
2. avfilter_get_audio_buffer now takes buffer size as an input parameter
instead of samples_nb (number of samples) since buffer size is readily
available from audio_decode_frame. samples_nb is calculated based on
buffer size and sample format+channel layout.
3. Moved around some code in ffplay to initialize audio filters only
after audio decoder is initialized.
4. Minor additions to avfiltergraph.c to support audio filters.
5. Made macros for some repeated code in formats.c and using memset to
set the values of the 'data' array in defaults.c as Stefano
suggested. Also, in case of packed formats, all data pointers of valid
channels now point to the single monolithic buffer. Some more macros may
be possible in formats.c
6. Some other nits and alignments pointed out earlier.
1. Audio decode frame uses parameters like num_channels, sample_fmt etc
from 'is->audio_st->codec' (the audio codec context). That is also where
I read these parameters and put them in the audio buffers given to the
filter chain. So if these parameters change between audio frames, will
the new values reflect in the codec context?
2. I can't find a variable indicating whether audio data is planar or
packed. Is there one? I am assuming it is always packed right now. How
can I find out whether a frame returned by audio_decode_frame is planar
3. The audio decoder's codec context has two variables num_channels and
channel_layout. num_channels is the one currently used by
audio_decode_frame when calculating number of samples in a frame etc.
Will the decoders all populate channel_layout as well correctly?
4. Currently, audio_decode_frame always outputs frames with a 16-bit
sample size. If the codec output is in a different format, it calls a
conversion function. I guess the plan is to eventually remove this and
replace it with an output filter that can output in any required sample
Please review and comment.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
More information about the ffmpeg-devel