X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=libavcodec%2Fdump_extradata_bsf.c;h=b6ef8b3e6b705962b2fd70400374a9526083f5ad;hb=1c7f252783aec37e4ff8049476386f63afe91756;hp=188a1c619bc47c5e7ce6337d007d60526fe31c60;hpb=0084eed5bffebd7f3915bc0f9eba7350e8bc0ef7;p=ffmpeg diff --git a/libavcodec/dump_extradata_bsf.c b/libavcodec/dump_extradata_bsf.c index 188a1c619bc..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 { @@ -50,7 +49,9 @@ static int dump_extradata(AVBSFContext *ctx, AVPacket *out) 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; @@ -81,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" },