[FFmpeg-cvslog] avcodec/evc_frame_merge: remove an av_packet_copy_props() call

James Almer git at videolan.org
Fri Jun 23 17:15:30 EEST 2023


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Fri Jun 23 11:04:46 2023 -0300| [a9d41ab89016fabe5d2f0dba4d10b2580608d428] | committer: James Almer

avcodec/evc_frame_merge: remove an av_packet_copy_props() call

And only fill out if no failures can happen, fixing potential leaks.

Signed-off-by: James Almer <jamrial at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=a9d41ab89016fabe5d2f0dba4d10b2580608d428
---

 libavcodec/evc_frame_merge_bsf.c | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/libavcodec/evc_frame_merge_bsf.c b/libavcodec/evc_frame_merge_bsf.c
index 3e1258c6c9..cfdf24c69e 100644
--- a/libavcodec/evc_frame_merge_bsf.c
+++ b/libavcodec/evc_frame_merge_bsf.c
@@ -228,15 +228,17 @@ static int evc_frame_merge_filter(AVBSFContext *bsf, AVPacket *out)
     data_size = ctx->au_buffer.data_size;
 
     ctx->au_buffer.data_size = 0;
-    err = av_new_packet(out, data_size);
-    if (err < 0)
-        goto end;
-    err = av_packet_copy_props(out, buffer_pkt);
+    // drop the data in buffer_pkt, if any, but keep the props
+    av_buffer_unref(&buffer_pkt->buf);
+    err = av_buffer_realloc(&buffer_pkt->buf, data_size + AV_INPUT_BUFFER_PADDING_SIZE);
     if (err < 0)
         goto end;
 
-    av_packet_unref(buffer_pkt);
+    buffer_pkt->data = buffer_pkt->buf->data;
+    buffer_pkt->size = data_size;
+    av_packet_move_ref(out, buffer_pkt);
     memcpy(out->data, ctx->au_buffer.data, data_size);
+    memset(out->data + data_size, 0, AV_INPUT_BUFFER_PADDING_SIZE);
 
     err = 0;
 end:



More information about the ffmpeg-cvslog mailing list