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 8939740769 for ; Sun, 30 Jan 2022 06:32:47 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4152C68B2C4; Sun, 30 Jan 2022 08:29:06 +0200 (EET) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2055.outbound.protection.outlook.com [40.92.90.55]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3AB1468B2C1 for ; Sun, 30 Jan 2022 08:29:04 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=PDZMOSu0G5GNyPB3r0d18HgZeUgtt0YgmL7I9Q2GraiR3/Ve+YAKY1K4TYoB+FOKL7O7GJ3rcQ55kFqkfPPi/OOqdpPYLAmqvqRZUsV/sn+0k8ySN/0dndNSVj68DyWDhLMIs75YwTDg9mMdlmH37YvROjiElKRACKE/gksDumPS62gkJj2LSPwKAZk/mJHZtA2X20KF3LsIVtdLPr5mUDLTc9NE0Ah98w2/CHWvCcjWGy0JhNAXAl813rxYUtJ26fOOJDHFlltqQt7Rydx7PC9xIIDm6XJis3d+rgx9LTAzgoD3veBH8opUkXyELTyvsIymdRJJlVWkdXeTfdE7Tw== 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=PH00C6vfx+i/296T6qffhqrkzi/FpxrKxNfm1FUTmTk=; b=ipupynjI21imb/luKQVYvpqVv5Y2lYsedVgQvg/adopQvWLNmYXWuimpwdQvqc0EsiLIZzsjvZSdvvunTdpgWGSuhK6w35uxaSADlTVMKevA4vC1UOPdVztIWZz2HF2nquYFFcyYcPTdho3KAtL8EHhP9di2jUTq1YRNaIfgoCvdInERw2Ufwlw9u1MDO6uKoh+820CHlnLa+1r4oa3Qw4gzb6drlHz/HPiMkI24uxAWK0HHpHBf1qdbYEN+luWEb8cbN/M3cPxo7RqwYTQAxo2CeK5DpxT9Wk/onm2DkJeQWcIsPaBQg0y8E+ZTMRH1vVRW3qDn/mlL0Eep/B3Xjw== 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=PH00C6vfx+i/296T6qffhqrkzi/FpxrKxNfm1FUTmTk=; b=mKGWBoJP6gsB5lzhM1ogOK4D5KIsLpYh43qBZvMhp+uVHQJZRdRQBCM/jPGMTmfPzdnXinZAQb1b/iUBA8pjHC1s5C7hR6/n6AvZTMy2m6vk0147lp5Pu8b2E9ssqMO/U12rYTCr2QujzRkGTZfCp/z4kny9YEVLJlKN5euBF15tznGoUbNlEOk5LJECNar4wgCmR70LgZH9Rm0Bl0WFx18z633s0hvjS26yO5RubuK21u6u4vVArclLdbG1Z3NJ7FIJn88AqqMvkmZxOD3lI82HyyTO7k5rhlcDOMo3T2vJ1gQeQkrhtH+Ugu7s0IRt66gEpAXdC3e8evSfyOxeag== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by PAXPR03MB7666.eurprd03.prod.outlook.com (2603:10a6:102:202::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.20; Sun, 30 Jan 2022 06:29:04 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22%6]) with mapi id 15.20.4930.021; Sun, 30 Jan 2022 06:29:04 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 30 Jan 2022 07:27:37 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [hcy+ukf+TZfd5y3wVgxWojjp8b59a5/H] X-ClientProxiedBy: AM6PR10CA0044.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:209:80::21) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220130062749.936489-28-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a1438aa7-4b26-45c3-966f-08d9e3b9cf87 X-MS-TrafficTypeDiagnostic: PAXPR03MB7666:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5r7jeU5s+bXFsfQ+D7SH4icNezy8gIdZgF6k37ovrfqQ+KYpukhD0LKMVOUMB7eEccRyEph5du8bMx7qAuxqk4WRl4y/NyKFhzfHpjNp9rn48ATedRG7HE/iohaiYemct+4a+3i27eMNp8aZ4vFkv+WCAd8oo3DV4J97MBky/hHT91feukO2LxcdRc8GFMHzEf2CqcToUqZcz4RHfmOVOX2mQeeD0LlLTkxicgG3DzDO8r+LQfy+Dj80ZNro3VkgAiTlo/4togX2jMyAB+hg54b1JrWoUvdUpD7pEaOlm8GPj0GOT2TVDu40xI+eXsUe269ia+2EjeXKvXp20Y0uKVOC2KXiumOt0Ge5PDdsEcLuLTi030Pl/PdmFa5r1J5NRIVUWMhY3ceozXTFbSYJRPCVpm4/9uYtYlMm5gcq3GUcc7MGxXVyu5XmKnQM+dUAAaMaJjrEFsQ8zspzHtYXSIoEPeukEVhWejrbEozFsuAclGnPOSydMuIBBX+dx0B1TuMGZWCDRuVur6Vda16bQpNM7Yl2GTKTFoa1MmgD7LE= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?QY02TmMAEGaea3WskCX9RHHTZ5mb0RUf3wczeSUHKSuHkQTDEIZEPDop23+g?= =?us-ascii?Q?ZUcs3zCkZW7wDorVTZ2e9BitXk+M7+AXfnnq+MmlqFkTqcO9Zf3tT4JKZ/K+?= =?us-ascii?Q?3v7653IPp89ANzt0WKojRC/zu4zqUdun4VycjtaRmzWSivW9MsiIoyAhZLv6?= =?us-ascii?Q?TGxf0YeiWdzy+o3NT8c9RFbKkISx/S0WGdDcvO4556vDadN52bHsLF+vvcKV?= =?us-ascii?Q?DGCNyN1EyNVyBcOBDdXD5WyybEs3roEKHZZAexuvTTI8JR8K2Mp8BQSGDjQY?= =?us-ascii?Q?yFV/tiUcSYqSQvr2gUXcSCPxoL+BxYLfOKFbLKoZVVeYEJJfjJJInrJc7kd9?= =?us-ascii?Q?KnsTn2BsyDjL2cdV0GpgeEzZhK/NTfTYHit5lG/rmuGO2bLJnISv2ee9jWNg?= =?us-ascii?Q?we2Led59rfGItmIia9aKul8Y6demQuQ97K4sazcWKpG0KxVLDfWHW2muTCGP?= =?us-ascii?Q?sEWAdru/MU4RCFKE6Bf+t3e9fmvnuSnm8+CN3pO3tx3c4RYxI2YEyPMUVENg?= =?us-ascii?Q?D66Xc6vH6ZmZos+kD9YJhqgzi3rru1gZzSCT3i+LGLizIKBOxKTyyAjTcQ1g?= =?us-ascii?Q?gkmCiau+WYPf1k9+K+YEQYlSVHwx+hXDtCBNzcVFH0mvQX6BeCyPhabP8nEt?= =?us-ascii?Q?4CtOzoGMjtITGDnHqwtPLd3RlC7qbdJRWJedLcrN2mbFLnBaiwBLzlz53MXI?= =?us-ascii?Q?I+dzxHmCuk0utQsvwnB4YXMtoRbOkEOIr8igYDX/p6ATV7FupQgxV/Rvfi05?= =?us-ascii?Q?h6sxBYiv2kvUrg9cVUzxriEU9/TinOH6Ab0r8VhWItrf8P6yw9X2Xv1ldxC8?= =?us-ascii?Q?wgn3EuDlzFBUlr35oDoF16p0+PxTVcNYEN3LihzcMZIkZnpP6RGdADtsQbZt?= =?us-ascii?Q?6F88o/2y8zvEgscITPLcSnR40evQiOzdyMOPJUw4915N1K4dUVWktJZi01mL?= =?us-ascii?Q?2KPCTog1lYvezFlPyXjEfw=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a1438aa7-4b26-45c3-966f-08d9e3b9cf87 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Jan 2022 06:29:04.0641 (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: PAXPR03MB7666 Subject: [FFmpeg-devel] [PATCH 29/41] avcodec/mpegvideo: Move header_bits to MPVMainEncContext 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: The header is always written by the main thread, so it is not surprising that header_bits can be moved to MPVMainEncContext as well. Signed-off-by: Andreas Rheinhardt --- libavcodec/mjpegenc.c | 14 ++++++++------ libavcodec/mpegvideo.h | 1 - libavcodec/mpegvideo_enc.c | 6 +++--- libavcodec/mpegvideoenc.h | 2 ++ libavcodec/ratecontrol.c | 2 +- 5 files changed, 14 insertions(+), 11 deletions(-) diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c index 23772c4c1f..a8efe72231 100644 --- a/libavcodec/mjpegenc.c +++ b/libavcodec/mjpegenc.c @@ -103,8 +103,9 @@ void ff_mjpeg_amv_encode_picture_header(MPVMainEncContext *main) * * @param s The MPVEncContext. */ -static void mjpeg_encode_picture_frame(MPVEncContext *s) +static void mjpeg_encode_picture_frame(MPVMainEncContext *main) { + MPVEncContext *const s = &main->common; int nbits, code, table_id; MJpegContext *m = s->mjpeg_ctx; uint8_t *huff_size[4] = { m->huff_size_dc_luminance, @@ -118,7 +119,7 @@ static void mjpeg_encode_picture_frame(MPVEncContext *s) size_t total_bits = 0; size_t bytes_needed; - s->header_bits = get_bits_diff(s); + main->header_bits = get_bits_diff(s); // Estimate the total size first for (int i = 0; i < m->huff_ncode; i++) { table_id = m->huff_buffer[i].table_id; @@ -224,6 +225,9 @@ int ff_mjpeg_encode_stuffing(MPVEncContext *s) #if CONFIG_MJPEG_ENCODER if (m->huffman == HUFFMAN_TABLE_OPTIMAL) { + /* HUFFMAN_TABLE_OPTIMAL is incompatible with slice threading, + * therefore the following cast is allowed. */ + MPVMainEncContext *const main = (MPVMainEncContext*)s; mjpeg_build_optimal_huffman(m); @@ -236,10 +240,8 @@ int ff_mjpeg_encode_stuffing(MPVEncContext *s) s->intra_chroma_ac_vlc_length = s->intra_chroma_ac_vlc_last_length = m->uni_chroma_ac_vlc_len; - /* HUFFMAN_TABLE_OPTIMAL is incompatible with slice threading, - * therefore the following cast is allowed. */ - mjpeg_encode_picture_header((MPVMainEncContext*)s); - mjpeg_encode_picture_frame(s); + mjpeg_encode_picture_header(main); + mjpeg_encode_picture_frame(main); } #endif diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 8b5916f68d..ed1416fca6 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -299,7 +299,6 @@ typedef struct MPVContext { /* statistics, used for 2-pass encoding */ int mv_bits; - int header_bits; int i_tex_bits; int p_tex_bits; int i_count; diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index 36e14efea2..22f4cd2d0e 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -1737,7 +1737,7 @@ vbv_retry: frame_end(m); if ((CONFIG_MJPEG_ENCODER || CONFIG_AMV_ENCODER) && s->out_format == FMT_MJPEG) - ff_mjpeg_encode_picture_trailer(&s->pb, s->header_bits); + ff_mjpeg_encode_picture_trailer(&s->pb, m->header_bits); if (avctx->rc_buffer_size) { RateControlContext *rcc = &m->rc_context; @@ -1794,7 +1794,7 @@ vbv_retry: s->pict_type); if (avctx->flags & AV_CODEC_FLAG_PASS1) - assert(put_bits_count(&s->pb) == s->header_bits + s->mv_bits + + assert(put_bits_count(&s->pb) == m->header_bits + s->mv_bits + s->misc_bits + s->i_tex_bits + s->p_tex_bits); flush_put_bits(&s->pb); @@ -3754,7 +3754,7 @@ static int encode_picture(MPVMainEncContext *m, int picture_number) av_assert0(0); } bits= put_bits_count(&s->pb); - s->header_bits= bits - s->last_bits; + m->header_bits = bits - s->last_bits; for(i=1; ithread_context[i], s); diff --git a/libavcodec/mpegvideoenc.h b/libavcodec/mpegvideoenc.h index 8e6c45c0b6..55c265edbe 100644 --- a/libavcodec/mpegvideoenc.h +++ b/libavcodec/mpegvideoenc.h @@ -60,6 +60,8 @@ typedef struct MPVMainEncContext { int last_non_b_pict_type; ///< used for MPEG-4 gmc B-frames & ratecontrol int last_lambda_for[5]; ///< last lambda for a specific pict type + int header_bits; + /* bit rate control */ int64_t total_bits; int frame_bits; ///< bits used for the current frame diff --git a/libavcodec/ratecontrol.c b/libavcodec/ratecontrol.c index 03466a1a43..c41682b29c 100644 --- a/libavcodec/ratecontrol.c +++ b/libavcodec/ratecontrol.c @@ -54,7 +54,7 @@ void ff_write_pass1_stats(MPVMainEncContext *m) s->current_picture.mc_mb_var_sum, s->current_picture.mb_var_sum, s->i_count, s->skip_count, - s->header_bits); + m->header_bits); } static double get_fps(AVCodecContext *avctx) -- 2.32.0 _______________________________________________ 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".