[FFmpeg-devel] FFmpeg A/V filtering questions
ubitux at gmail.com
Tue Feb 14 16:43:55 CET 2012
On Tue, Feb 14, 2012 at 04:23:26PM +0100, Stefano Sabatini wrote:
> > 4) why is there an exception for the sample aspect ratio since
> > avfilter_fill_frame_from_video_buffer_ref() will actually do that
> > copy?
> if (ost->picref->video && !ost->frame_aspect_ratio)
> ost->st->codec->sample_aspect_ratio = ost->picref->video->sample_aspect_ratio;
> This is copying the sample_aspect_ratio to the stream context if it is
> not defined in ost, ost->picref->video->sample_aspect_ratio is
> equivalent to filtered_frame->sample_aspect_ratio, also maybe the code
> should be moved to do_video_out(), note that I tried to keep the
> setting logic unchanged when I introduced
OK. I'll send a patch to move it eventually.
> > 5) what is the audio equivalent for
> > avfilter_fill_frame_from_video_buffer_ref()? According to
> > libavdevice/lavfi.c, it seems to only need the data memcpy() and a few
> > props copy.
> The code in lavfi.c predates the audio-in-AVFrame changes, the right
> solution would consist now into adding
> avfilter_fill_frame_from_audio_buffer_ref() *or* even better
> generalize the function:
> avfilter_fill_frame_from_video_buffer_ref -> avfilter_fill_frame_from_buffer_ref
Or both? It will allow "optimized" audio or video calls, or a generic one
if the calling code is generically designed. It will also avoid the need
of a major bump to drop the video function.
Now what is supposed to be in for audio? From what I can see, it seems I have to
copy the ref->data, ref->format, and ref->audio->nb_samples. Is that all?
> > 6) libavdevice/lavfi.c seems to have a similar code to
> > avfilter_fill_frame_from_video_buffer_ref(); why is it handled differently
> > than in ffmpeg.c?
> Different data paths.
> get a buffer ref from the filterchain, convert it to an AVFrame, pass
> it to do_video_out(), do_video_out() performs more magic on the frame,
> passes it to the encoder and to write_frame() (which performs muxing)
> get the buffer ref from the sink buffer, and assemblate a raw video
> packet directly from the video data
I see, OK.
Thank you very much :)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 490 bytes
Desc: not available
More information about the ffmpeg-devel