From patchwork Thu Dec 23 09:13:28 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 32857 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:cd86:0:0:0:0:0 with SMTP id d128csp7105756iog; Thu, 23 Dec 2021 01:14:34 -0800 (PST) X-Google-Smtp-Source: ABdhPJzzTJ7PDEpg0dUp7Y+qZv9Q5LKFSg3jXtcBr2/RH+0Dd3Pko5Sm+ijXQBOnwfB5z7snfbhR X-Received: by 2002:a17:907:1c8b:: with SMTP id nb11mr1221561ejc.72.1640250874138; Thu, 23 Dec 2021 01:14:34 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id gq22si1858162ejb.716.2021.12.23.01.14.33; Thu, 23 Dec 2021 01:14:34 -0800 (PST) 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=nwsCP0Vy; 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 328BC68B169; Thu, 23 Dec 2021 11:14:09 +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-vi1eur05olkn2083.outbound.protection.outlook.com [40.92.90.83]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EBE6668B14E for ; Thu, 23 Dec 2021 11:14:01 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SuXRcwMPidgWk+davAK3nadJA8s9Zg8uRuHWSxgZeKbvdY4dNkPIEliyGmwrQgucTtoHd0ga87jw15lfYvivaEIFHCqev4dwJmLeS70oa/vI3heSsEZbF2qCgg8GqZ3qcG/5OnWhyvNRbLECwin4RCk3WdF/3L+LVypEU0223zeeqjrSdu7xyp50mrHiF+ZWh27VNWmha6J6J+YeAndlJHCI5Ns3j4r5uc4a6Dg7331E8MkqN1yqhAhBxy8KRvjRkIVVVxxVfie1Cms1OzgEUWDFJ+bpjC5Mv6WM2pvEsnX8QliwBOBNHb36E/ooAC5tdLayfJh1K75hA4ImpsM28A== 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=r3/eBi7BI8h4cSRJAH9Te4DGRpHuFvni0G54dezby8M=; b=BqL+cb0N/rQu1/CyAXTofpIk009i1cbxAOVn8d8F6GqPACx/zmLnwhxq6YEN+5DqPibgvpS10dsoo22GU37c6NYuGio4LJxldh4kGKrD3zEISIEDfd880m7KnOjuJB8rU8URRvUHvnbcZ1DB+CXzvTVfbr0FXFqYU9XoLLLMB3lMpra3jtLQSnb3mQj8DtKmVgRgeC1FkPNij321dZ7KdNs62wxt7bwAdRw43+hVbONW12obp3jgmH/qLUsFXhZ5e21ewNG0pipa06VW+j/DwhOrvJbNsx69IN/8lqnk/fZn1ftPnAiXl25g9EBxRAJM3OMxn24+8szbxC9OkGRx7Q== 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=r3/eBi7BI8h4cSRJAH9Te4DGRpHuFvni0G54dezby8M=; b=nwsCP0VyNvxFeOsb+/S2+TmxHhMV53v4Q7H9pKNEU+ZO/Hzqp4lGAcGkV5bWZiNGzZY+6fWqjlVLG8sio492Cz+lVz1SP3NQ4EssBRuFhRIOdRRehVmhjngBaG7pVbHPuRQtnBDXIElLG+mwNuWmth0mG5zys5yRWlTDS5IFjh4ATS5B783uaP+tbM189CibfC4USSwQ1FSoJKcQHUJt3NHPjQMWHQntmib8qBcjYjkA6By6k9oruQtzI6Pr8UjAc1OLuEoJyj34gwYP5sax/hiqSrdqOGW3ex7Hvyls+9oNovkUVsfkO/f8BmrPjiomwpUnWPFSp3ZN2fp1NA+l+w== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB5607.eurprd03.prod.outlook.com (2603:10a6:20b:fe::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4823.18; Thu, 23 Dec 2021 09:14:00 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::f0dc:92f5:6bc2:45ca%5]) with mapi id 15.20.4823.019; Thu, 23 Dec 2021 09:14:00 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 23 Dec 2021 10:13:28 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [Brx5Pd5Tzlp7MVavD0acyzKrbREBYEPp] X-ClientProxiedBy: AM4P190CA0016.EURP190.PROD.OUTLOOK.COM (2603:10a6:200:56::26) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20211223091340.1450013-4-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0ce3ab20-e9c3-4cf9-013d-08d9c5f48e7e X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiR3EehW4kxQzdNcP2D/mG1JInq/w6FZ95iJcann6P0Wq5IW9WE3ERmdP/jsauj5mazkSyEjYDpRT+A28Z2Oz3oTigtp0EroVIU39zdbXYt2TPTeNTkGCmcFcwiMLXXWzBxDGJcvchQtTGViEr3CxAWdfnUo9cUIMDl6EJBNo94D2C3sPnyu4DxWxkuQPPaExhfSYY8ZKabkfVMSgQUiMkOEeJrxk0nz/9iLuQwqGeWFSOV2vjgRO7waSzVy2nHgBoefCbf1ZqxXT8nm3kw9sMuIu2pLJ6EYjYqRwLucnJ/xQTIjdce5rnkTok1IoPXi+GVh9RSnCniAokLHWO2kRGHbg4rqhf69bJ9xEaoZYSV88K8aGeavn/ghlCh1wA3A2nmqMVtNOQERcWuqvqX1SXFUhkFMts/8zvhPJb6GsRIs0pyc6wvywCaR9ROOhaJfVhsMKJ1r1u/1x9PCxEz+k+nqAZMZXLaPwPpJgcrFErVdW5NYRFyWm/aMBFIPqo0LqM0gzLt8oOoFjx8z0lMsoX4FTwmFnUfEFGxNMOM0PmRgcn0CXLKqrIQipwhD7kU8jn4OOB2qKFuXNv3jgsjGniOUwWgcgN/BshNt1soRXmbrWGs95xqOTnjFf/GWr4XLyUCl/3szqluLsG6PnRYeevaDXedWi5ft1oWb772VKL+vHL4/FMb6Vn613JJCLQ29r6K/AY0PZibevP3fi6VYIoJHsCdn4PqxkDE6lnicUS9SyvhaIu1iIaDXDf1GihsjBtY= X-MS-TrafficTypeDiagnostic: AM6PR03MB5607:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Bke1gyOy9uUzyaD6FQ5lrPABgdpg79n3GgByTCJksEBMVbJjB2hpqNbIV+a5aV5npyXQr+7Sc4D8WzkUaO/KaFU0gBj6RoqIt3ZBfqclhbCAvtODsWf1pcyc7JXNC4ao7J7kUYhoq9risR0JscBBjw8hK0C6vKVq78C5R7qknY0QCKZBEtgPEf/7loRIYCDLBJM9f3eRdBeaZoaW6kzhvL9NH/HW+cCxMDLNYTg4pizlYxQM9VHeXDKkhdJicPaJDdGEfDVmyn6YZmBGqyUbIoSiQmSh1EwWqeNsTY1Gjmv2WiHGoTJzqurg3LXNG+wt6H+VxQPODgk5q6jl2YVjmB8rW/FY/2MLSICcgRQjta6/4eMHvWqbHC8CFi0OsF+T0dI2NKstLtxfAOSfsoJ0rwLYwiEkx0mKB2ofct2+tChCVeLDEN+ond2vT5UHBC0tDvcoTVfYEynzeORtgitzyk7rnQF9xMMhgoj3/rJGOP0TMx6ZPJEcmevht9T7gzhHjLdSREOQxV8zuHX56Pev1l+o8apqGDLXvltl/g8gbfXumi1Az7IkRb/r3A06dN4GOaBne81UrtCxzvcTuZKS9w== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ebXVV7s9s6uTLyM8inr6bgIIOLcaEDDidZs/ASFL6xwZkW+UR40goVlB6KBn/6PwYvlQ1G5aN9UL64ZP8o/myQrq/VHzyO44VENTjVAInNH5FVRQw6/MgF7P/cPLzxaZTX7FRTy8OV2pnTgXMBFQIIjfxldmUu4Ye/i0X6PRZM71gccklPnGAkp9dwEhPQX4lN0q3gZLWicHruOnRmlNe0QI5abhmFErMlH5YVMw7hjTFY2LSQj9Ek0/I50WXzseJ9FjLnkir8hXIwVYWD05dKaCAfU+SYK8ikuCvvN4dVzNFgyYSiajuktiSL7Z+4rKTw3g8LUaaTGExNpS85bWVnP+/7aIC7Aldx885qTtbqt7+/Qu5uFvb+qxvmdp4qov7ZmlNprmUdon/7eozS2B+YwXK9wybwU0hcVpR414xNAxwWHwY24H3DRQHZ6E5hfuT4F1qX4PjvMK3nw6SmeLZxiRVxjIjhWu00ETatpyyP3BDpd5S5Oh+Kjnk0uQUc0EX0myl7Qqwn/kNAxppRqYj40sKWGboQun5yNyAYh2u10najP87WHYYKymvjkJCNXXljvvAvcI6j+SUYTWZPxG0UCLKPi3CegWlU7hEAAhLGF+HWPU9RnPmB2zq7/DLPmTsgoKVwWy0noj7MR0ut4t8TzMt0mUzq8Wd2kIRr8TKKbfeGiIuCwMtGIUZXX+fT13ADhulnKuOXo6wGdp82LeLOvdsUWaOpX5PQDwy5hj32t4FpUcKgZ2pYZXERMVAkmVzcAay8PTThnR4hLqXj5P3V4p/Ma9zmRqpBUBIlOddzzdMq+K4AvdBEDGmnZkXOHIiboJCsQunihl+ZpYVCLY1T+Tw3KxvzlZh2iylndN/RYxYGXF4efTD9jUBvPn0wMLB1VC1zBMxEwjM9L+m/x3BE7YI5zb0Laa1gjgl5I+SfDH9FE8WZqZXBNqIq/rKger86PpuYAUa5Zl7JO2/7C9Hw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0ce3ab20-e9c3-4cf9-013d-08d9c5f48e7e X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Dec 2021 09:14:00.5449 (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: AM6PR03MB5607 Subject: [FFmpeg-devel] [PATCH 18/30] avcodec/mpeg12enc: Add custom context, move mpeg2_frame_rate_ext to it 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: FTKYWKgvDm9M It is only used here. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12enc.c | 26 +++++++++++++++++--------- libavcodec/mpegvideo.h | 1 - 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index abb0a4b29f..97df5523cc 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -62,6 +62,11 @@ static uint8_t uni_mpeg2_ac_vlc_len[64 * 64 * 2]; static uint32_t mpeg1_lum_dc_uni[512]; static uint32_t mpeg1_chr_dc_uni[512]; +typedef struct MPEG12EncContext { + MpegEncContext mpeg; + AVRational frame_rate_ext; +} MPEG12EncContext; + #define A53_MAX_CC_COUNT 0x1f #endif /* CONFIG_MPEG1VIDEO_ENCODER || CONFIG_MPEG2VIDEO_ENCODER */ @@ -101,8 +106,9 @@ av_cold void ff_mpeg1_init_uni_ac_vlc(const RLTable *rl, uint8_t *uni_ac_vlc_len } #if CONFIG_MPEG1VIDEO_ENCODER || CONFIG_MPEG2VIDEO_ENCODER -static int find_frame_rate_index(MpegEncContext *s) +static int find_frame_rate_index(MPEG12EncContext *mpeg12) { + MpegEncContext *const s = &mpeg12->mpeg; int i; AVRational bestq = (AVRational) {0, 0}; AVRational ext; @@ -127,8 +133,8 @@ static int find_frame_rate_index(MpegEncContext *s) || ext.num==1 && ext.den==1 && av_nearer_q(target, bestq, q) == 0) { bestq = q; s->frame_rate_index = i; - s->mpeg2_frame_rate_ext.num = ext.num; - s->mpeg2_frame_rate_ext.den = ext.den; + mpeg12->frame_rate_ext.num = ext.num; + mpeg12->frame_rate_ext.den = ext.den; } } } @@ -142,8 +148,9 @@ static int find_frame_rate_index(MpegEncContext *s) static av_cold int encode_init(AVCodecContext *avctx) { + MPEG12EncContext *const mpeg12 = avctx->priv_data; + MpegEncContext *const s = &mpeg12->mpeg; int ret; - MpegEncContext *s = avctx->priv_data; int max_size = avctx->codec_id == AV_CODEC_ID_MPEG2VIDEO ? 16383 : 4095; if (avctx->width > max_size || avctx->height > max_size) { @@ -199,7 +206,7 @@ static av_cold int encode_init(AVCodecContext *avctx) if ((ret = ff_mpv_encode_init(avctx)) < 0) return ret; - if (find_frame_rate_index(s) < 0) { + if (find_frame_rate_index(mpeg12) < 0) { if (s->strict_std_compliance > FF_COMPLIANCE_EXPERIMENTAL) { av_log(avctx, AV_LOG_ERROR, "MPEG-1/2 does not support %d/%d fps\n", avctx->time_base.den, avctx->time_base.num); @@ -244,6 +251,7 @@ static void put_header(MpegEncContext *s, int header) /* put sequence header if needed */ static void mpeg1_encode_sequence_header(MpegEncContext *s) { + MPEG12EncContext *const mpeg12 = (MPEG12EncContext*)s; unsigned int vbv_buffer_size, fps, v; int i, constraint_parameter_flag; uint64_t time_code; @@ -339,8 +347,8 @@ static void mpeg1_encode_sequence_header(MpegEncContext *s) put_bits(&s->pb, 1, 1); // marker put_bits(&s->pb, 8, vbv_buffer_size >> 10); // vbv buffer ext put_bits(&s->pb, 1, s->low_delay); - put_bits(&s->pb, 2, s->mpeg2_frame_rate_ext.num-1); // frame_rate_ext_n - put_bits(&s->pb, 5, s->mpeg2_frame_rate_ext.den-1); // frame_rate_ext_d + put_bits(&s->pb, 2, mpeg12->frame_rate_ext.num-1); // frame_rate_ext_n + put_bits(&s->pb, 5, mpeg12->frame_rate_ext.den-1); // frame_rate_ext_d side_data = av_frame_get_side_data(s->current_picture_ptr->f, AV_FRAME_DATA_PANSCAN); if (side_data) { @@ -1204,7 +1212,7 @@ const AVCodec ff_mpeg1video_encoder = { .long_name = NULL_IF_CONFIG_SMALL("MPEG-1 video"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_MPEG1VIDEO, - .priv_data_size = sizeof(MpegEncContext), + .priv_data_size = sizeof(MPEG12EncContext), .init = encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, @@ -1221,7 +1229,7 @@ const AVCodec ff_mpeg2video_encoder = { .long_name = NULL_IF_CONFIG_SMALL("MPEG-2 video"), .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_MPEG2VIDEO, - .priv_data_size = sizeof(MpegEncContext), + .priv_data_size = sizeof(MPEG12EncContext), .init = encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end, diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 900b8b1403..2611e7c667 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -203,7 +203,6 @@ typedef struct MpegEncContext { int last_non_b_pict_type; ///< used for MPEG-4 gmc B-frames & ratecontrol int droppable; int frame_rate_index; - AVRational mpeg2_frame_rate_ext; int last_lambda_for[5]; ///< last lambda for a specific pict type int skipdct; ///< skip dct and code zero residual