diff options
author | Anton Khirnov <anton@khirnov.net> | 2016-10-20 11:03:20 +0200 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2016-11-23 13:10:22 +0100 |
commit | 59ab9e8ba1df7e3347a4cd2bd56c32e74aede802 (patch) | |
tree | 1584c03380a092ce24959632d7d8a91e8fa1554a | |
parent | 5f102a9559099429826e84758b8b5182244c52db (diff) | |
download | ffmpeg-59ab9e8ba1df7e3347a4cd2bd56c32e74aede802.tar.gz |
examples/encode_video: allocate the packet dynamically
AVPackets on stack are discouraged.
-rw-r--r-- | doc/examples/encode_video.c | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/doc/examples/encode_video.c b/doc/examples/encode_video.c index 2ff6354354..cb128361d5 100644 --- a/doc/examples/encode_video.c +++ b/doc/examples/encode_video.c @@ -69,7 +69,7 @@ int main(int argc, char **argv) int i, ret, x, y; FILE *f; AVFrame *picture; - AVPacket pkt; + AVPacket *pkt; uint8_t endcode[] = { 0, 0, 1, 0xb7 }; if (argc <= 1) { @@ -90,6 +90,10 @@ int main(int argc, char **argv) c = avcodec_alloc_context3(codec); picture = av_frame_alloc(); + pkt = av_packet_alloc(); + if (!pkt) + exit(1); + /* put sample parameters */ c->bit_rate = 400000; /* resolution must be a multiple of two */ @@ -127,10 +131,6 @@ int main(int argc, char **argv) /* encode 1 second of video */ for(i=0;i<25;i++) { - av_init_packet(&pkt); - pkt.data = NULL; // packet data will be allocated by the encoder - pkt.size = 0; - fflush(stdout); /* make sure the frame data is writable */ @@ -157,11 +157,11 @@ int main(int argc, char **argv) picture->pts = i; /* encode the image */ - encode(c, picture, &pkt, f); + encode(c, picture, pkt, f); } /* flush the encoder */ - encode(c, NULL, &pkt, f); + encode(c, NULL, pkt, f); /* add sequence end code to have a real MPEG file */ fwrite(endcode, 1, sizeof(endcode), f); @@ -169,6 +169,7 @@ int main(int argc, char **argv) avcodec_free_context(&c); av_frame_free(&picture); + av_packet_free(&pkt); return 0; } |