ffmpeg | branch: master | Clément Bœsch <u...@pkh.me> | Wed Mar 29 14:20:25 2017 +0200| [58f24adc05b0ea47c3f7ed5cb9e8d5774e2fbaaf] | committer: Clément Bœsch
Merge commit '5b4d7ac7ae5d821cfa6ab89f8eab4d31851ef32c' * commit '5b4d7ac7ae5d821cfa6ab89f8eab4d31851ef32c': examples/encode_video: use the AVFrame API for allocating the frame Merged-by: Clément Bœsch <u...@pkh.me> > http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=58f24adc05b0ea47c3f7ed5cb9e8d5774e2fbaaf --- doc/examples/encode_video.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/doc/examples/encode_video.c b/doc/examples/encode_video.c index ba6f2bf..fc576e0 100644 --- a/doc/examples/encode_video.c +++ b/doc/examples/encode_video.c @@ -112,12 +112,9 @@ int main(int argc, char **argv) frame->width = c->width; frame->height = c->height; - /* the image can be allocated by any means and av_image_alloc() is - * just the most convenient way if av_malloc() is to be used */ - ret = av_image_alloc(frame->data, frame->linesize, c->width, c->height, - c->pix_fmt, 32); + ret = av_frame_get_buffer(frame, 32); if (ret < 0) { - fprintf(stderr, "Could not allocate raw picture buffer\n"); + fprintf(stderr, "Could not allocate the video frame data\n"); exit(1); } @@ -128,6 +125,12 @@ int main(int argc, char **argv) pkt.size = 0; fflush(stdout); + + /* make sure the frame data is writable */ + ret = av_frame_make_writable(frame); + if (ret < 0) + exit(1); + /* prepare a dummy image */ /* Y */ for (y = 0; y < c->height; y++) { @@ -182,7 +185,6 @@ int main(int argc, char **argv) fclose(f); avcodec_free_context(&c); - av_freep(&frame->data[0]); av_frame_free(&frame); return 0; ====================================================================== diff --cc doc/examples/encode_video.c index ba6f2bf,3fd2d56..fc576e0 --- a/doc/examples/encode_video.c +++ b/doc/examples/encode_video.c @@@ -103,21 -88,13 +103,18 @@@ int main(int argc, char **argv exit(1); } - picture->format = c->pix_fmt; - picture->width = c->width; - picture->height = c->height; + frame = av_frame_alloc(); + if (!frame) { + fprintf(stderr, "Could not allocate video frame\n"); + exit(1); + } + frame->format = c->pix_fmt; + frame->width = c->width; + frame->height = c->height; - /* the image can be allocated by any means and av_image_alloc() is - * just the most convenient way if av_malloc() is to be used */ - ret = av_image_alloc(frame->data, frame->linesize, c->width, c->height, - c->pix_fmt, 32); - ret = av_frame_get_buffer(picture, 32); ++ ret = av_frame_get_buffer(frame, 32); if (ret < 0) { - fprintf(stderr, "Could not allocate raw picture buffer\n"); - fprintf(stderr, "could not alloc the frame data\n"); ++ fprintf(stderr, "Could not allocate the video frame data\n"); exit(1); } @@@ -128,11 -105,17 +125,17 @@@ pkt.size = 0; fflush(stdout); + + /* make sure the frame data is writable */ - ret = av_frame_make_writable(picture); ++ ret = av_frame_make_writable(frame); + if (ret < 0) + exit(1); + /* prepare a dummy image */ /* Y */ - for(y=0;y<c->height;y++) { - for(x=0;x<c->width;x++) { - picture->data[0][y * picture->linesize[0] + x] = x + y + i * 3; + for (y = 0; y < c->height; y++) { + for (x = 0; x < c->width; x++) { + frame->data[0][y * frame->linesize[0] + x] = x + y + i * 3; } } @@@ -182,8 -165,7 +185,7 @@@ fclose(f); avcodec_free_context(&c); - av_freep(&frame->data[0]); - av_frame_free(&picture); + av_frame_free(&frame); return 0; } _______________________________________________ ffmpeg-cvslog mailing list ffmpeg-cvslog@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-cvslog