aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-09-03 23:47:51 +0200
committerAndreas Rheinhardt <andreas.rheinhardt@outlook.com>2021-10-03 20:50:50 +0200
commit9190302b2e6fb69e8fd7fb1c594857be016ed4b2 (patch)
tree7357b67e6c2423b8da62e122d1bc7fdb293f0d9f
parente9182820ad30dd7f68634822a03010408d90988c (diff)
downloadffmpeg-9190302b2e6fb69e8fd7fb1c594857be016ed4b2.tar.gz
examples/qsvdec: Don't use stack packet
Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
-rw-r--r--doc/examples/qsvdec.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/doc/examples/qsvdec.c b/doc/examples/qsvdec.c
index 571d868f93..b662ae91c3 100644
--- a/doc/examples/qsvdec.c
+++ b/doc/examples/qsvdec.c
@@ -113,7 +113,7 @@ int main(int argc, char **argv)
AVCodecContext *decoder_ctx = NULL;
const AVCodec *decoder;
- AVPacket pkt = { 0 };
+ AVPacket *pkt = NULL;
AVFrame *frame = NULL, *sw_frame = NULL;
AVIOContext *output_ctx = NULL;
@@ -200,27 +200,26 @@ int main(int argc, char **argv)
frame = av_frame_alloc();
sw_frame = av_frame_alloc();
- if (!frame || !sw_frame) {
+ pkt = av_packet_alloc();
+ if (!frame || !sw_frame || !pkt) {
ret = AVERROR(ENOMEM);
goto finish;
}
/* actual decoding */
while (ret >= 0) {
- ret = av_read_frame(input_ctx, &pkt);
+ ret = av_read_frame(input_ctx, pkt);
if (ret < 0)
break;
- if (pkt.stream_index == video_st->index)
- ret = decode_packet(decoder_ctx, frame, sw_frame, &pkt, output_ctx);
+ if (pkt->stream_index == video_st->index)
+ ret = decode_packet(decoder_ctx, frame, sw_frame, pkt, output_ctx);
- av_packet_unref(&pkt);
+ av_packet_unref(pkt);
}
/* flush the decoder */
- pkt.data = NULL;
- pkt.size = 0;
- ret = decode_packet(decoder_ctx, frame, sw_frame, &pkt, output_ctx);
+ ret = decode_packet(decoder_ctx, frame, sw_frame, NULL, output_ctx);
finish:
if (ret < 0) {
@@ -233,6 +232,7 @@ finish:
av_frame_free(&frame);
av_frame_free(&sw_frame);
+ av_packet_free(&pkt);
avcodec_free_context(&decoder_ctx);