From patchwork Sat Jul 13 02:55:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 13921 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id A67D944511F for ; Sat, 13 Jul 2019 05:56:24 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7C4AE68AB94; Sat, 13 Jul 2019 05:56:24 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f68.google.com (mail-wm1-f68.google.com [209.85.128.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id ADB7468AB0C for ; Sat, 13 Jul 2019 05:56:17 +0300 (EEST) Received: by mail-wm1-f68.google.com with SMTP id w9so10365864wmd.1 for ; Fri, 12 Jul 2019 19:56:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ayxDwqXUVGkxdmfASD8xACXod3Lk0HooGGCwVNi+yug=; b=lZgiwA7HorquV1z7ubah5syeBUqoxcqRHzKYkK2NArmOWPhKWlOId2+X9huiyYtK+3 fu1+yGxd8Ja9JJYm9Z0JMRVWWYl0LEN8krptSLuhPoz/yx5nAFCFhuaHE3HzwW40VyfL s4HY6tzOvRjvmaYwVXHKFhDESokdQlgyUtk0xvU2HClwCNOGw8DaehFpp0wE5QriuPUA a5kxRKz80thHCCa+N5SizScD2Sjzv9nBAG52om52ZRDkayZwRzeOIa67ye5R5o0ySsP6 Bf5hcPOEnvsp5mLPtCNUU9FJUq0N2Jp3rMCYpQqjL5W7esYvPwuOe+RgefL2FLGozbjL hE0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=ayxDwqXUVGkxdmfASD8xACXod3Lk0HooGGCwVNi+yug=; b=kcWbM/Fl/uTprQKl74GGFokslJFqcQjbiKZVACz/XiDfPPvguaZNqHU3MIMxcELmo5 pJk0kc9c9u+2lzUu+M+ln5EWaWQTvrEF6TXpLNpiYs+buUrWvQr58/9mpjUjBxa/LviK Rjg7baUrTtPO2vPKdunktKdV/6Ym8JaZhAXVfAIi+hi+karQcnfn+urtIHpjLXe1uBIC RjKhinn2ZVdXkQovkfVJ0udfoEMy5OLvq4ZY28KRAmDB8xl8biEsPrRUq++SK3at1mgo pUhuEFIbSK0UVseC8BQkAoJXaw1NYI2GfPPcYkSi9tLrMjVHE2NMbCl048auJMtyG6Vp U/bg== X-Gm-Message-State: APjAAAV139k04kpFG8JlPg9NZ1htxCiYjsc8pCbh7eCng+YY7FxT46Zm gQIZ32m3CR0qZ4WgGm+vkWc72gIl X-Google-Smtp-Source: APXvYqyhScqhJzLGKq3mjQ9zMsVrtgDXahv1SiunhBiMEsHHXRbGsXaxqPYFOyQG9q6Y7jrgPo/tWw== X-Received: by 2002:a1c:345:: with SMTP id 66mr12279400wmd.8.1562986576934; Fri, 12 Jul 2019 19:56:16 -0700 (PDT) Received: from localhost.localdomain (ipbcc08b8f.dynamic.kabel-deutschland.de. [188.192.139.143]) by smtp.gmail.com with ESMTPSA id o26sm8252370wro.53.2019.07.12.19.56.15 (version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256); Fri, 12 Jul 2019 19:56:16 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 13 Jul 2019 04:55:50 +0200 Message-Id: <20190713025550.39846-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.21.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] dump_extra: Don't add extradata if it already exists X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The dump_extra bitstream filter currently simply adds the extradata to the packets indicated by the user without checking whether said extradata already exists in the packets. Besides wasting space duplicated extradata in the same packet/access unit is also forbidden for some codecs, e.g. MPEG-2. This check has been added to be able to use the mpeg2_qsv encoder (which only adds the sequence headers to the first packet) in broadcast scenarios where repeating sequence headers are required. The check used here is not perfect: E.g. dump_extra would add the extradata to a H.264 access unit consisting of an access unit delimiter, SPS, PPS and slices. Fixes #8007. Signed-off-by: Andreas Rheinhardt --- doc/bitstream_filters.texi | 4 +++- libavcodec/dump_extradata_bsf.c | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/bitstream_filters.texi b/doc/bitstream_filters.texi index a6a5a331f5..14f35893d3 100644 --- a/doc/bitstream_filters.texi +++ b/doc/bitstream_filters.texi @@ -103,7 +103,9 @@ DTS-HD. @section dump_extra -Add extradata to the beginning of the filtered packets. +Add extradata to the beginning of the filtered packets except when +said packets already exactly begin with the extradata that is intended +to be added. @table @option @item freq diff --git a/libavcodec/dump_extradata_bsf.c b/libavcodec/dump_extradata_bsf.c index 7112cd6bd4..b641508234 100644 --- a/libavcodec/dump_extradata_bsf.c +++ b/libavcodec/dump_extradata_bsf.c @@ -50,7 +50,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;