[FFmpeg-devel] [PATCH] ffmpeg: redesign video resampling in case of mid-stream video size/format change

Michael Niedermayer michaelni at gmx.at
Tue Apr 26 18:42:07 CEST 2011


On Tue, Apr 26, 2011 at 12:17:39AM +0200, Stefano Sabatini wrote:
> On date Monday 2011-04-25 00:26:05 +0200, Stefano Sabatini encoded:
> [...]
> > New approach, this is the neatest design I can find without
> > introducing filterchain re-configuration. It also fixes some problems
> > in the non-libavfilter code path.
> > -- 
> > FFmpeg = Formidable Fancy Majestic Prodigious Eager Game
> 
> > From b3f4b7091122ca341b3a10b4f6edbbcb7183af2f Mon Sep 17 00:00:00 2001
> > From: Stefano Sabatini <stefano.sabatini-lala at poste.it>
> > Date: Sat, 16 Apr 2011 23:14:44 +0200
> > Subject: [PATCH] ffmpeg: redesign video resampling in case of mid-stream video size/format change
> > 
> > The new design implements a new video rescaling API and supports video
> > resolution/format change with and without AVFILTER_CONFIG, thus
> > avoiding the need for the av_vsrc_buffer_add_frame2() hack.
> > 
> > If libavfilter is not enabled, resampling is performed in
> > do_video_out(), before to send the decoded frame to the output. In
> > this case the resampling API will also perform the scaling to the
> > output video size/format.
> > 
> > If libavfilter is enabled, resampling is performed in
> > pre_process_video_frame(), before the video is sent to the
> > filterchain. This way we ensure that the filterchain is feeded with
> > frames of the same size/format, thus avoiding the need of dynamic
> > filterchain reconfiguration.
> > 
> > Fix issues:
> > roundup #2217
> > trac #59
> > trac #64
> > trac #74
> 
> Ping.

ive fixed several small bugs in av_vsrc_buffer_add_frame2() and it
seems that fixed these issues.
It should be easy to add interlaced scaling support and the code
can reuse an existing scale filter instead of needing an additional
filter.

I dont understand how your solution that stores the resampling with
input streams can work without the av_vsrc_buffer_add_frame2()
when there are more output streams than input streams.
The first output might want 100x100 the second 400x400, theres only
one context so it can only scale to one.

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

I have never wished to cater to the crowd; for what I know they do not
approve, and what they approve I do not know. -- Epicurus
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20110426/8ef86aa9/attachment.asc>


More information about the ffmpeg-devel mailing list