[FFmpeg-devel] [PATCH] lavc/decode: do not use a context variable for function-local data

Anton Khirnov anton at khirnov.net
Fri May 22 19:56:42 EEST 2020


---
 libavcodec/decode.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavcodec/decode.c b/libavcodec/decode.c
index f3327d74af..dbecdf3f46 100644
--- a/libavcodec/decode.c
+++ b/libavcodec/decode.c
@@ -586,6 +586,7 @@ static int decode_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame)
 int attribute_align_arg avcodec_send_packet(AVCodecContext *avctx, const AVPacket *avpkt)
 {
     AVCodecInternal *avci = avctx->internal;
+    AVPacket buffer_pkt = { NULL };
     int ret;
 
     if (!avcodec_is_open(avctx) || !av_codec_is_decoder(avctx->codec))
@@ -597,16 +598,15 @@ int attribute_align_arg avcodec_send_packet(AVCodecContext *avctx, const AVPacke
     if (avpkt && !avpkt->size && avpkt->data)
         return AVERROR(EINVAL);
 
-    av_packet_unref(avci->buffer_pkt);
     if (avpkt && (avpkt->data || avpkt->side_data_elems)) {
-        ret = av_packet_ref(avci->buffer_pkt, avpkt);
+        ret = av_packet_ref(&buffer_pkt, avpkt);
         if (ret < 0)
             return ret;
     }
 
-    ret = av_bsf_send_packet(avci->bsf, avci->buffer_pkt);
+    ret = av_bsf_send_packet(avci->bsf, &buffer_pkt);
     if (ret < 0) {
-        av_packet_unref(avci->buffer_pkt);
+        av_packet_unref(&buffer_pkt);
         return ret;
     }
 
-- 
2.26.2



More information about the ffmpeg-devel mailing list