[FFmpeg-devel] [PATCH] doc/examples/muxing: Fix av_frame_make_writable usage
Michael Niedermayer
michael at niedermayer.cc
Wed Nov 23 04:28:41 EET 2016
On Wed, Nov 23, 2016 at 02:09:14AM +0100, wm4 wrote:
> On Mon, 24 Oct 2016 00:12:00 +0200
> Sam Hocevar <sam at hocevar.net> wrote:
>
> > This patch moves the av_frame_make_writable() call from fill_yuv_image
> > to get_video_frame so that its argument can be the actual frame that
> > will be sent to the encoder.
> >
> > This fixes data corruption issues in codecs that keep references on
> > one or several previous frames.
> >
> > Signed-off-by: Sam Hocevar <sam at hocevar.net>
> > ---
> > doc/examples/muxing.c | 15 ++++++---------
> > 1 file changed, 6 insertions(+), 9 deletions(-)
> >
> > diff --git a/doc/examples/muxing.c b/doc/examples/muxing.c
> > index f1f5bb8..1df5912 100644
> > --- a/doc/examples/muxing.c
> > +++ b/doc/examples/muxing.c
> > @@ -440,15 +440,7 @@ static void open_video(AVFormatContext *oc, AVCodec *codec, OutputStream *ost, A
> > static void fill_yuv_image(AVFrame *pict, int frame_index,
> > int width, int height)
> > {
> > - int x, y, i, ret;
> > -
> > - /* when we pass a frame to the encoder, it may keep a reference to it
> > - * internally;
> > - * make sure we do not overwrite it here
> > - */
> > - ret = av_frame_make_writable(pict);
> > - if (ret < 0)
> > - exit(1);
> > + int x, y, i;
> >
> > i = frame_index;
> >
> > @@ -475,6 +467,11 @@ static AVFrame *get_video_frame(OutputStream *ost)
> > STREAM_DURATION, (AVRational){ 1, 1 }) >= 0)
> > return NULL;
> >
> > + /* when we pass a frame to the encoder, it may keep a reference to it
> > + * internally; make sure we do not overwrite it here */
> > + if (av_frame_make_writable(ost->frame) < 0)
> > + exit(1);
> > +
> > if (c->pix_fmt != AV_PIX_FMT_YUV420P) {
> > /* as we only generate a YUV420P picture, we must convert it
> > * to the codec pixel format if needed */
>
> LGTM, but I'm not in a position to push now.
applied
thx
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
Good people do not need laws to tell them to act responsibly, while bad
people will find a way around the laws. -- Plato
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20161123/27702f75/attachment.sig>
More information about the ffmpeg-devel
mailing list