[FFmpeg-devel] [PATCH] vsrc_buffer: simplify interface
Michael Niedermayer
michaelni at gmx.at
Mon May 2 12:32:21 CEST 2011
On Mon, May 02, 2011 at 10:06:34AM +0200, Stefano Sabatini wrote:
> On date Monday 2011-05-02 02:18:21 +0200, Stefano Sabatini encoded:
> > ---
> > ffmpeg.c | 18 ++++++++---
> > libavfilter/vsrc_buffer.c | 68 ++++++++++++---------------------------------
> > libavfilter/vsrc_buffer.h | 7 +---
> > 3 files changed, 33 insertions(+), 60 deletions(-)
> >
> > diff --git a/ffmpeg.c b/ffmpeg.c
> > index e36b3e5..98fdbae 100644
> > --- a/ffmpeg.c
> > +++ b/ffmpeg.c
> > @@ -42,6 +42,7 @@
> > #include "libavutil/colorspace.h"
> > #include "libavutil/fifo.h"
> > #include "libavutil/intreadwrite.h"
> > +#include "libavutil/imgutils.h"
> > #include "libavutil/pixdesc.h"
> > #include "libavutil/avstring.h"
> > #include "libavutil/libm.h"
> > @@ -1632,13 +1633,20 @@ static int output_packet(AVInputStream *ist, int ist_index,
> > for(i=0;i<nb_ostreams;i++) {
> > ost = ost_table[i];
> > if (ost->input_video_filter && ost->source_index == ist_index) {
> > + // fetch a frame from the filterchain, and buffer it
> > + AVFilterLink *inlink = ost->input_video_filter->outputs[0];
> > + AVFilterBufferRef *picref =
> > + avfilter_get_video_buffer(inlink, AV_PERM_WRITE, picture.width, picture.height);
> > +
> > if (!picture.sample_aspect_ratio.num)
> > picture.sample_aspect_ratio = ist->st->sample_aspect_ratio;
> > - // add it to be filtered
> > - av_vsrc_buffer_add_frame2(ost->input_video_filter, &picture,
> > - ist->pts,
> > - ist->st->codec->width, ist->st->codec->height,
> > - ist->st->codec->pix_fmt, ""); //TODO user setable params
> > + av_image_copy(picref->data, picref->linesize,
> > + picture.data, picture.linesize,
> > + picref->format, picref->video->w, picref->video->h);
> > + avfilter_copy_frame_props(picref, &picture);
> > + picref->pts = ist->pts;
> > +
> > + av_vsrc_buffer_add_frame2(ost->input_video_filter, picref, ""); //TODO user setable params
>
> Unfortunately this can't work in case the source buffer format differs
> from the picture format (e.g. in case of mid-stream format change).
>
> Updated patch (which passes AVFrame instead).
if this has been tested with changing sizes and multiple outputs from
ffmpeg then LGTM
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Democracy is the form of government in which you can choose your dictator
-------------- 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/20110502/36063098/attachment.asc>
More information about the ffmpeg-devel
mailing list