From patchwork Sat Apr 24 11:14:42 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 27248 Delivered-To: andriy.gelman@gmail.com Received: by 2002:a25:49c5:0:0:0:0:0 with SMTP id w188csp2035046yba; Sat, 24 Apr 2021 04:16:26 -0700 (PDT) X-Google-Smtp-Source: ABdhPJw0O7mJuqomOQ07esD19+DWGrSAp6gt7FbGMy7dIQsUP9b4roYGfqeBAcFRK38Tkh+8TKp6 X-Received: by 2002:a17:906:b1d4:: with SMTP id bv20mr8762361ejb.46.1619262986392; Sat, 24 Apr 2021 04:16:26 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a42si1283863edf.319.2021.04.24.04.16.26; Sat, 24 Apr 2021 04:16:26 -0700 (PDT) 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; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=Y07iUCOg; arc=fail (body hash mismatch); 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9EE8868A0BF; Sat, 24 Apr 2021 14:15:40 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075109.outbound.protection.outlook.com [40.92.75.109]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0D4BB689FF0 for ; Sat, 24 Apr 2021 14:15:36 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=gCTaq6te8LbpLQdWkBJovvgBk0R3a0XgXa2Up3Sr+pxl3Z5UXDQ8oDw/nuwJkuJVN8GEwMuYIiUfs9/fic9qUlzVmPpSDyv7HIeKgiXWQKtSBmXKLGkL7dnCYAYEAOzaGT3GWdhoDp+MJjNQYb8YqL6wSPk5G2shRKzP8rkOBGy7Ieb4EIPAaxMHK3SzlEZI43eKEXOQkEeaa0Qfm5wcZXxUjH62jRowj+eyBj/TmhHcw6wbJp4ND5bmVdp8Wem5nns5R/LFOIAx2FOJ5HeZIi+2UPHUHE5DxbZxVLFTJRn6Ak4FJAH3BOT6Wtb98rfzTVPt12XGcOpTj+x0xSbL7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wp/iwrYGjJn3ASZEE1xJ4bXlqriR5+lv1erVsrrda2I=; b=C2FuZTonapPSU/JSEijrHK6X4GAT26tqQvUwBBf7eh4qaLB/W2H923MZ01OuRZ3Fvg6pQPSGCufM6iUlc0x0Mn3s/nIwLQT9w4l1HBVJdKO1OT5i4WLdckCa2OAgYostey4keAOoPLJpc1Tndl9AmTaOg/xbpJ6zKv6V+OlbldriMSfihHVYUBHLCTuOtCCO4RcgDL6HrReysm7iuLjbTtm7k0F8FqfFYggp29vqYiI0OEi20/88H8kbFV/l41X3ne2LCl3vlVft9ZHqGIaX7JtIaCXiHnZ0jujAU8PJ/tPa9YvtykI+BJ650dKUyt0pyF4vx3ELjfK3/VvchT8w6Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wp/iwrYGjJn3ASZEE1xJ4bXlqriR5+lv1erVsrrda2I=; b=Y07iUCOgLcqQKTP1maCiGgT7pQd3owG2XE6UbN+evvKDcY5yrNOU/YGVcL1iO+JTAyEZiiWh1OPKnmt0vYLSabW8UZc6eLp0nSs9afAjXnWlJpuRZBwgNsIpW0py0e6N6U/ZEtgeQAHePdO12a2S2fELJJOgLa8jrkUYRw8LA1NxTQq3iRGiDZW8rU+siiJIX652tX9jilJrLAdOHEpuvZfzPd+ZXJpIVSzBR5mdwL1XhFjrVBTN2L+C6qzLlJbEEClC6+547mCYqQnAFk64rQrq8pfd/zOTTqVR3e2dBWtag6DIIl6OE8+yg28cxBLUpjUJwLG+ff3dkaJNJfg1tQ== Received: from HE1EUR04FT042.eop-eur04.prod.protection.outlook.com (2a01:111:e400:7e0d::43) by HE1EUR04HT059.eop-eur04.prod.protection.outlook.com (2a01:111:e400:7e0d::327) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21; Sat, 24 Apr 2021 11:15:35 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:7e0d::46) by HE1EUR04FT042.mail.protection.outlook.com (2a01:111:e400:7e0d::159) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21 via Frontend Transport; Sat, 24 Apr 2021 11:15:35 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:305C5AA66263904491E4BB12F0B4F10B5561FF55F5662B7DB105365AB5FDD78F; UpperCasedChecksum:506A48E56449E3665A53CDAED8A61D3A86C17559B096E3C2AF0E9B061832D0B7; SizeAsReceived:7610; Count:48 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::45bb:c44f:2b75:23b7]) by HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::45bb:c44f:2b75:23b7%5]) with mapi id 15.20.4065.025; Sat, 24 Apr 2021 11:15:35 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 24 Apr 2021 13:14:42 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [KX50GwTdsQEZUGmP/TDoil3Eueoks7Cg] X-ClientProxiedBy: ZR0P278CA0160.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::18) To HE1PR0301MB2154.eurprd03.prod.outlook.com (2603:10a6:3:2a::22) X-Microsoft-Original-Message-ID: <20210424111446.30338-9-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.193.248.86) by ZR0P278CA0160.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4065.21 via Frontend Transport; Sat, 24 Apr 2021 11:15:35 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 48 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 26035645-96c5-46a0-229f-08d90712485a X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiSHACczraePvIduOTLAdlimBYlWkNNy2iqW0aTgmD869I6+yJCKI013o4XEFsckgr611FxPfOtfCXqeu7sPkvWR1qP1aZKSNQDpTB2w0g/OI/W6Qcn2AvVdIO1cX0x9YtTmmuZH16wnUDJhbyR8nHb912W/+1Qbqmz5iNw+dq23ghyWD6pQsy/HQTANAsj20/SLulD5gpDW65jkKld8Spbeg1gumjyilWuWi/fOLbtpFIwG4xIgzzZBbgfm2zemLBQsQu32G2bNcXiByXlr3BMfFoDq+gjbH2q1eB2/oZHPXq/mtmMZ14DCn459x8asKQNLGNJO+6LOBE/fuUqlXR5q//SUAJeXkab2mfTAwKG5xF8MRzu8geAbttDmhwOP39KzFbROI8NrZ33ESBuLUqnUsR2/Bu5Iu+KGAQt0L3YXDxIK7loEAsAgHQ4ON8t4wJCAXvqnOOnA3f4iRXNlp5pemt/niBIravMDyvpu1WoIGXXEdhelUz+mvHN+6yZy/OsSuprvqgmv6IpDjjMdv5OqM5o1irILUgKtjLNg8gucIh24nmZoosZZzHZ9BvXe2WAMYG6ICUiPKhkRZ+MoFO4yl8+iiFwGQ8kRdE0GhxeMlc/9xYnyyC7chKMq6iKy2YGljsZfBrJ70xcSlrSK5aLvHFDSF3ususCqSf+qBoISDqu2VUQS/N9oUOp5ZXVebLzBD2DbZbfrQyMuhlkxw8lnWOOadx3U4Hy1WVcjpddpyjujbDRrUlePtlwMyTgSwrc= X-MS-TrafficTypeDiagnostic: HE1EUR04HT059: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: XsNXgqhodMXSyAVNGg3aZwgZEYhHDvSJkl2F8l5V5l7DneJQY8yj3EGW0Qs3XHiT1BJcGUKwoFi/rZV2Cxtihens52Y5M3KnHKLB/B7q1yBiNtmBgvdydorWGemhUO1KbY5xc1iS1ZyZPXQc9YSDKGtQP8C2O12Gs9yNcoV23XOZ88SEoIvxXUYyBdeKW7anyjHsmJHajWv7sz4OjXziVthJlqgGJT1TdpWjx+7LsYY8/lDjemq+VFgHNsS4klYpVBwW5S8Zx8xGV+G1v3OW2w53m7hbVlhwZErsq1bkWUoeTE/EWI13oAA0kjVpA+7i73pneUfQaQbMxOwpD1g1aiHMpV84PFQamCMADGoT56HOK744XfsHtkslJq0nA8HzVEw7dmKKaSsC4OinXmVk5w== X-MS-Exchange-AntiSpam-MessageData: 1A3zZW5q4k9rJj+/li2c+H35X8WIien42BvSLgNsNs5BMc+EYyv0aHc+Ybfx2RbOpo6/mo73JYjUN+16mhtCw8m2+KRmPts6vHpoT6pGHHECc3JYNN3Sq6oD83L5yOpIA5+AZ/KIFN8LhwxUh4ogUw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 26035645-96c5-46a0-229f-08d90712485a X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Apr 2021 11:15:35.6427 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: HE1EUR04FT042.eop-eur04.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1EUR04HT059 Subject: [FFmpeg-devel] [PATCH 10/14] avcodec/ffv1dec: Treat all slices as damaged if frame is fully discarded 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Zpk62h/fEITa Content-Length: 2742 In this case each slice's context is damaged, so decoding future frames will fail until the next keyframe; furthermore, in case of frame threading, the current thread's decoding state is not updated based upon the earlier frame's decoding state, so that the damaged frames produced by frame threaded decoding do not coincide with the result of received by non-multithreaded decoding/slice-threaded decoding. Signed-off-by: Andreas Rheinhardt --- libavcodec/ffv1dec.c | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/libavcodec/ffv1dec.c b/libavcodec/ffv1dec.c index bddfd8e2fb..c9583db60a 100644 --- a/libavcodec/ffv1dec.c +++ b/libavcodec/ffv1dec.c @@ -870,9 +870,27 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac } p->key_frame = 0; } + buf_p = buf + buf_size; + for (i = f->slice_count - 1; i >= 0; i--) { + int trailer = 3 + 5*!!f->ec; + int v; + + if (i || f->version > 2) { + if (trailer > buf_p - buf || + buf_p - c->bytestream_start < (v = AV_RB24(buf_p-trailer) + trailer)) { + f->key_frame_ok = 0; + av_log(avctx, AV_LOG_ERROR, "Slice pointer chain broken\n"); + return AVERROR_INVALIDDATA; + } + buf_p -= v; + } + } - if ((ret = ff_thread_get_buffer(avctx, &f->picture, AV_GET_BUFFER_FLAG_REF)) < 0) + ret = ff_thread_get_buffer(avctx, &f->picture, AV_GET_BUFFER_FLAG_REF); + if (ret < 0) { + f->key_frame_ok = 0; return ret; + } if (avctx->debug & FF_DEBUG_PICT_INFO) av_log(avctx, AV_LOG_DEBUG, "ver:%d keyframe:%d coder:%d ec:%d slices:%d bps:%d\n", @@ -887,14 +905,8 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, AVPac int v; if (i || f->version > 2) { - if (trailer > buf_p - buf) v = INT_MAX; - else v = AV_RB24(buf_p-trailer) + trailer; + v = AV_RB24(buf_p-trailer) + trailer; } else v = buf_p - c->bytestream_start; - if (buf_p - c->bytestream_start < v) { - av_log(avctx, AV_LOG_ERROR, "Slice pointer chain broken\n"); - ff_thread_report_progress(&f->picture, INT_MAX, 0); - return AVERROR_INVALIDDATA; - } buf_p -= v; if (f->ec) {