From patchwork Tue Sep 21 22:18:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30433 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6506:0:0:0:0:0 with SMTP id z6csp2858223iob; Tue, 21 Sep 2021 15:18:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwv73hr/CPfyfVfZk/fMh9akMLAQvxQanxpNA4dWwcsUcqwNeGBzpfbMwGAq2jPsklkfqEm X-Received: by 2002:a17:906:6691:: with SMTP id z17mr37109406ejo.207.1632262737712; Tue, 21 Sep 2021 15:18:57 -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 ds17si303725ejc.79.2021.09.21.15.18.56; Tue, 21 Sep 2021 15:18:57 -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=s4CkukE8; 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 863B068AFA8; Wed, 22 Sep 2021 01:18:43 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2085.outbound.protection.outlook.com [40.92.91.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4729768AEFF for ; Wed, 22 Sep 2021 01:18:37 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XNC7XBTv7XmV1X3D/EasH3dQFPHXgkEyrRvJlbVJjvJVIjPeuZnWS0x8qVk0IMApTe/xLI0K2tJ9cdcyX59IkYHThru0PTxgfb8imVDW3vz2ntvfUJzcAwqpDNSmqqZaQTkE/PF5r5tOQM0yTQ5OQfxuXM63Br2CQ7pDDJbhWgQA6132xZmq69fgyWwc2TbsZv/CBQ7jgTuJ9jgoWIwtKDr7A0GJ9cIMQKrYveddsqVsAnywV8i/TJLYdftslN4NMGk3P+fu4MU5mX8EooYyk6aHclbYHR3JINwLqeJeOim1Au1JVUE8zbP2O26ZMc/U4RHm01PMJZr1wB+7zacdyw== 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; bh=ayfM/rK4I6DMUJFvNA7BXmKOWKWis484A9XXZ+R8QJo=; b=UUzNBZcA50DoS0FLMp3koh7R+Bw99eVRhVh2eGKCxblvZ5FZnr/Urc3Tr4lNQ88zD8cu7r5maBX2+qHwmaWUDCAJfisem0r2rnNpUZ9qVEj2LzJf6WOi1CbnTQv9yA24/O8b/7n6GyRdCmHpEI2n6nVewImwqaiSTUg4QD/o/UvnWxC6IWuF2HLeMaSbecRPBpBKtZLWwfrzwhK72QyZm38z9DDrARxRTp469E4i/T/bIFh+4imub/UYPVq0Q2VRZL905TgVMo37kbiNMHQuqCvboMaAXRasHLsiJmrdbUg06/nodRK1C63rppCiHO7CPBEy6F6s1YIjISAOzW3ByA== 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=ayfM/rK4I6DMUJFvNA7BXmKOWKWis484A9XXZ+R8QJo=; b=s4CkukE8p85oqci3TJcaeyipFePgBGH4rjJhwAdaIvYjPMnJz3+lUmWAvupagB3VXZO0jJsZWOcd+gYSqscLt7j3bC7h8GtzpI34+XD7NgJ9a8rOayroP7sc/UdMhgTkzznAXsV9uuJ05J78OAAFOVpZWzREArBoQusw3t/giVAjFqurcmvfvnqjetwkXCaOVMYNkyoFEIx3MKohG8LWctz+iJK1VKwEy4HbrOrSH8yd3BX7pmrTGl9Tc1Y4SoTOOHVb7p+ZgTNBNh2pZalMDu5YBpY3PKDfYyP/JRPM+glG+A/iMJwmRR75jpdLyZpPJqUSw98AmHhGMtGaqOOk4w== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM5PR03MB3091.eurprd03.prod.outlook.com (2603:10a6:206:18::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4523.18; Tue, 21 Sep 2021 22:18:31 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::787b:2156:ca99:fe00%3]) with mapi id 15.20.4523.016; Tue, 21 Sep 2021 22:18:31 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Sep 2021 00:18:15 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [dQk7oBkqd/r6DD175TBfZwZMntXkwxx2] X-ClientProxiedBy: PR1PR01CA0021.eurprd01.prod.exchangelabs.com (2603:10a6:102::34) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20210921221816.3869354-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by PR1PR01CA0021.eurprd01.prod.exchangelabs.com (2603:10a6:102::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.13 via Frontend Transport; Tue, 21 Sep 2021 22:18:30 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: eb49d847-edcb-497b-54d9-08d97d4dbe81 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQU/uWeFwGApuO7Y5L0klSZg4VvcE1FyZcV45zP1hI/Pj2jdnL/D4yj1UrW9ihgORw8sE+TYKFtkAYun18auhBnOQd8P+mcU0PON4SS5rSXH1fGsVSRHIXHqjGrXlFgJCQygKXVxD7OoSeyKSxT+zOA2c/fJ9NbHp+cxnMRm6kX6Lhkinoeu4LYhszd0jA+dEpuKEiXkHIF73Oa8TbJRs6VfkBuWSCpN/nRel6tdry77mjy8IaYpat0e8II+SsKhZCU6NHtVAFbrBg+xY0/iIjxUkNgPS0RnLjYbtYRH9LAa1tKiNipUbNvZylK+GbBkeWz703KAWPnW7IVQ/EHLcRG8kGoUACFq6OKqIYI53IOgBK8pqXXPEV7MwcVCHM7m3GRuAe6W1SDQHlU1Qh5dIp7G1WII+h7TKsTGswX8Azuv4/zWPpF8sRsgVbgaw4XAjtGVnSK++KAOArKA3YzWHl/fveUmxS//kYzS7C3Smik4OLBFa3qEc2znaQjD9flmpW11NqAYjY1V8ObCmydQSf+wEc1XQQQH5Vy9Qn9Pj5miQ5z61uByRGn6dLTW4S0H9SCOeumNOXZV5hIaGoVhbp6onRS5/x3t32TjljMRA3EWLy99VsA4c1x8iAPMMZEhmQ/Qr7Dss5ARoR1M9Mdd49WSIYVC6of+H95ASLLAYzRrZMa1jkVpIXm0Q0ermxgp9hTXArkwySgFhadHw4cZkCXqMell5HfjgaW7y+uOp3l1Bo9Cj3U7TmeNAOJmlLHCMI= X-MS-TrafficTypeDiagnostic: AM5PR03MB3091: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: N+1Qq6RLJ/rXdkbyiWvhRKSCyZRr4/sKvu6mQ0VRVGHVRWIjHaM8em2KcE8F2cCxlAx0ffzBcvasWbA7s5bOiiWA19vd2KCGsVD1Y2LFjzlhqXTb9DBJnX+VYigCaUjILyZ7Wqk+4aFNW4oY3DcqMBA+o+BCZtg8XEyFRBfowiUwUe8gA5g9wXDh4sH3F2K4j8SlGbJVdlOqhfIp4VSNSPmKqM2KtO1AXnSfuiVSAbFCUzJUNSc+9Etc+0pwTeSS4UdKOV3ABOXnFHeUqzRkMd0s120kaZKAzdX/A43H3wyqNcimVxRx51t5FrzCEU5LoSd5UukIq70qu+IiBYzvmszrJwr7TQS+3B8sYdzFUKpRA1ljR1y90uCgxx2sPd7if94EiNQjdj8aasYWKL/5taFN1iV9B9sOzFyOQYA8KZsZMnG8uJAsKlPndK4Ti/1l X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: u3balm0VWRCU0TjtIzykW7EphwQlyQM1FIsgFnkS/lWGqmhWjz7ngdCqaFGrcUvIHb+A5bcajSs7JZFmptoj4oyir6DL4ms6yiFNNkLbCvTFAmr3kkFfzXW1s+aj0dm0HUCw1ltiVKAXgPvcBywIug== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: eb49d847-edcb-497b-54d9-08d97d4dbe81 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Sep 2021 22:18:31.3618 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR03MB3091 Subject: [FFmpeg-devel] [PATCH 4/5] avcodec/encode: Set AV_PKT_FLAG_KEY based upon AV_CODEC_PROP_INTRA_ONLY 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: CyPj4XnuGLae Currently, the AV_PKT_FLAG_KEY is automatically set for audio encoders; yet this is wrong, as both MLP and TrueHD have non-keyframes. So set it based upon AV_CODEC_PROP_INTRA_ONLY (from the corresponding AVCodecDescriptor) instead. This also sets it for some video codecs, which is intended. Signed-off-by: Andreas Rheinhardt --- I was surprised that this did not necessitate FATE changes. Btw: AVCodecContext.codec_descriptor is always set by avcodec_open2(), yet marked as unused for encoding in its doxy. Shall I make document the current behaviour? libavcodec/encode.c | 7 +++---- libavcodec/internal.h | 7 +++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/libavcodec/encode.c b/libavcodec/encode.c index 98dfbfdff3..dd25cf999b 100644 --- a/libavcodec/encode.c +++ b/libavcodec/encode.c @@ -235,12 +235,9 @@ static int encode_simple_internal(AVCodecContext *avctx, AVPacket *avpkt) } } if (avctx->codec->type == AVMEDIA_TYPE_AUDIO) { - /* NOTE: if we add any audio encoders which output non-keyframe packets, - * this needs to be moved to the encoders, but for now we can do it - * here to simplify things */ - avpkt->flags |= AV_PKT_FLAG_KEY; avpkt->dts = avpkt->pts; } + avpkt->flags |= avci->intra_only_flag; } if (avci->draining && !got_packet) @@ -553,6 +550,8 @@ int ff_encode_preinit(AVCodecContext *avctx) } avctx->sw_pix_fmt = frames_ctx->sw_format; } + if (avctx->codec_descriptor->props & AV_CODEC_PROP_INTRA_ONLY) + avctx->internal->intra_only_flag = AV_PKT_FLAG_KEY; return 0; } diff --git a/libavcodec/internal.h b/libavcodec/internal.h index dc60e4bf08..8df622968c 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -155,6 +155,13 @@ typedef struct AVCodecInternal { uint8_t *byte_buffer; unsigned int byte_buffer_size; + /** + * This is set to AV_PKT_FLAG_KEY for encoders that encode intra-only + * formats (i.e. whose codec descriptor has AV_CODEC_PROP_INTRA_ONLY set). + * This is used to set said flag generically for said encoders. + */ + int intra_only_flag; + void *frame_thread_encoder; EncodeSimpleContext es;