From patchwork Tue Jan 11 20:45:57 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Anton Khirnov X-Patchwork-Id: 33262 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp4050406iog; Tue, 11 Jan 2022 12:52:27 -0800 (PST) X-Google-Smtp-Source: ABdhPJz0aY+5C8uYeloAPGQuIKUv0LIZvtw5sH3kl+B4SV7SmRjXdQtF8VInUAbDsrQR1g976/t9 X-Received: by 2002:a17:907:1701:: with SMTP id le1mr4859955ejc.608.1641934346891; Tue, 11 Jan 2022 12:52:26 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1641934346; cv=none; d=google.com; s=arc-20160816; b=FgKCQ1dUbPBuGIxEV58IEJ0te6JA7UF6qOvX+pT5vtOtnd6NHN3iagsbNiZYStXnZ3 hZvyEfcLWxVsUaXuzGq9SBnWSpoVKDpp30uzrr8zN+ABsMVJDCur2OSHgx5CFPnOgiLD 4F0ZncnF8qpf/tgKX6cnzajczhBlslMN6NzjMtnJ0BjA4k2wqQEFugvUiDP0g/71HjZn GRMIYygOeuzCC43QuBnwwGdLNtEOLudJPD4WAQoWrWZ7f4vPhyiBStFsvPN11Wgp5jbu hRdJyKJKnT6GWhTdYDrfSNYFVkXb20i3iFz6gzESb9ko19v8Y91I71EopEF0kntyIW4/ hkXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:delivered-to; bh=4PeSt9sKCxCqPl24gdp+g+kZzOPuaanoTYdEcChlbRA=; b=v19Dg7YjFWJlYOiQbeuNYlUBEgJI4Olp323tlbnR/oG7fiPHbwpBDOugylcB0/Ux83 +im6uEQOO7gb5ylrA/SBQGZBng0X2XvWfMCR/EqplNVpWhF2lp58bxcNvbg9rCVA+dyE D6QTUp+r6Ydx6H9VhOCaP7JbcQmFKcAzPSbRlU1w7SeM5hslcN+5+aWX4e91RKH1jmKW u2NycfdEEzSalGEx/GSTOBTDQMXJdXA3IlgC36DxYXQa4rqFoQULjMVbmzkc4xO7bGRm bfJIsfSmLa7Sbst+BDTjuHgvqP/e2NMAZEYqYj1tL7PKX3UNwBHIlAsr/EmGK9JTRKOC uhRQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id fj4si6145235ejc.32.2022.01.11.12.52.07; Tue, 11 Jan 2022 12:52:26 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6CD0268AF55; Tue, 11 Jan 2022 22:47:59 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail0.khirnov.net (red.khirnov.net [176.97.15.12]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AA4B468ACA5 for ; Tue, 11 Jan 2022 22:47:38 +0200 (EET) Received: from localhost (localhost [IPv6:::1]) by mail0.khirnov.net (Postfix) with ESMTP id 3A28E2404FE for ; Tue, 11 Jan 2022 21:47:38 +0100 (CET) Received: from mail0.khirnov.net ([IPv6:::1]) by localhost (mail0.khirnov.net [IPv6:::1]) (amavisd-new, port 10024) with ESMTP id 5Rsz9YvOEwCi for ; Tue, 11 Jan 2022 21:47:36 +0100 (CET) Received: from libav.khirnov.net (libav.khirnov.net [IPv6:2a00:c500:561:201::7]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "libav.khirnov.net", Issuer "smtp.khirnov.net SMTP CA" (verified OK)) by mail0.khirnov.net (Postfix) with ESMTPS id 5083D240690 for ; Tue, 11 Jan 2022 21:47:26 +0100 (CET) Received: by libav.khirnov.net (Postfix, from userid 1000) id 4448B3A0C80; Tue, 11 Jan 2022 21:47:25 +0100 (CET) From: Anton Khirnov To: ffmpeg-devel@ffmpeg.org Date: Tue, 11 Jan 2022 21:45:57 +0100 Message-Id: <20220111204610.14262-22-anton@khirnov.net> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220111204610.14262-1-anton@khirnov.net> References: <20220111204610.14262-1-anton@khirnov.net> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 22/35] lavf/dvenc: return an error on audio/video desync X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IQA2H/YMopN0 --- libavformat/dvenc.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libavformat/dvenc.c b/libavformat/dvenc.c index b76539b59f..03b63cff89 100644 --- a/libavformat/dvenc.c +++ b/libavformat/dvenc.c @@ -255,8 +255,10 @@ static int dv_assemble_frame(AVFormatContext *s, switch (st->codecpar->codec_type) { case AVMEDIA_TYPE_VIDEO: /* FIXME: we have to have more sensible approach than this one */ - if (c->has_video) + if (c->has_video) { av_log(s, AV_LOG_ERROR, "Can't process DV frame #%d. Insufficient audio data or severe sync problem.\n", c->frames); + return AVERROR(EINVAL); + } if (data_size != c->sys->frame_size) { av_log(s, AV_LOG_ERROR, "Unexpected frame size, %d != %d\n", data_size, c->sys->frame_size); @@ -270,8 +272,10 @@ static int dv_assemble_frame(AVFormatContext *s, for (i = 0; i < c->n_ast && st != c->ast[i]; i++); /* FIXME: we have to have more sensible approach than this one */ - if (av_fifo_size(c->audio_data[i]) + data_size >= 100*MAX_AUDIO_FRAME_SIZE) + if (av_fifo_size(c->audio_data[i]) + data_size >= 100*MAX_AUDIO_FRAME_SIZE) { av_log(s, AV_LOG_ERROR, "Can't process DV frame #%d. Insufficient video data or severe sync problem.\n", c->frames); + return AVERROR(EINVAL); + } av_fifo_generic_write(c->audio_data[i], data, data_size, NULL); reqasize = 4 * dv_audio_frame_size(c->sys, c->frames, st->codecpar->sample_rate);