avcodec/dump_extradata_bsf: don't allocate a new AVPacket per filtered packet
authorJames Almer <jamrial@gmail.com>
Mon, 23 Jul 2018 22:16:30 +0000 (19:16 -0300)
committerJames Almer <jamrial@gmail.com>
Thu, 2 Aug 2018 15:41:04 +0000 (12:41 -0300)
~4x speedup in dump_extradata()

Signed-off-by: James Almer <jamrial@gmail.com>
libavcodec/dump_extradata_bsf.c

index 9870374..188a1c6 100644 (file)
@@ -34,16 +34,17 @@ enum DumpFreq {
 
 typedef struct DumpExtradataContext {
     const AVClass *class;
+    AVPacket pkt;
     int freq;
 } DumpExtradataContext;
 
 static int dump_extradata(AVBSFContext *ctx, AVPacket *out)
 {
     DumpExtradataContext *s = ctx->priv_data;
-    AVPacket *in;
+    AVPacket *in = &s->pkt;
     int ret = 0;
 
-    ret = ff_bsf_get_packet(ctx, &in);
+    ret = ff_bsf_get_packet_ref(ctx, in);
     if (ret < 0)
         return ret;
 
@@ -72,7 +73,7 @@ static int dump_extradata(AVBSFContext *ctx, AVPacket *out)
     }
 
 fail:
-    av_packet_free(&in);
+    av_packet_unref(in);
 
     return ret;
 }