From c7ab0eb3050acdd3b8cab2c55fc9c1b2e8610a65 Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Thu, 20 Oct 2016 11:03:20 +0200 Subject: [PATCH] examples/decode_video: allocate the packet dynamically AVPackets on stack are discouraged. --- doc/examples/decode_video.c | 13 ++++++++----- 1 file 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 \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; }