Re: [libav-devel] [PATCH 17/24] examples/encode_video: use the AVFrame API for allocating the frame
On Thu, Oct 20, 2016 at 10:07 AM, Anton Khirnov wrote: > It is more efficient and so preferred over allocating the buffers > manually. > --- > doc/examples/encode_video.c | 19 --- > 1 file changed, 12 insertions(+), 7 deletions(-) > > diff --git a/doc/examples/encode_video.c b/doc/examples/encode_video.c > index bd10d40..b8c9631 100644 > --- a/doc/examples/encode_video.c > +++ b/doc/examples/encode_video.c > @@ -88,16 +88,16 @@ int main(int argc, char **argv) > exit(1); > } > > -ret = av_image_alloc(picture->data, picture->linesize, c->width, > c->height, > - c->pix_fmt, 32); > -if (ret < 0) { > -fprintf(stderr, "could not alloc raw picture buffer\n"); > -exit(1); > -} > picture->format = c->pix_fmt; > picture->width = c->width; > picture->height = c->height; > > +ret = av_frame_get_buffer(picture, 32); > +if (ret < 0) { > +fprintf(stderr, "could not alloc the frame data\n"); > +exit(1); > +} > + > /* encode 1 second of video */ > for(i=0;i<25;i++) { > av_init_packet(&pkt); > @@ -105,6 +105,12 @@ int main(int argc, char **argv) > pkt.size = 0; > > fflush(stdout); > + > +/* make sure the frame data is writable */ > +ret = av_frame_make_writable(picture); > +if (ret < 0) > +exit(1); > + > /* prepare a dummy image */ > /* Y */ > for(y=0;yheight;y++) { > @@ -159,7 +165,6 @@ int main(int argc, char **argv) > fclose(f); > > avcodec_free_context(&c); > -av_freep(&picture->data[0]); > av_frame_free(&picture); > > return 0; > -- looks ok -- Vittorio ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel
[libav-devel] [PATCH 17/24] examples/encode_video: use the AVFrame API for allocating the frame
It is more efficient and so preferred over allocating the buffers manually. --- doc/examples/encode_video.c | 19 --- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/doc/examples/encode_video.c b/doc/examples/encode_video.c index bd10d40..b8c9631 100644 --- a/doc/examples/encode_video.c +++ b/doc/examples/encode_video.c @@ -88,16 +88,16 @@ int main(int argc, char **argv) exit(1); } -ret = av_image_alloc(picture->data, picture->linesize, c->width, c->height, - c->pix_fmt, 32); -if (ret < 0) { -fprintf(stderr, "could not alloc raw picture buffer\n"); -exit(1); -} picture->format = c->pix_fmt; picture->width = c->width; picture->height = c->height; +ret = av_frame_get_buffer(picture, 32); +if (ret < 0) { +fprintf(stderr, "could not alloc the frame data\n"); +exit(1); +} + /* encode 1 second of video */ for(i=0;i<25;i++) { av_init_packet(&pkt); @@ -105,6 +105,12 @@ int main(int argc, char **argv) pkt.size = 0; fflush(stdout); + +/* make sure the frame data is writable */ +ret = av_frame_make_writable(picture); +if (ret < 0) +exit(1); + /* prepare a dummy image */ /* Y */ for(y=0;yheight;y++) { @@ -159,7 +165,6 @@ int main(int argc, char **argv) fclose(f); avcodec_free_context(&c); -av_freep(&picture->data[0]); av_frame_free(&picture); return 0; -- 2.0.0 ___ libav-devel mailing list libav-devel@libav.org https://lists.libav.org/mailman/listinfo/libav-devel