From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 1E2F943E9B for ; Thu, 15 Sep 2022 19:29:04 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0BB1068BBD9; Thu, 15 Sep 2022 22:28:43 +0300 (EEST) Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-oln040092069055.outbound.protection.outlook.com [40.92.69.55]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9FA6168BBD1 for ; Thu, 15 Sep 2022 22:28:39 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HuBKGxcRAIslY9F33ygLOw2tr0cvTxyFmrtTErMIhJgoMrOqHtNvcYDe1DYxBv99qaQfWgSE6YpZz6hIjTFj+A9mayvsxnI9VTTRFZ5vYiNqQtkBAXWzsu3jD32Vaf+LAOdiYIf9NQCfSL1F6mHT9AQtKKuNPdKFClOjxuHG91agOz3u1+8d1PKdNxtQy2p94y5FnFsVxfvqEz/BVklxb6HZ+Z9QKsE6SDb8UCJq8DCi0DCTKuLxpOyNoM2oXC0RMdJ/ChUIqcC49LQVfpkHUgORWtgDy/KJ0s5Ktw10ZIoQNS60dwBRUFnfZhd0qWdRmD92ekh9UrkUls7ko9qiBw== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qdReKu6k28+UsPwN8HLOYbqv+9VsTeBV/BCYBogl5XE=; b=mnP0T8d565OO9EDtgl0Ce91xBIsZkL0DcPwZxEGFjGL8OstTW/2opOM95tgKGjmD01JHFp6X2rmJX7El63s205n//8Elwzv5dUj2KgFAr7+OcnOTzPCxHveNTq6+c7XKdBFQ9d35rYzc2pDW6oJWvFUK8CDFh69KE5le45VaBkQd2u3PUCMw/6AGQljy19C7n5ysA5N/uBm/K5rUpI4ifl6rdRh/aLnCcvNVyL1ddPfbDEKTw0WCqYnaFuAqoJARv838yU4Y/T8jeE6XKZqlrdk7QlHiPIKqW+SPlq0G4MR4T6uVYAJz9IZ1SNz4XyznN3dMtv59aY669al5+11yCg== 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=qdReKu6k28+UsPwN8HLOYbqv+9VsTeBV/BCYBogl5XE=; b=Y6XIFmxmNRnTwjcVTDpg4WIvpzrUaC+t730g77NllNSaFzkt0497hpXZ7QSQ/REFpVLOwfzW7fve3ZOJNor1wTHBAVhDaE1J9rjXfCNlDt8+GZcJ88MqZeteE6YM8MD44mptC8b2Catm03EyaczxBhYe68kkDVPUFSabDQGIhoIIjbC64zH+IBi1Ot9ALokbSR2muHfm5dTeTI96Ugd2QG8lMukJSDNeWMA0DpmdC23V4oUFXyryan8Zu0oiCGqXy7bj7XPk+tX/R/Anhecb4nXTuDiD/Lj2NgZVwwHcSRA9Znvyc6b/B2qvuGvniCD5WTwahPohqkcsidORhqUX8g== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0014.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:2b7::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5632.15; Thu, 15 Sep 2022 19:28:32 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::51a4:ed23:ea45:dfeb]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::51a4:ed23:ea45:dfeb%8]) with mapi id 15.20.5612.022; Thu, 15 Sep 2022 19:28:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 15 Sep 2022 21:28:07 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220915192809.2761301-1-andreas.rheinhardt@outlook.com> References: <20220915192809.2761301-1-andreas.rheinhardt@outlook.com> X-TMN: [yRWbFlCRFVJpHogPp5V0KhyCJ/jZNOwNd8b1P4ldJoU=] X-ClientProxiedBy: ZR0P278CA0117.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:20::14) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20220915192809.2761301-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0014:EE_ X-MS-Office365-Filtering-Correlation-Id: e64f0e42-cef0-48ee-8535-08da97507a0d X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmpAR802nmGrLwq0M+pXiNjeEt98m2XYOCjBWcZhQBO5u4iSgacs25ELH3EBkUiAxBYuYZ12RJq4obGubmxBB8LrlUfORbmajwtgdzm2aRAB1aQ9LoAgbeKamrocwkfbYN403pcojvoWkAqPMJLzWt4k+AQVFWrWW0fA4krz4vtybzLXNhpkgMs0vDedvwrp9oyKpki8V8Rv170mpJH6rE8S9CtwasJjEle33T3stttgsxi3YNEbR6a491IQCk8ALpyL/4EKA5pG8SW76XrBIOqvnuQjKHgRG+BolMO/OiR/ZNPIOHkLlfAdtFPf5tOxCvulu50Ny+uxOrFpnhHc4Oo/i3VeWBzFPKt+KUvyytg0Qrliae5FR9FS8aR/Jr72ptDkhVctwlPsOKMX1OP0BVP9jdrzxorO9V8EiHkq4eGO63HzwFf6EqzccHNb2bXvhBjOCxGQX7J6cH2GpkvKXNZM+OvrnyXFHsZ0lTgqNpMq4BE0WlH/3KhyEXDYLT9lLJps7UEqWKTS+IBc874nLE48YUgvw/P65okV30YuEs8Fi3mPMX/GpVoy6cLfH/1tlpB5983v1QXVlbbSLQuj+t1pLznYpfG4wjWZSrptiTrIcbX7hyFFVnEfxIKEQEFnrBVaX9nwX777bNtrHpf9LWd1+Z5EAp3SxhvysEH36whyJn+WL3MXW1VvkcVmuvDUceCzHcU6ihy0HdZzqneBYLqdh0qz//bHQa0P5rIvWBqN+7bFb7LTNO1m57a5IrQVWXI= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: TLUSsVoWyZmIKaR4axNZNmoL5IzL1N25BO9HMXJrBZ1Im1IY1Ma5FIlY6RDDfURJdac7JpAGy1GIsTgmcxnQ39yOJ7B2H9zFQNYwJA8RDjBeu8d96Mv9IeXRlixWgKaGeCuRNxTAKNXjNeLSTmCSMsBA3/2+86p3I9Vf6a2hY9f0HVYn55VKTW3JTC6lsWksEonvOnb+TrcG6afkWqOli1detr/pPgKjZep9iqlBqktKQUExPwnrsxvk740W2Mm6+crB3wUEFo5d/Y1EK9wpM4GAq7PwguZulHuln5fhCItN47l3zcQB/unGBvnZyEBwhtBjTaSt9Y8LZFnezXLlGHN7F63uctqCUqyh7k26XKZDIt1dJETfGHyLGI/zFyW/GHqrL5J7eHlKGPHuL+hAngTBwXDWEzLlbgA02KlNLXVe4+nv/hMuxiz/ihc/WbC1xcOkIulsGJtxLEgSU/CckUBP7ISmUzNDXQ0VVLiHbtZkLlsfvt1qhe8E9QABP+cJOr9BWJ6A/3z/D+V5KuBp4n+pI3Dk++RzfHS7RyoCEpGdRJT18MFThRKGekoM3AZxK/NKuY8fZA1bjhAfd80+hvBu41vLFkZ0xrM/oL6vBaVOTlpNi8OST7pgOFem7rZdLqns5hquIMixjjPV4ZiwZg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EW6/4Xjy/nkxFY+xPK+Bcdq5dVgpqLXAa4vs+aWORpEu7PngPyFGUnIo6Wdz?= =?us-ascii?Q?ocDme+U4a9lc8GQPvKzAGw816mxoV+Sbzp9VVhCoY/AGFklsIZr8JaL8O6GZ?= =?us-ascii?Q?MlrMlI4ufq6k6An5/BMH++jgso5VRc5/OlxwoCazgWQXSm5llRzOebfwL5EC?= =?us-ascii?Q?9UkgS2yqMkyfw4gpWYR//FGC94xophHuk44zaF0t7SF8OMXlkfs0vai7WLlG?= =?us-ascii?Q?lTM6cdK8cvyy+Rv5E6X1Fggc2SUHgiXYHRQpYdKKflGsZURsIt552tAXmp2w?= =?us-ascii?Q?YFg/z8qXXkFVuSs4KFsldL4EOhZt2WFtCJEwkNqcK+hcjkoik1G8dwhn2FdL?= =?us-ascii?Q?BPyouYGOGmjvrBU9j+QjNtAG2XyzwHbd6jx6Rs+uBsGwWVVOBhsZknN4xqOQ?= =?us-ascii?Q?65Szo/9qlvIfqOoQH/ToOXR6NoPnx0lYijgBvNya/AywX1JgmlKee9JVcauT?= =?us-ascii?Q?xhAUzXgGp+xlMmmgnjIH/pbeCIMc4nQgRYjeV9qB2IdFwCq4FnEzyuNIv/pJ?= =?us-ascii?Q?nBMIJtZ91eTvPGAd89wUj0BEOgPTcUZMI4oUoCK+zp17SThY+tIIkole6nYZ?= =?us-ascii?Q?enjJnD6qt5HEzbwuuHbHt244HDM5Q189U5KxZOXHu4WrtnmAazrbYaRIOrZH?= =?us-ascii?Q?ud+GuulM6/i9eUkbB3uYD7SvfImwmpBowdU7MHCj3TIKtsFnK8wmyUUOyMN7?= =?us-ascii?Q?kTLCgSF9BrwMJTHj+5R6qFMbNuch40IW8npQp49ZDKhCGD0XSU3PDeAjIF6V?= =?us-ascii?Q?7kZmakqUU2eK8rLF35CtYj0jgujkd+Gtw4BxZEbYfQMWOlykLMJqz+Zx2j1j?= =?us-ascii?Q?S1eFKDtdZzFp+U+ds5XXwHBN3lIUxBRcjw3CQLAoELJQBdrGm7m/YI1tq2/D?= =?us-ascii?Q?OdlsZGO52iP33Ji1/aPheUZWf4IZI6BnH4Jqc3ePVS8wtutG6FZnryZ8yXi1?= =?us-ascii?Q?U+y3bTpR3+lbQqUtkrKX5AGTzG2IdgeYxDT7cARtDBAoGjkPC85OXyL6lfv1?= =?us-ascii?Q?yI+fVr4oW1PIZ+ji8sUqq6k8yeTNAEBkyzDoPklfgAFuVcYmysXaw8aZHIH7?= =?us-ascii?Q?eujMM5MTbl9gOLV+7MRV2NCP9R27zXP69SUn9AgDGt+11tNP+J93G2qR75pA?= =?us-ascii?Q?z5yXaT0YmSWw06mp5ysBKaTFWQHFot4HwT2bjPs5kwTcFBArhod0VSYpBGdu?= =?us-ascii?Q?NpMTQsjEGpMkWQr0cejTjE4H75K9IXwojL6lEodW6VUXjmS2PiAKscoAF8u9?= =?us-ascii?Q?EJanhF0QDX0iCHNQjlpH8aWt+kZ6iPlYNSOmc9aTygS4U40xtuVUh1N8PJmy?= =?us-ascii?Q?5Ak=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: e64f0e42-cef0-48ee-8535-08da97507a0d X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 15 Sep 2022 19:28:32.8949 (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: DU2P250MB0014 Subject: [FFmpeg-devel] [PATCH 7/9] avcodec/encode: Redo checks for small last audio frame 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: In particular, check that there is only one small last frame in case the encoder has the AV_CODEC_CAP_SMALL_LAST_FRAME set. Signed-off-by: Andreas Rheinhardt --- libavcodec/encode.c | 21 +++++++++------------ libavcodec/internal.h | 4 ++-- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/libavcodec/encode.c b/libavcodec/encode.c index ade4d458e7..9bd9f9bc08 100644 --- a/libavcodec/encode.c +++ b/libavcodec/encode.c @@ -157,6 +157,7 @@ static int pad_last_frame(AVCodecContext *s, AVFrame *frame, const AVFrame *src) fail: av_frame_unref(frame); + s->internal->last_audio_frame = 0; return ret; } @@ -392,28 +393,24 @@ static int encode_send_frame_internal(AVCodecContext *avctx, const AVFrame *src) avctx->audio_service_type = *(enum AVAudioServiceType*)sd->data; /* check for valid frame size */ - if (avctx->codec->capabilities & AV_CODEC_CAP_SMALL_LAST_FRAME) { - if (src->nb_samples > avctx->frame_size) { - av_log(avctx, AV_LOG_ERROR, "more samples than frame size\n"); - return AVERROR(EINVAL); - } - } else if (!(avctx->codec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE)) { + if (!(avctx->codec->capabilities & AV_CODEC_CAP_VARIABLE_FRAME_SIZE)) { /* if we already got an undersized frame, that must have been the last */ if (avctx->internal->last_audio_frame) { av_log(avctx, AV_LOG_ERROR, "frame_size (%d) was not respected for a non-last frame\n", avctx->frame_size); return AVERROR(EINVAL); } - + if (src->nb_samples > avctx->frame_size) { + av_log(avctx, AV_LOG_ERROR, "nb_samples (%d) > frame_size (%d)\n", src->nb_samples, avctx->frame_size); + return AVERROR(EINVAL); + } if (src->nb_samples < avctx->frame_size) { + avctx->internal->last_audio_frame = 1; + if (!(avctx->codec->capabilities & AV_CODEC_CAP_SMALL_LAST_FRAME)) { ret = pad_last_frame(avctx, dst, src); if (ret < 0) return ret; - - avctx->internal->last_audio_frame = 1; goto finish; - } else if (src->nb_samples > avctx->frame_size) { - av_log(avctx, AV_LOG_ERROR, "nb_samples (%d) != frame_size (%d)\n", src->nb_samples, avctx->frame_size); - return AVERROR(EINVAL); + } } } } diff --git a/libavcodec/internal.h b/libavcodec/internal.h index 35e3dd303a..45aec38a60 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -57,8 +57,8 @@ typedef struct AVCodecInternal { int is_copy; /** - * An audio frame with less than required samples has been submitted and - * padded with silence. Reject all subsequent frames. + * An audio frame with less than required samples has been submitted (and + * potentially padded with silence). Reject all subsequent frames. */ int last_audio_frame; -- 2.34.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".