From patchwork Fri Feb 12 22:47:46 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: sfan5 X-Patchwork-Id: 25603 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 192BE449289 for ; Sat, 13 Feb 2021 00:47:59 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E13F368A192; Sat, 13 Feb 2021 00:47:58 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2034.outbound.protection.outlook.com [40.92.90.34]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BD70568818E for ; Sat, 13 Feb 2021 00:47:52 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dd1KzcuKU4mg6rpbiL1XWEtSFkFnekaKkmxvjEP1/qMC0jnBs5Raxw/qop7CYPWe/qUUTs9cnxe485sS8pEGHX5lLLki6xIuo1RfkS9OFiDZw05ZVP5H6s+PtbvJa/FCpIzFu9hN/9PvX1HQuf7tkUX9SQBW/CCFAmKFJ2pDnRavBxM0s6MbfIDscK0xwAnsCTu5xBfShm9f/NBdwWteOZTItZEzeL2WdNk8G5J2VpJwgrkVXJQH69Yq7PwA7EAmb7fmCGyNtz6FDkJezYPwjt2FaSmDpefNhq/kZmnuM7y2ol4dXBH0IA/ana7kqL2htZxM7z+ev6HeAqIBtqoF9A== 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=eUiV6rSCsk34eugciaTatGOLFo+RqW0MPsH1ZmqKexs=; b=mi0vV19n/x5g5I/grESGNRVj19SwcgH74Dg+HB3Sj1p9uo072xmF9GVdwn2xhTjDKBqnRSEF8apLrujTu61L8jHcmD2+UupA72M7GdhmaZVQW/R2UQuvMwQvHXm1rBs58/ld5yfZACb2i9xssNSL+y/7I5a5RdSQV+QjCx3DaIXCYnIbO/vVQ1wEk5TDD7T2Y7RA6nLRu2yOOW+r40OcNlcKoCrj0PHrar3LLhXq3+tEArg+0vj0HAYEr3LLUrVIQfdaKZKT3s/v8P1Dc8kdkFwhKl/oW30UR6Yp+9Q8MOsEkL3NuwwDIvCKFZpMDhIYdf451G/ukKlpoziI+73n3Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none Received: from AM6EUR05FT015.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc11::4b) by AM6EUR05HT144.eop-eur05.prod.protection.outlook.com (2a01:111:e400:fc11::450) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.25; Fri, 12 Feb 2021 22:47:51 +0000 Received: from DB6PR0901MB1495.eurprd09.prod.outlook.com (10.233.240.59) by AM6EUR05FT015.mail.protection.outlook.com (10.233.241.34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3846.25 via Frontend Transport; Fri, 12 Feb 2021 22:47:51 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:4D94D3BF4F919DD2D65031B9D9C9C9DCE3D55FC3E189D2615A09AF399292B292; UpperCasedChecksum:E25F51920AE8C16B2B2BBC9DAE54EC84D83518B21CC25435D5524C0DC25524F2; SizeAsReceived:8824; Count:46 Received: from DB6PR0901MB1495.eurprd09.prod.outlook.com ([fe80::5c07:7420:c23b:869f]) by DB6PR0901MB1495.eurprd09.prod.outlook.com ([fe80::5c07:7420:c23b:869f%2]) with mapi id 15.20.3846.037; Fri, 12 Feb 2021 22:47:51 +0000 To: ffmpeg-devel@ffmpeg.org References: <384bf747-67bf-8025-521e-ff07bddf5c21@gmail.com> From: sfan5 Message-ID: Date: Fri, 12 Feb 2021 23:47:46 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.7.0 In-Reply-To: <384bf747-67bf-8025-521e-ff07bddf5c21@gmail.com> Content-Language: en-US X-TMN: [yg/Ijsap8iyIzCyg1cCBpwhcHXetaViOqiJl5vLwr2BLWjVJjHGmdaqxEd8UALbk] X-ClientProxiedBy: AM4PR07CA0016.eurprd07.prod.outlook.com (2603:10a6:205:1::29) To DB6PR0901MB1495.eurprd09.prod.outlook.com (2603:10a6:4:7a::9) X-Microsoft-Original-Message-ID: <385bd3fb-fd07-4cb8-1c61-58222c0d2a10@live.de> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [IPv6:2003:cd:6f14:b118:e9ed:5d12:15bb:7958] (2003:cd:6f14:b118:e9ed:5d12:15bb:7958) by AM4PR07CA0016.eurprd07.prod.outlook.com (2603:10a6:205:1::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3868.12 via Frontend Transport; Fri, 12 Feb 2021 22:47:50 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 46 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: c634a5a8-6c3a-496b-072f-08d8cfa839fa X-MS-TrafficTypeDiagnostic: AM6EUR05HT144: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OIEc37t6tSmoGc5NIeylNQRQ/Z0q0QMP+S15ll8znWUW4if0mErBKhR7ijr5vBrtEOImed4FKDUZcWaSd/qT9Zi8GzDYfe9LnAPJbd7HVpwXMEvm46YmftBqswzjep4pTovlmp+owc0MXfsoXIDPNercFrWF17OfwHwS5v7ZoOncDEboWtERG8fKj1zwOk/ivScR+kfSbfCmZ9YImx5Yb5m07UQX3Q/drF5mDD/MfLhG5k085WC/2K4c48hhBlzcSdEOXregp40ub3kT6iBi7WTGIe4Noh547c3WeDQyzAQxfTtDZLiBxH4KZg3smCi+iy+x4nAcV4FXrhZuUBch080yeYjqumL2c3yHVaUDkYcbdCtq9SnCDlN59WlFGPLAQDFxAtd52hB9Oq/6fHkZ+Q== X-MS-Exchange-AntiSpam-MessageData: 0zp6J4qQ5WwE+SHPd1erqF4bTsVWYs690hLTDDpNEYmS2fk6Zj8RsfYWPyLFWACb6LphO4nbg7RyanpNeO4pQ4bdDKEJdPRA5XMigyHv5mybtfKsuqAH6oZGf1iUDGenAzs3uvVMWXuT5uWVb7UCY7NX6iPpEvPsYoV9whiJrLqASjcYrIr1uQVYdTyv92sxEDn4J6bsmGMrRqKWmwP9gw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: c634a5a8-6c3a-496b-072f-08d8cfa839fa X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Feb 2021 22:47:51.3314 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: AM6EUR05FT015.eop-eur05.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: AM6EUR05HT144 Subject: [FFmpeg-devel] [PATCH v3] avcodec/mediacodecdec: Do not abort when H264/HEVC extradata extraction fails 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" 12.02.21 - 21:43 - Andreas Rheinhardt: > sfan5: >> Hi, >> >> >> attached v2 patch after discussion on IRC with JEEB (as he already >> mentioned). >> >> Only change is that the log level turns to debug when missing parameter >> sets are within spec (cf. 14496-15). >> >> >> - av_log(avctx, AV_LOG_ERROR, "Could not extract PPS/SPS from extradata"); >> - ret = AVERROR_INVALIDDATA; >> + const int warn = is_avc && avctx->codec_tag != MKTAG('a','v','c','1') && >> + avctx->codec_tag != MKTAG('a','v','c','2'); >> + av_log(avctx, warn ? AV_LOG_WARNING : AV_LOG_DEBUG, >> + "Could not extract PPS/SPS from extradata\n"); >> + ret = 0; >> } > warn = is_avc && (avctx->codec_tag == MKTAG('a','v','c','1') || > avctx->codec_tag == MKTAG('a','v','c','2') > is what you (should) want. > > - Andreas Thanks for pointing that out, you're correct. here's v3: Subject: [PATCH v3] avcodec/mediacodecdec: Do not abort when H264/HEVC extradata extraction fails Although rare, extradata can be present but empty and extraction will fail. However Android also supports passing codec-specific data inline and will likely play such a stream anyway. So there's no reason to abort initialization before we know for sure. --- libavcodec/mediacodecdec.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libavcodec/mediacodecdec.c b/libavcodec/mediacodecdec.c index ac1725e466..f5d13b171e 100644 --- a/libavcodec/mediacodecdec.c +++ b/libavcodec/mediacodecdec.c @@ -167,8 +167,11 @@ static int h264_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format) ff_AMediaFormat_setBuffer(format, "csd-1", (void*)data, data_size); av_freep(&data); } else { - av_log(avctx, AV_LOG_ERROR, "Could not extract PPS/SPS from extradata"); - ret = AVERROR_INVALIDDATA; + const int warn = is_avc && (avctx->codec_tag == MKTAG('a','v','c','1') || + avctx->codec_tag == MKTAG('a','v','c','2')); + av_log(avctx, warn ? AV_LOG_WARNING : AV_LOG_DEBUG, + "Could not extract PPS/SPS from extradata\n"); + ret = 0; } done: @@ -254,8 +257,10 @@ static int hevc_set_extradata(AVCodecContext *avctx, FFAMediaFormat *format) av_freep(&data); } else { - av_log(avctx, AV_LOG_ERROR, "Could not extract VPS/PPS/SPS from extradata"); - ret = AVERROR_INVALIDDATA; + const int warn = is_nalff && avctx->codec_tag == MKTAG('h','v','c','1'); + av_log(avctx, warn ? AV_LOG_WARNING : AV_LOG_DEBUG, + "Could not extract VPS/PPS/SPS from extradata\n"); + ret = 0; } done: