summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorAnton Khirnov <anton@khirnov.net>2016-10-20 11:03:20 +0200
committerAnton Khirnov <anton@khirnov.net>2016-11-02 10:20:01 +0100
commit5b4d7ac7ae5d821cfa6ab89f8eab4d31851ef32c (patch)
treede6b2a010f67a72c2d3abfdb89b1672b0f3d52db /doc
parentd0a603a534a0ee4b255e5e72742428a7f7f42b83 (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')
-rw-r--r--doc/examples/encode_video.c19
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;