From patchwork Tue Apr 6 21:55:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 26783 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 A5F8C44AF20 for ; Wed, 7 Apr 2021 00:55:57 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 895C768A78A; Wed, 7 Apr 2021 00:55:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068083.outbound.protection.outlook.com [40.92.68.83]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C8D2368A497 for ; Wed, 7 Apr 2021 00:55:49 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TvrGlLZnE2r9nuLAGTCBwgVPBOFnoqHPu0zIGZ6KYqQU84UdjKx8+AFC6ux2Qbf/WPBAAgdBGQekQ4VKu5kAJgb9MFyMVyVqFa8hEgy5jnTZZjmPxhCvbUxLIy6gC4poEvBXF2qNTflb8Dq95qK21vbDW/AKgTk0FCGibvzkYeNtzFbVD3FMRn1Bo5JCBbFyrXgOiW9kUoDIw2LqZaDhDR2Lb8JnjmkqlUt3LYWAmIXVU6qaG08rIGkMBx4lPSdduz3Ogm0e1r6PPMuR1pIuFlSLPzb44U8i7NvMKHdkmTMp+fyRIZ5XNq4iJE0omhtZ0HFHrwW/CJCrLc0YZb4jmQ== 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=2zi0DLiZTfthqo1CC28cTbN2ULV8Yky297uciHly4pc=; b=i0GnHWusysoKXw5lKryvViqE6YL3qr3IfF+xDFqy0gGHBNlhVGC80T/gkLzs76jDYPYKh2IM9VOhFYk4VOvxREw+vfR9gFbi0v+K6Rr6W8ii7Nezb8OrobWPYCQS6DtGFIaICrTcNW/EXoZbGq/2uWrbhO/RjkhlB897xdA4NNcH6dImykRiBOFoobTjbugK0jsRP9V+EDFOchgrWC1xbdU4AwPy6xsZH2VrIbER+Z2UoM/yCVS5tIOUwkME6Iy+tuMh4CdzLOCPIEUhoXI2ZIZej5n/a77uyOmVMhVwiV5yiOU7FHA1wHP95QqhW5S+PM2TW8yL8e1Zu28VrjkGTw== 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=2zi0DLiZTfthqo1CC28cTbN2ULV8Yky297uciHly4pc=; b=gWjOxeL2wu4Bu+3pWc4tpJZy7qpsCiJzRtDZ7yFL+fKYj36VZcxTcZ96cxc1nHPFdI4YPKmvOhXDDS8BK3C9NO6ejx1OizAcZOOilokXUqklm5N3frdzfsIbL+azqTXbY5HdLMJHaqmTs0bbu9WYMx+hVwkrsH/QdTUR82trrNzzSR4CnO4ufDgKGLIpcT7gVWC/bw/IkhWK0+e9rVa6P/bEcoX1CdPGTcbWuMIHCPB8btGqLb+kDtLkexUOUoSj/edGUDFoclbwqBNm2bxqI0HCmbG+W/2nbUafpLodWFb5IGDHQYHvW81Ft+TCUCmgNCRAl73UdszF/2wCMLvz7A== Received: from AM5EUR02FT037.eop-EUR02.prod.protection.outlook.com (2a01:111:e400:7e1c::4d) by AM5EUR02HT060.eop-EUR02.prod.protection.outlook.com (2a01:111:e400:7e1c::298) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28; Tue, 6 Apr 2021 21:55:48 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:7e1c::46) by AM5EUR02FT037.mail.protection.outlook.com (2a01:111:e400:7e1c::182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28 via Frontend Transport; Tue, 6 Apr 2021 21:55:48 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:0DE481178A8AEA67E4EDB2DB182D3023EBE066AB759439B8DE132A74A0F80132; UpperCasedChecksum:21B5040B4200653981CDD51713CEA739272706986D99A01171BF905EA9B0B067; SizeAsReceived:7605; Count:48 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::8128:5de5:4e94:9a21]) by HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::8128:5de5:4e94:9a21%3]) with mapi id 15.20.3999.032; Tue, 6 Apr 2021 21:55:48 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 6 Apr 2021 23:55:12 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 In-Reply-To: References: X-TMN: [LZKBnUuwGUvgYFUU5Ozn00dCQ0VwgLTm] X-ClientProxiedBy: ZR0P278CA0046.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1d::15) To HE1PR0301MB2154.eurprd03.prod.outlook.com (2603:10a6:3:2a::22) X-Microsoft-Original-Message-ID: <20210406215516.832944-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.137.96) by ZR0P278CA0046.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1d::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.16 via Frontend Transport; Tue, 6 Apr 2021 21:55:48 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 48 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: ac2bc4ea-ab80-4031-aea3-08d8f946bcc3 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRct5ooVDkA416xUUNF5iBFoB937Rv4FCrvhtrFP68FkdbyfpRNoHt/TFaKZquYFfOViLc5ylkiPED2ICIp3htG8om5i2WOsw7ClNvqukK0T1YxhVan80J3Vqf/CeEtDCMFFcPsov1RuledzaJmGTllm41zGmKXkqT5xK9XICQMWZogDgFWIa/gsA27UC9Ak0nPLdKIZKys2zkd9v1zukH6v+we5K+WyVc5pQGHYiVzEeH6HBQz9YdN3rS7jmki9xQRItuwcRCQeWvg5CzYhp4I52Pd1HQt8CdRo0CJiHx/LJyCHe6FftvAyP9BMN3SJZ21vFMtZVM11vz2mkRj7EB2zINbmwDej9L/PrFzdCBZBE7QT6WVMEUiA7nFbFsDfQrD1P4ll57OgcMT45rv7KKApXSwLOVJqgQkgSFD2hYddsC4erGmmTRNxbYuI5Ew66ITrFn3pyNsQx7OftZMBzFoq/xr+jYuuGveFUMsoB26PG+HRC/kwsy32CekGbpkX6+lZYVwTLIrXhqk3umdG27GfFysGxnv/Zvfyvvk/X10gc1AiPpZxzc/7dNUSHqq4ontiV1pNsVX3yIyJn/QIu1HGmeitzr1WhYVG69qjkSkqPrR0hV49UY+hvRt2mQUMZ2uftE6NLjKcSxH3PFh2yqB5UzpSvzZebY3A+y+B0Acd9VQ40FB7EWeEk5qydG+1Rvgq217uAIkpGf11daeNTYGBMdUlxNKqhz1yGTqfr5l54bGndhEL+btzFtcryNIP40= X-MS-TrafficTypeDiagnostic: AM5EUR02HT060: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KbIyuXdgxur3hRpGtNwtWpaNaOpXONl2h0rLbqsTORHhw//vMHI3mWc8vtMHk3OjvuSiTlrFa9vjLWNcF9QMO24/oDhnYbY/KonbxbOyGkvlTESzAuZHHTiekqT54AXXCWmSgJN1jwHZ1MKQceR5w5Tfkkv9EQqzgC/xdZwTG9J/YIvddJS/O5jUveXwrKz6Q8FqBQRWNV2km9oZRVd0lInk46q+6DgqTtFiMeQioZjapzJTPnbHoOtDQmbLH5ehQVKoIbrVcSB5x/fYIi5y7RWo8BDFe7m8M/w/hbubd2s97mk1BEEUyzwt7zBRcGktU974GCuRaR0NsZqOuKB6aquKyF1v/WRGxZUl3kXjpnFswOgJB6Mu5vdram5vVwMveHYeKVVXpBxrVOY7dkGjWA== X-MS-Exchange-AntiSpam-MessageData: B0Z0trX1OD+BGGDhzTlJxYphVkVspvXtKFio/Y/CYvbVmJmOSD+ZdAmfNZ5MVuGSzRbxbeEBi4K6bk4NQXFY3ulwQez9uJ2HBcisqxk3izh0IuE04i8xzG48jQHHI5Zu/ql/1pe7mRK91tHulm5ICA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ac2bc4ea-ab80-4031-aea3-08d8f946bcc3 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2021 21:55:48.4822 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: AM5EUR02FT037.eop-EUR02.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: AM5EUR02HT060 Subject: [FFmpeg-devel] [PATCH 15/19] avcodec/mpegvideo: Deprecate mpeg_quant option for codecs != MPEG-4 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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" mpeg_quant may only be set for MPEG-4 and MPEG-2, yet for the latter it is no option as the code acts as if it were always set. So deprecate the option for all codecs for which it makes no sense. Furthermore, given that the code already errors out if the option is set for a codec that doesn't support it we can restrict the range of the option for all these codecs without breaking something. This means that the checks for whether mpeg_quant is set for these codecs can be removed as soon as AVCodecContext.mpeg_quant is removed. Signed-off-by: Andreas Rheinhardt --- If one sets mpeg_quant to 1 for MPEG-2 and to -1 for MPEG-1 one can simplify some checks in mpegvideo_enc. Will send a patch for this later. libavcodec/mjpegenc.c | 3 +++ libavcodec/mpeg12enc.c | 7 +++++++ libavcodec/mpeg4videoenc.c | 2 ++ libavcodec/mpegvideo.h | 6 +++++- libavcodec/mpegvideo_enc.c | 12 ++++++++++-- libavcodec/version.h | 5 ++++- 6 files changed, 31 insertions(+), 4 deletions(-) diff --git a/libavcodec/mjpegenc.c b/libavcodec/mjpegenc.c index 3cff50abdb..6c261a1397 100644 --- a/libavcodec/mjpegenc.c +++ b/libavcodec/mjpegenc.c @@ -593,6 +593,9 @@ FF_MPV_COMMON_OPTS { "huffman", "Huffman table strategy", OFFSET(huffman), AV_OPT_TYPE_INT, { .i64 = HUFFMAN_TABLE_OPTIMAL }, 0, NB_HUFFMAN_TABLE_OPTION - 1, VE, "huffman" }, { "default", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = HUFFMAN_TABLE_DEFAULT }, INT_MIN, INT_MAX, VE, "huffman" }, { "optimal", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = HUFFMAN_TABLE_OPTIMAL }, INT_MIN, INT_MAX, VE, "huffman" }, +#if FF_API_MPEGVIDEO_OPTS +FF_MPV_DEPRECATED_MPEG_QUANT_OPT +#endif { NULL}, }; diff --git a/libavcodec/mpeg12enc.c b/libavcodec/mpeg12enc.c index 8dcc04d341..99c79a4232 100644 --- a/libavcodec/mpeg12enc.c +++ b/libavcodec/mpeg12enc.c @@ -1152,6 +1152,9 @@ av_cold void ff_mpeg1_encode_init(MpegEncContext *s) static const AVOption mpeg1_options[] = { COMMON_OPTS FF_MPV_COMMON_OPTS +#if FF_API_MPEGVIDEO_OPTS + FF_MPV_DEPRECATED_MPEG_QUANT_OPT +#endif { NULL }, }; @@ -1179,6 +1182,10 @@ static const AVOption mpeg2_options[] = { { LEVEL("low", 10) }, #undef LEVEL FF_MPV_COMMON_OPTS +#if FF_API_MPEGVIDEO_OPTS + { "mpeg_quant", "Deprecated, does nothing", OFFSET(mpeg_quant), + AV_OPT_TYPE_INT, {.i64 = 1 }, 0, 1, VE | AV_OPT_FLAG_DEPRECATED }, +#endif FF_MPEG2_PROFILE_OPTS { NULL }, }; diff --git a/libavcodec/mpeg4videoenc.c b/libavcodec/mpeg4videoenc.c index 2bf65305ad..e2792e1161 100644 --- a/libavcodec/mpeg4videoenc.c +++ b/libavcodec/mpeg4videoenc.c @@ -1375,6 +1375,8 @@ void ff_mpeg4_encode_video_packet_header(MpegEncContext *s) static const AVOption options[] = { { "data_partitioning", "Use data partitioning.", OFFSET(data_partitioning), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, { "alternate_scan", "Enable alternate scantable.", OFFSET(alternate_scan), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, + { "mpeg_quant", "Use MPEG quantizers instead of H.263", + OFFSET(mpeg_quant), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 1, VE }, FF_MPV_COMMON_OPTS FF_MPEG4_PROFILE_OPTS { NULL }, diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 5a99c19656..e83b4ab211 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -672,7 +672,6 @@ FF_MPV_OPT_CMP_FUNC, \ {"skip_cmp", "Frame skip compare function", FF_MPV_OFFSET(frame_skip_cmp), AV_OPT_TYPE_INT, {.i64 = FF_CMP_DCTMAX }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS, "cmp_func" }, \ {"sc_threshold", "Scene change threshold", FF_MPV_OFFSET(scenechange_threshold), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"noise_reduction", "Noise reduction", FF_MPV_OFFSET(noise_reduction), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ -{"mpeg_quant", "Use MPEG quantizers instead of H.263", FF_MPV_OFFSET(mpeg_quant), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 1, FF_MPV_OPT_FLAGS }, \ {"ps", "RTP payload size in bytes", FF_MPV_OFFSET(rtp_payload_size), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"mepc", "Motion estimation bitrate penalty compensation (1.0 = 256)", FF_MPV_OFFSET(me_penalty_compensation), AV_OPT_TYPE_INT, {.i64 = 256 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ {"mepre", "pre motion estimation", FF_MPV_OFFSET(me_pre), AV_OPT_TYPE_INT, {.i64 = 0 }, INT_MIN, INT_MAX, FF_MPV_OPT_FLAGS }, \ @@ -680,6 +679,11 @@ FF_MPV_OPT_CMP_FUNC, \ {"a53cc", "Use A53 Closed Captions (if available)", FF_MPV_OFFSET(a53_cc), AV_OPT_TYPE_BOOL, {.i64 = 1}, 0, 1, FF_MPV_OPT_FLAGS }, \ FF_MPV_RC_STRATEGY_OPTS +#if FF_API_MPEGVIDEO_OPTS +#define FF_MPV_DEPRECATED_MPEG_QUANT_OPT \ + { "mpeg_quant", "Deprecated, does nothing", FF_MPV_OFFSET(mpeg_quant), AV_OPT_TYPE_INT, {.i64 = 0 }, 0, 0, FF_MPV_OPT_FLAGS | AV_OPT_FLAG_DEPRECATED }, +#endif + extern const AVOption ff_mpv_generic_options[]; /** diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c index e5411f0393..19a7e57a29 100644 --- a/libavcodec/mpegvideo_enc.c +++ b/libavcodec/mpegvideo_enc.c @@ -86,6 +86,9 @@ static uint8_t default_fcode_tab[MAX_MV * 2 + 1]; const AVOption ff_mpv_generic_options[] = { FF_MPV_COMMON_OPTS +#if FF_API_MPEGVIDEO_OPTS + FF_MPV_DEPRECATED_MPEG_QUANT_OPT +#endif { NULL }, }; @@ -560,15 +563,14 @@ FF_ENABLE_DEPRECATION_WARNINGS if (avctx->mpeg_quant) s->mpeg_quant = 1; FF_ENABLE_DEPRECATION_WARNINGS -#endif - // FIXME mpeg2 uses that too if (s->mpeg_quant && ( s->codec_id != AV_CODEC_ID_MPEG4 && s->codec_id != AV_CODEC_ID_MPEG2VIDEO)) { av_log(avctx, AV_LOG_ERROR, "mpeg2 style quantization not supported by codec\n"); return AVERROR(EINVAL); } +#endif if ((s->mpv_flags & FF_MPV_FLAG_CBP_RD) && !avctx->trellis) { av_log(avctx, AV_LOG_ERROR, "CBP RD needs trellis quant\n"); @@ -4708,6 +4710,9 @@ static const AVOption h263_options[] = { { "obmc", "use overlapped block motion compensation.", OFFSET(obmc), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, { "mb_info", "emit macroblock info for RFC 2190 packetization, the parameter value is the maximum payload size", OFFSET(mb_info), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VE }, FF_MPV_COMMON_OPTS +#if FF_API_MPEGVIDEO_OPTS + FF_MPV_DEPRECATED_MPEG_QUANT_OPT +#endif { NULL }, }; @@ -4738,6 +4743,9 @@ static const AVOption h263p_options[] = { { "obmc", "use overlapped block motion compensation.", OFFSET(obmc), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE }, { "structured_slices", "Write slice start position at every GOB header instead of just GOB number.", OFFSET(h263_slice_structured), AV_OPT_TYPE_BOOL, { .i64 = 0 }, 0, 1, VE}, FF_MPV_COMMON_OPTS +#if FF_API_MPEGVIDEO_OPTS + FF_MPV_DEPRECATED_MPEG_QUANT_OPT +#endif { NULL }, }; static const AVClass h263p_class = { diff --git a/libavcodec/version.h b/libavcodec/version.h index 1444c19552..7cf51150b3 100644 --- a/libavcodec/version.h +++ b/libavcodec/version.h @@ -28,7 +28,7 @@ #include "libavutil/version.h" #define LIBAVCODEC_VERSION_MAJOR 58 -#define LIBAVCODEC_VERSION_MINOR 135 +#define LIBAVCODEC_VERSION_MINOR 136 #define LIBAVCODEC_VERSION_MICRO 100 #define LIBAVCODEC_VERSION_INT AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \ @@ -168,5 +168,8 @@ #ifndef FF_API_INIT_PACKET #define FF_API_INIT_PACKET (LIBAVCODEC_VERSION_MAJOR < 60) #endif +#ifndef FF_API_MPEGVIDEO_OPTS +#define FF_API_MPEGVIDEO_OPTS (LIBAVCODEC_VERSION_MAJOR < 60) +#endif #endif /* AVCODEC_VERSION_H */