[FFmpeg-cvslog] avcodec/hapqa_extract: move the reference in the bsf internal buffer

James Almer git at videolan.org
Wed Mar 14 00:05:01 EET 2018


ffmpeg | branch: master | James Almer <jamrial at gmail.com> | Tue Mar 13 18:55:49 2018 -0300| [2b6699f024ae9968244d02d3c81e57737d603b62] | committer: James Almer

avcodec/hapqa_extract: move the reference in the bsf internal buffer

There's no need to allocate a new packet for it.

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

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

 libavcodec/hapqa_extract_bsf.c | 15 ++++++---------
 1 file changed, 6 insertions(+), 9 deletions(-)

diff --git a/libavcodec/hapqa_extract_bsf.c b/libavcodec/hapqa_extract_bsf.c
index 45fe9fbe8f..333efb2e3a 100644
--- a/libavcodec/hapqa_extract_bsf.c
+++ b/libavcodec/hapqa_extract_bsf.c
@@ -45,7 +45,7 @@ static int check_texture(HapqaExtractContext *ctx, int section_type) {
     }
 }
 
-static int hapqa_extract(AVBSFContext *bsf, AVPacket *out)
+static int hapqa_extract(AVBSFContext *bsf, AVPacket *pkt)
 {
     HapqaExtractContext *ctx = bsf->priv_data;
     GetByteContext gbc;
@@ -53,14 +53,13 @@ static int hapqa_extract(AVBSFContext *bsf, AVPacket *out)
     enum HapSectionType section_type;
     int start_section_size;
     int target_packet_size = 0;
-    AVPacket *in;
     int ret = 0;
 
-    ret = ff_bsf_get_packet(bsf, &in);
+    ret = ff_bsf_get_packet_ref(bsf, pkt);
     if (ret < 0)
         return ret;
 
-    bytestream2_init(&gbc, in->data, in->size);
+    bytestream2_init(&gbc, pkt->data, pkt->size);
     ret = ff_hap_parse_section_header(&gbc, &section_size, &section_type);
     if (ret != 0)
         goto fail;
@@ -95,14 +94,12 @@ static int hapqa_extract(AVBSFContext *bsf, AVPacket *out)
         }
     }
 
-    av_packet_move_ref(out, in);
-    out->data += start_section_size;
-    out->size = target_packet_size;
+    pkt->data += start_section_size;
+    pkt->size = target_packet_size;
 
 fail:
     if (ret < 0)
-        av_packet_unref(out);
-    av_packet_free(&in);
+        av_packet_unref(pkt);
     return ret;
 }
 



More information about the ffmpeg-cvslog mailing list