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:11:17 +0100 |
commit | c7ab0eb3050acdd3b8cab2c55fc9c1b2e8610a65 (patch) | |
tree | 710e7da467c0505e387d733cd0d58bf6d39392ce /doc/examples/decode_video.c | |
parent | 728ea23cce07467b732f538c87c13da13dd6dcf3 (diff) | |
download | ffmpeg-c7ab0eb3050acdd3b8cab2c55fc9c1b2e8610a65.tar.gz |
examples/decode_video: allocate the packet dynamically
AVPackets on stack are discouraged.
Diffstat (limited to 'doc/examples/decode_video.c')
-rw-r--r-- | doc/examples/decode_video.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/doc/examples/decode_video.c b/doc/examples/decode_video.c index 74146432c0..d6803ef970 100644 --- a/doc/examples/decode_video.c +++ b/doc/examples/decode_video.c @@ -94,7 +94,7 @@ int main(int argc, char **argv) uint8_t *data; size_t data_size; int ret; - AVPacket avpkt; + AVPacket *pkt; if (argc <= 2) { fprintf(stderr, "Usage: %s <input file> <output file>\n", argv[0]); @@ -105,7 +105,9 @@ int main(int argc, char **argv) avcodec_register_all(); - av_init_packet(&avpkt); + pkt = av_packet_alloc(); + if (!pkt) + exit(1); /* set end of buffer to 0 (this ensures that no overreading happens for damaged MPEG streams) */ memset(inbuf + INBUF_SIZE, 0, AV_INPUT_BUFFER_PADDING_SIZE); @@ -151,7 +153,7 @@ int main(int argc, char **argv) /* use the parser to split the data into frames */ data = inbuf; while (data_size > 0) { - ret = av_parser_parse2(parser, c, &avpkt.data, &avpkt.size, + ret = av_parser_parse2(parser, c, &pkt->data, &pkt->size, data, data_size, AV_NOPTS_VALUE, AV_NOPTS_VALUE, 0); if (ret < 0) { fprintf(stderr, "Error while parsing\n"); @@ -160,8 +162,8 @@ int main(int argc, char **argv) data += ret; data_size -= ret; - if (avpkt.size) - decode(c, picture, &avpkt, outfilename); + if (pkt->size) + decode(c, picture, pkt, outfilename); } } @@ -173,6 +175,7 @@ int main(int argc, char **argv) av_parser_close(parser); avcodec_free_context(&c); av_frame_free(&picture); + av_packet_free(&pkt); return 0; } |