From patchwork Fri Apr 2 19:06:19 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 26716 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 8DD1D44A6E4 for ; Fri, 2 Apr 2021 22:21:20 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 60EEB689BDC; Fri, 2 Apr 2021 22:21:20 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR06-AM7-obe.outbound.protection.outlook.com (mail-am7eur06olkn2030.outbound.protection.outlook.com [40.92.16.30]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F08AB6804FE for ; Fri, 2 Apr 2021 22:21:13 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ZZVEYt7o6We+aQIh0yK9HPF1XnrFkIsnJ73puvJw4f/6uXpFYYtFCf0W7KwnPF90A6l32yN7deZ4UZcWdzm9ORosmfPUbsbjg0Nh6A+X6912jmj5dkWef7L1Tp83hARWG4ndIqQ3d/dj0wQUHuYnIqcjar98b/da6X6Npl0aIVITs3mlZ4XWyz/dnagA1Q+XHoiSh78dIA8pY97d69pFpvxAiAWJiBvEGOEtpusSx1LIvq/5dYzjV8BIxY+OYuu/d5VIRQBCMUPt60f4JQiCCGrh3YDzTAxAILTbwt9ZNHgKV7wDgpD8Vj6/mt96wShtXkVMxTkvyGogeogMN/ycwg== 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=S/q21CKzWq/rpSS6m2Q+Y3Es2lgLtrADobe9Np0CAEU=; b=ObLMRdnGCwXrccwKf6bFJFGjeZYxtkAj//D6kB1VBOtBpiMM5QrYi1swn10iP61qPwS33WzIt+HgzhNpoczcQleQRJLkyvV67frXwbSedcNPQaj0/+fAKjIheDZvNUPBWGLATowXKKDbj/7wM5OSjIM5Cvxtom3wASmWjS+poJ/6R/gs1cvTIR0NDK1P7qMZQP505sOOsOf89oT7mdev/eo8pMbcMRJcGiIUQd1LoVmtCtHsDe36xKdNqlO6e+AjB/8LtjbSJRnTPKHBVp4JSB6WEnbEssn4xso/pYZEx6xrsJEckJnGEuwqEpWZV24iDT213GNsY1zZfUcZ4FqhZw== 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=S/q21CKzWq/rpSS6m2Q+Y3Es2lgLtrADobe9Np0CAEU=; b=XPaRBYuxVtc67tUgalOScth0toS9/8dsrLCIA9J4qLBGuq15iRbU6DH6faHekQmsK+xWB44TieeFMXF7SFTagi+s03jeZdHPRVHlvZwj5XDcJ9XDTxyVxnDQFs99TR2gq//CO+uT9g5VJEbkyDKLkBES4pNjGEUUifJSIIuXOd8bhSNTOzNfEdmxTQ0YWuv/MC9330GeUodBrs6wLAsUCnpWuqU77mlPx1RsIr8yhE/vOoGKFVPjOQEkIkBAD+CFMShhmmljUVG9fXyDEAohBecGbRawcA6Bb/TDkXwcXtdDgwYOlaNSKhnyItp7I3TFwspCXTzF04YWcLrjE3JCug== Received: from VI1EUR06FT003.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc37::4d) by VI1EUR06HT146.eop-eur06.prod.protection.outlook.com (2a01:111:e400:fc37::343) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28; Fri, 2 Apr 2021 19:06:28 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:fc37::45) by VI1EUR06FT003.mail.protection.outlook.com (2a01:111:e400:fc37::75) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28 via Frontend Transport; Fri, 2 Apr 2021 19:06:28 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:A5020371B1032FC1F729AC305C43E59A5B11E0DECFE2437AF3F294F64055B92D; UpperCasedChecksum:74069A21418A63547239937DB1BAB9A084EC9A1A2E5EB3FAA2820290B3BD28BD; SizeAsReceived:7401; Count:46 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::8128:5de5:4e94:9a21]) by HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::8128:5de5:4e94:9a21%3]) with mapi id 15.20.3999.028; Fri, 2 Apr 2021 19:06:28 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 2 Apr 2021 21:06:19 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 X-TMN: [IlZBhgghRNH3c70xXqcA/eFH4+tlzSx4] X-ClientProxiedBy: AM9P193CA0019.EURP193.PROD.OUTLOOK.COM (2603:10a6:20b:21e::24) To HE1PR0301MB2154.eurprd03.prod.outlook.com (2603:10a6:3:2a::22) X-Microsoft-Original-Message-ID: <20210402190619.2912643-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.137.96) by AM9P193CA0019.EURP193.PROD.OUTLOOK.COM (2603:10a6:20b:21e::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.29 via Frontend Transport; Fri, 2 Apr 2021 19:06:27 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 46 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: ccbdb118-71fd-486c-f353-08d8f60a6ae9 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiR3EehW4kxQzT4/G1So7gcb8EmKuAjE8TSOxrR8fmCGzVBdU/nQ9DtvOTHbpRkP/uiMwe5TCLujV1EJLlKFRWyXI3WXqrK/Owe7AXLHvXruEaa94t6oFX+oPh2QUTtPXAiMNmzx59NaPR32Wgfb/smjXQcd0gZgYNVWTgeo9dKYgHy7BM68J7W6IbPu24eq/Sw3a8rp5UZKi+TKCuKX7GEfi8jxzyFU5hIAQN+biZDNpz8K5+gptW7Wa6l0LBLQ1MW+mJfj1YbSIsnG925Ifeb61+SufJxFOG+zPon4v9WPJWGjaArcz9XH883MmqHKNi1UwR1X0K+ltZeClyogIQ9S3hMu83e8tZea4QxDkmDoKp5Aii4HwZKd0/bH5XdIwMmVDyAxfxOQ2HE5tGS6xHh8GR4YW1LPVZAjlGZtMhlkuF6IAkQ45HySG9uz6i/iIdlUrSAwxVJJJtQVdKhX2NpDhtnlOn4ou7ZG5eq4HtZbwJ2oyH7AcA5l4f8h/wWYGpgTy4x1g7zRBo9ZLP3norZsTm6QddFvc4j2B/dGasyTlAJDsbjnFv/ukzAior0HPQ9FC3aW9gNAegOlf/OF5Nx2KuGrYkgL3PHlCe8YGmAbL5CPm0y1NjgV1Vd+rgdSoOtGjtwWnWsVvUc7I1kUc9UHW3BHYEszroq9OZ3S8/h+6PP3OnQuE0jX/f4TBY55Y/0a/BmgaXOiAu71jA14+BcSEWu7bw9efoSOIV2y6vw9Mh7xtOqn089tHPZxGcDSFLI= X-MS-TrafficTypeDiagnostic: VI1EUR06HT146: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TcUGBCKlSuSP4Tf3RFj5T48lLtodTQeZK+KrPG5AxKEljaZNMTqphKVkwksteOuHw2k+YGEWZyyjfTBThHIcnoU/iF2Qf0SG65QxPqbv8sZrddAdHKhjSumsgIVWc0c1Uc6ab/PMTLwcdYrTdh1w3QgbqM8KCU1wHGx9SZLJsqXO7W6ZH8Q2DGPCj5bGeUMkkbKk0KsarvrgNqBcho1Vr+grUzLTUgdLdR0ef/BddIWMsjb1/Er3fAbK0RaF8Bj2v/+WcExQLWDAUKeZwLFuvaOwRoY37G9+hL+vjyXovXZzzW6nGnrmh4gNtwVcnSeme1W2mmTkQl9smVhMFpck+HTymu7cWvqoPHqnsi145FYJAYmCmvlnw/4mYoKmVP8CU9TjgkWpTnpUMXK4Yh/OeQ== X-MS-Exchange-AntiSpam-MessageData: aMulv35MJdnhPhsAfszSePAiSCl4YwGMIDgLwYM2m8koj/z5RFyrbhLLSii7zh1g7Tu6Wo4hLXugnVvXQjp2Bea/pDGy7wImSEFThy40xO177HijLKaI250bjjiwp8ZNAPrQtz7ZPlp5groHctJx5A== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ccbdb118-71fd-486c-f353-08d8f60a6ae9 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Apr 2021 19:06:28.3994 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: VI1EUR06FT003.eop-eur06.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: VI1EUR06HT146 Subject: [FFmpeg-devel] [PATCH] avformat/vividas: Fix crash when seeking without audio stream 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 current code tries the access the codecpar of a nonexistent audio stream when seeking. Stop that. Fixes ticket #9121. Signed-off-by: Andreas Rheinhardt --- Will apply this soon. libavformat/vividas.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/libavformat/vividas.c b/libavformat/vividas.c index 603d01a2dc..d35a646bde 100644 --- a/libavformat/vividas.c +++ b/libavformat/vividas.c @@ -757,18 +757,23 @@ static int viv_read_seek(AVFormatContext *s, int stream_index, int64_t timestamp for (int i = 0; i < viv->n_sb_blocks; i++) { if (frame >= viv->sb_blocks[i].packet_offset && frame < viv->sb_blocks[i].packet_offset + viv->sb_blocks[i].n_packets) { - // flush audio packet queue - viv->current_audio_subpacket = 0; - viv->n_audio_subpackets = 0; viv->current_sb = i; // seek to ith sb block avio_seek(s->pb, viv->sb_offset + viv->sb_blocks[i].byte_offset, SEEK_SET); // load the block load_sb_block(s, viv, 0); - // most problematic part: guess audio offset - viv->audio_sample = av_rescale_q(viv->sb_blocks[i].packet_offset, av_make_q(s->streams[1]->codecpar->sample_rate, 1), av_inv_q(s->streams[0]->time_base)); - // hand-tuned 1.s a/v offset - viv->audio_sample += s->streams[1]->codecpar->sample_rate; + if (viv->num_audio) { + const AVCodecParameters *par = s->streams[1]->codecpar; + // flush audio packet queue + viv->current_audio_subpacket = 0; + viv->n_audio_subpackets = 0; + // most problematic part: guess audio offset + viv->audio_sample = av_rescale_q(viv->sb_blocks[i].packet_offset, + av_make_q(par->sample_rate, 1), + av_inv_q(s->streams[0]->time_base)); + // hand-tuned 1.s a/v offset + viv->audio_sample += par->sample_rate; + } viv->current_sb_entry = 0; return 1; }