From patchwork Mon Feb 15 16:55:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 25645 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 C4E6644B8A3 for ; Mon, 15 Feb 2021 18:56:23 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B2CE0688126; Mon, 15 Feb 2021 18:56:23 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f47.google.com (mail-wr1-f47.google.com [209.85.221.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 03FD86891F1 for ; Mon, 15 Feb 2021 18:56:20 +0200 (EET) Received: by mail-wr1-f47.google.com with SMTP id t15so9678263wrx.13 for ; Mon, 15 Feb 2021 08:56:20 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=vUpgXSeNt+oWHbey0tjfQ7WJ0/00QiCg9As82QTiLBQ=; b=POnZOB668KMbCfPTmC9ulX7jbe6f0Sg8W9ga/s43qdFmtDnoS+l47Sw4RjcWU2Nls2 K0JDfDOEV4uVtdiNo4Ucq3Bns0Trwlua3+NsW4YAVKxy1zzbRkDDNlfwzyui91+E+FX1 vqqPr8pRLlzQ7snsmzquOpVRhkKNqIsEdFDSRIRRwwI52qvMaZqX7iydE0MeJrJm2Qyp qtn63fvTtz8UdcRQFyD03hGncIP3ykO/vWLE88cuMc4JDwskVecY+7iOPCxW3Tq890ww TIHaAsplw8mbKGpxk6C9Zs4frBsCLYfLhAW62thjP4mfA/0dka2ASI6/TQq4kczYbDXI Weaw== 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:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=vUpgXSeNt+oWHbey0tjfQ7WJ0/00QiCg9As82QTiLBQ=; b=cWAvmBRiW+Vou7zaxUNxIcOHWGXLxjyxYarjb+XqAYPDheY4HlQtiPiBNYNsfT6sZU m3xHlgdzSfVzviegNuAY2QMJoO0r0VoznqT93l3tsgroU/ScweLjIO4d1eTuSxEC9KyP uyp8MoS2qvmKTY4sm8ESEn3NzTmI4ryY9ZAUS9odqIUl7DZfGQthzriJH7lSMBX4DV88 xxCEcrXc084vim6ohRrCRnOVwQh86eu99NBb1vCEtBJ4NgRJT83f5NaJmMm9gXyzlVRm 02MWoX/Zb/fBYVvvCNUTIEiK/gXnY3WuG+HeElfZvN0IJhgY/Kj7X6VPrCnksJMFYGOs wahA== X-Gm-Message-State: AOAM532rT+eEXDZCYnJPxhcs+wNFMOwgcJ+nIxFX5JuDKF2aLXCZiWb9 yYPkWJAPslq1oD7vzCmDyh7T1dtST/4= X-Google-Smtp-Source: ABdhPJzTP8lTh8jDNFbM2ez+W/Z45R+q7tbCAqwcs2+T+X8sB6+jhvRJWfGgIS7GXOVtQPM8rHNx7g== X-Received: by 2002:a5d:518a:: with SMTP id k10mr19786163wrv.214.1613408180180; Mon, 15 Feb 2021 08:56:20 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id b2sm24531855wrv.73.2021.02.15.08.56.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 15 Feb 2021 08:56:19 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 15 Feb 2021 17:55:49 +0100 Message-Id: <20210215165549.667105-6-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20210215165549.667105-1-andreas.rheinhardt@gmail.com> References: <20210215165549.667105-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 6/6] avformat/mxfenc: Discard audio until valid video has been received 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" Normally, video packets are muxed before audio packets for mxf (there is a dedicated interleave function for this); furthermore the first (video) packet triggers writing the actual header. Yet when the first video packet fails the checks performed on it, it will be an audio packet that leads to writing the header and codec_ul (a value set based upon properties of the bitstream which necessitates actually inspecting packets) may be wrong. Therefore this commit discards audio packets until a valid video packet has been received. Signed-off-by: Andreas Rheinhardt --- Updated the commit message in light of the fact that #7993 is now fixed by the earlier commit. libavformat/mxfenc.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 72edaa9e30..1c668998e2 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -2887,6 +2887,13 @@ static int mxf_write_packet(AVFormatContext *s, AVPacket *pkt) MXFIndexEntry ie = {0}; int err; + if (!mxf->header_written && pkt->stream_index != 0 && + s->oformat != &ff_mxf_opatom_muxer) { + av_log(s, AV_LOG_ERROR, "Received non-video packet before " + "header has been written\n"); + return AVERROR_INVALIDDATA; + } + if (!mxf->cbr_index && !mxf->edit_unit_byte_count && !(mxf->edit_units_count % EDIT_UNITS_PER_BODY)) { if ((err = av_reallocp_array(&mxf->index_entries, mxf->edit_units_count + EDIT_UNITS_PER_BODY, sizeof(*mxf->index_entries))) < 0) {