]> git.sesse.net Git - ffmpeg/blobdiff - libavcodec/encode.c
Merge commit '827a05eaa9482e9ac2a17f7f2e42ead07c1d7574'
[ffmpeg] / libavcodec / encode.c
index 525ee1f5d64b6ceac4ce28d8073ef809f0dc0b8b..c961dbace10b594be133ebf9b6ecb5b152f13ad8 100644 (file)
@@ -222,10 +222,13 @@ int attribute_align_arg avcodec_encode_audio2(AVCodecContext *avctx,
             }
             avpkt->buf      = user_pkt.buf;
             avpkt->data     = user_pkt.data;
-        } else {
-            if (av_dup_packet(avpkt) < 0) {
-                ret = AVERROR(ENOMEM);
-            }
+        } else if (!avpkt->buf) {
+            AVPacket tmp = { 0 };
+            ret = av_packet_ref(&tmp, avpkt);
+            av_packet_unref(avpkt);
+            if (ret < 0)
+                goto end;
+            *avpkt = tmp;
         }
     }
 
@@ -318,10 +321,13 @@ int attribute_align_arg avcodec_encode_video2(AVCodecContext *avctx,
             }
             avpkt->buf      = user_pkt.buf;
             avpkt->data     = user_pkt.data;
-        } else {
-            if (av_dup_packet(avpkt) < 0) {
-                ret = AVERROR(ENOMEM);
-            }
+        } else if (!avpkt->buf) {
+            AVPacket tmp = { 0 };
+            ret = av_packet_ref(&tmp, avpkt);
+            av_packet_unref(avpkt);
+            if (ret < 0)
+                return ret;
+            *avpkt = tmp;
         }
     }