On Sat, 28 Jan 2017 22:23:53 +0700 Muhammad Faiz <mfc...@gmail.com> wrote:
> so the behavior will be similar to > av_frame_make_writable(). > > Also use av_frame_copy() replacing > av_image_copy()/av_samples_copy(). > > Needed for the next patch. > > Suggested-by: wm4 <nfx...@googlemail.com> > Signed-off-by: Muhammad Faiz <mfc...@gmail.com> > --- > libavfilter/avfilter.c | 26 ++++++-------------------- > libavfilter/filters.h | 2 +- > 2 files changed, 7 insertions(+), 21 deletions(-) > > diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c > index c12d491..c8dafd2 100644 > --- a/libavfilter/avfilter.c > +++ b/libavfilter/avfilter.c > @@ -1104,7 +1104,7 @@ static int ff_filter_frame_framed(AVFilterLink *link, > AVFrame *frame) > filter_frame = default_filter_frame; > > if (dst->needs_writable) { > - ret = ff_inlink_make_frame_writable(link, &frame); > + ret = ff_inlink_make_frame_writable(link, frame); > if (ret < 0) > goto fail; > } > @@ -1556,9 +1556,8 @@ int ff_inlink_consume_samples(AVFilterLink *link, > unsigned min, unsigned max, > return 1; > } > > -int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame **rframe) > +int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame *frame) > { > - AVFrame *frame = *rframe; > AVFrame *out; > int ret; > > @@ -1585,23 +1584,10 @@ int ff_inlink_make_frame_writable(AVFilterLink *link, > AVFrame **rframe) > return ret; > } > > - switch (link->type) { > - case AVMEDIA_TYPE_VIDEO: > - av_image_copy(out->data, out->linesize, (const uint8_t > **)frame->data, frame->linesize, > - frame->format, frame->width, frame->height); > - break; > - case AVMEDIA_TYPE_AUDIO: > - av_samples_copy(out->extended_data, frame->extended_data, > - 0, 0, frame->nb_samples, > - av_frame_get_channels(frame), > - frame->format); > - break; > - default: > - av_assert0(!"reached"); > - } > - > - av_frame_free(&frame); > - *rframe = out; > + av_frame_copy(out, frame); > + av_frame_unref(frame); > + av_frame_move_ref(frame, out); > + av_frame_free(&out); > return 0; > } > > diff --git a/libavfilter/filters.h b/libavfilter/filters.h > index 2c78d60..5d32403 100644 > --- a/libavfilter/filters.h > +++ b/libavfilter/filters.h > @@ -101,7 +101,7 @@ int ff_inlink_consume_samples(AVFilterLink *link, > unsigned min, unsigned max, > * This is similar to av_frame_make_writable() except it uses the link's > * buffer allocation callback, and therefore allows direct rendering. > */ > -int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame **rframe); > +int ff_inlink_make_frame_writable(AVFilterLink *link, AVFrame *frame); > > /** > * Test and acknowledge the change of status on the link. Please push this patch. It's a nice simplification. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel