diff mbox series

[FFmpeg-devel,05/50] avcodec/libxvid: use av_packet_alloc() to allocate packets

Message ID 20210204191005.48190-6-jamrial@gmail.com
State Superseded
Headers show
Series deprecate av_init_packet() and sizeof(AVPacket) as part of the ABI | expand

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished
andriy/PPC64_make success Make finished
andriy/PPC64_make_fate success Make fate finished

Commit Message

James Almer Feb. 4, 2021, 7:09 p.m. UTC
Signed-off-by: James Almer <jamrial@gmail.com>
---
 libavcodec/libxvid.c | 13 ++++++++-----
 1 file changed, 8 insertions(+), 5 deletions(-)
diff mbox series

Patch

diff --git a/libavcodec/libxvid.c b/libavcodec/libxvid.c
index 857077dc3b..d880558893 100644
--- a/libavcodec/libxvid.c
+++ b/libavcodec/libxvid.c
@@ -685,10 +685,12 @@  FF_ENABLE_DEPRECATION_WARNINGS
     /* Encode a dummy frame to get the extradata immediately */
     if (x->quicktime_format) {
         AVFrame *picture;
-        AVPacket packet = {0};
+        AVPacket *packet;
         int size, got_packet, ret;
 
-        av_init_packet(&packet);
+        packet = av_packet_alloc();
+        if (!packet)
+            return AVERROR(ENOMEM);
 
         picture = av_frame_alloc();
         if (!picture)
@@ -696,6 +698,7 @@  FF_ENABLE_DEPRECATION_WARNINGS
 
         xerr = xvid_encore(NULL, XVID_ENC_CREATE, &xvid_enc_create, NULL);
         if( xerr ) {
+            av_packet_free(&packet);
             av_frame_free(&picture);
             av_log(avctx, AV_LOG_ERROR, "Xvid: Could not create encoder reference\n");
             return AVERROR_EXTERNAL;
@@ -704,6 +707,7 @@  FF_ENABLE_DEPRECATION_WARNINGS
         size = ((avctx->width + 1) & ~1) * ((avctx->height + 1) & ~1);
         picture->data[0] = av_malloc(size + size / 2);
         if (!picture->data[0]) {
+            av_packet_free(&packet);
             av_frame_free(&picture);
             return AVERROR(ENOMEM);
         }
@@ -711,9 +715,8 @@  FF_ENABLE_DEPRECATION_WARNINGS
         picture->data[2] = picture->data[1] + size / 4;
         memset(picture->data[0], 0, size);
         memset(picture->data[1], 128, size / 2);
-        ret = xvid_encode_frame(avctx, &packet, picture, &got_packet);
-        if (!ret && got_packet)
-            av_packet_unref(&packet);
+        ret = xvid_encode_frame(avctx, packet, picture, &got_packet);
+        av_packet_free(&packet);
         av_free(picture->data[0]);
         av_frame_free(&picture);
         xvid_encore(x->encoder_handle, XVID_ENC_DESTROY, NULL, NULL);