X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fdump_extradata_bsf.c;h=b6ef8b3e6b705962b2fd70400374a9526083f5ad;hb=1a35fffaf24bf8a20d629c32f6c702b241c4b83f;hp=081ae5aa08b610c9deb6a9d8001a5a249c86c82b;hpb=67e8f476b7d3c21686a2d453d052818ac92688b3;p=ffmpeg diff --git a/libavcodec/dump_extradata_bsf.c b/libavcodec/dump_extradata_bsf.c index 081ae5aa08b..b6ef8b3e6b7 100644 --- a/libavcodec/dump_extradata_bsf.c +++ b/libavcodec/dump_extradata_bsf.c @@ -20,11 +20,10 @@ #include -#include "avcodec.h" #include "bsf.h" +#include "bsf_internal.h" #include "libavutil/log.h" -#include "libavutil/mem.h" #include "libavutil/opt.h" enum DumpFreq { @@ -34,22 +33,25 @@ 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; if (ctx->par_in->extradata && (s->freq == DUMP_FREQ_ALL || - (s->freq == DUMP_FREQ_KEYFRAME && in->flags & AV_PKT_FLAG_KEY))) { + (s->freq == DUMP_FREQ_KEYFRAME && in->flags & AV_PKT_FLAG_KEY)) && + (in->size < ctx->par_in->extradata_size || + memcmp(in->data, ctx->par_in->extradata, ctx->par_in->extradata_size))) { if (in->size >= INT_MAX - ctx->par_in->extradata_size) { ret = AVERROR(ERANGE); goto fail; @@ -72,7 +74,7 @@ static int dump_extradata(AVBSFContext *ctx, AVPacket *out) } fail: - av_packet_free(&in); + av_packet_unref(in); return ret; } @@ -80,7 +82,7 @@ fail: #define OFFSET(x) offsetof(DumpExtradataContext, x) #define FLAGS (AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_BSF_PARAM) static const AVOption options[] = { - { "freq", "When do dump extradata", OFFSET(freq), AV_OPT_TYPE_INT, + { "freq", "When to dump extradata", OFFSET(freq), AV_OPT_TYPE_INT, { .i64 = DUMP_FREQ_KEYFRAME }, DUMP_FREQ_KEYFRAME, DUMP_FREQ_ALL, FLAGS, "freq" }, { "k", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = DUMP_FREQ_KEYFRAME }, .flags = FLAGS, .unit = "freq" }, { "keyframe", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = DUMP_FREQ_KEYFRAME }, .flags = FLAGS, .unit = "freq" }, @@ -93,7 +95,7 @@ static const AVClass dump_extradata_class = { .class_name = "dump_extradata bsf", .item_name = av_default_item_name, .option = options, - .version = LIBAVUTIL_VERSION_MAJOR, + .version = LIBAVUTIL_VERSION_INT, }; const AVBitStreamFilter ff_dump_extradata_bsf = {