diff options
author | Anton Khirnov <anton@khirnov.net> | 2016-10-20 12:03:20 +0300 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2016-11-02 12:20:01 +0300 |
commit | 5b4d7ac7ae5d821cfa6ab89f8eab4d31851ef32c (patch) | |
tree | de6b2a010f67a72c2d3abfdb89b1672b0f3d52db /doc/examples/encode_video.c | |
parent | d0a603a534a0ee4b255e5e72742428a7f7f42b83 (diff) |
examples/encode_video: use the AVFrame API for allocating the frame
It is more efficient and so preferred over allocating the buffers
manually.
Diffstat (limited to 'doc/examples/encode_video.c')
-rw-r--r-- | doc/examples/encode_video.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/doc/examples/encode_video.c b/doc/examples/encode_video.c index b955cce4af..3fd2d562a3 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;y<c->height;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; |