From patchwork Thu Feb 3 01:06:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34080 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp2043013iov; Wed, 2 Feb 2022 17:06:53 -0800 (PST) X-Google-Smtp-Source: ABdhPJxiZEKg1xcy3aBah9n/n6eVqNqnf4tnvzYlc9X/9/U2MfkKU29T4JA72iOJEQ/nR/V2HgaM X-Received: by 2002:a17:907:2d1e:: with SMTP id gs30mr26974739ejc.14.1643850413652; Wed, 02 Feb 2022 17:06:53 -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 h5si12313147edf.98.2022.02.02.17.06.53; Wed, 02 Feb 2022 17:06:53 -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=MsenZxRt; 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 6D37A68B07F; Thu, 3 Feb 2022 03:06:50 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074042.outbound.protection.outlook.com [40.92.74.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 63D2A68AD9E for ; Thu, 3 Feb 2022 03:06:43 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=YOg/EyHESVh0V2VuBxH/E5bLrQVR7s/qbzfFeHgGqGE8yEqCNVY/43iNYH7hD8YbKU0MzHOei7cCzmT7zhOW6pO8LGD29GTHAUWc+tu5oSyhAt7rYw8Eztnl8Wsdu/al/ga8gRSmlbmJn3EIGoa4rxIDWB9oVOxwIUzRznvbUHIEXOtWzpWcXePjLzbQJh6j0Vdf4Z1nRjpzlrkYaYx8hH3yLyLxXIs1IkctFQbk0WXcoKd2XDHTFxiUOjHOKpnHgRMpWvvwYDwWcHNSNW3kMlj4D2jt3t7f2BAJ0rKvOT8zJTduy7xChVlKFgd6obo3pZ7S6GD2io9Z8lhykRHRkQ== 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=XnULPCROzCBXYtHtBr9MIF6SqTrr8QUED5Sh5TOuFlg=; b=C0RxtXfeLWZJnTo8A7JOh4lK03eNtgBtTPrCfYhUALwtJgY+HX0H4z4Ax23UJrQ3r8tEVo0wNcLFsEk+sULdffcTGZabSUWPzqCiWna+QXTbyDKms2VEEbZH1iCSmH1PKT966enNcuglwjLgI/9YXchgFMSXkVl4cFlxtNRTO+Gs7nR+F4BnSIRySpYcfOPjxY0ekG2FWV2egk+YDx1YJY/7X3PdDKJoYW9w4z+Kj03mbkWGPqCH/aAFHfLmpJHWv+SQ7NjJVxq45/7BiRUSYcc94Jd3nqrm0k9IolgYyNZTSiVxi8qh7m4VscqHHIqVWxBRLqi579AOhYm7qTKWZg== 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=XnULPCROzCBXYtHtBr9MIF6SqTrr8QUED5Sh5TOuFlg=; b=MsenZxRtZZGsiIVNUpPHtbV7cp+7s2npR/jSi7hDNf/8VNVNI907XW6AhBHXbPjoNxNIQI3GSXEoxCTKhwVahKoZQWnsVY1qPzEXd76XjmYU2NpF4KdnfSW65E1QiVAYC6cYS0kDqVYDNEvgkLL5Mu4dIZ92/hf08B7/SsvUFCH5qkImZnAUe3f2u2qWSami9CYSFepOQD0erhvPrjsNbSdLBd1xtJjxPGS0J5i7CTMsQ1nC+fWgKzQ0HO9mYxvzLlg6W5eycufZrq+cZYJ3YEUKN6diy+wyerVqULvEyC+g5XMfphQ7vQvUf+5ozks6o0xb37Qb6iFQAOyaNxsjVQ== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM0PR0302MB3203.eurprd03.prod.outlook.com (2603:10a6:208:11::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.22; Thu, 3 Feb 2022 01:06:41 +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.4951.011; Thu, 3 Feb 2022 01:06:41 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 3 Feb 2022 02:06:25 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [yDSUoFoldf9p53xaLtxGGlMggfrjfd2Q] X-ClientProxiedBy: AS8PR04CA0125.eurprd04.prod.outlook.com (2603:10a6:20b:127::10) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220203010631.1929837-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9e3f1ac5-5de9-4a21-cdee-08d9e6b1703c X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiTIIJz7w/iaHvlKLnqIyVAxL6lUd79U9nsMyJ4smsIlziYILN7BFyicy1K+6gQ0rJut3y0WRxX81u5F2EzOkG5O6Wvkt8LIVjfB3uN8cMRK3pJtb3bjxClJYuiLUGF28FfJQH5ModI/vRjSNx34pfKoWYkltCmFdwDwxOJqwqTim4ysgiZZJwe+wLBu4K+spUP9NvnrfnloE5fz7PfIBdRPS6cW2rC6fMuukKpfo5vIKcBNk8xfX1oGQkeZy0YERC93nkS/IUQ1+hjC3qqukBeCWS21fFklVFZ+Mp5doU8trTRvOvHQOsrS3OIhahLRs5AdcPEUr4UPAyroadJlyiwb2opd/xO8qSKpOiGWuwf/mQ1IRmvUjF/aWwFoA2aF0dEk1asJvHkOdJg3sUwvvjzjcceYc73CE0QN11weCXYt1Y/zk80jZpcp2jSngvirEsxmGHaaidmP4i4M33PXvCTXIPW/qRVGnVdcmjkrj5t9I6xvA6C9D0SMGYZ7Eooz5WKsiF8XGyciHZt0CkUs12bcebtbyD+EDVA8eWsz7fttyyo9jxC/nCZdfnUEgiz+5qwVdOzfnMziKIs5Ssdei+exvXKyb/2poWplB0d2mpgBVIFY40+SUplU4H5boRPKxS/69ahSTwx/YY9/wytnWKpewdJXaGBjClUvOK2OnzlMaAlce+91A2YR4c6UE7jXJP8cvvD/m5woDrLb0O79SHHrrsze3xgIAKMQbsZloknQkLIzDjV+FEzuTE9Q5UuZmlM= X-MS-TrafficTypeDiagnostic: AM0PR0302MB3203:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3b/c8ip0lj5X5QZTiTFTCN251YrqyCKPaPdJUemPiNOGYBM5eDJs2G9V+UyN/Xrd1bYXp7DpPSL1FDnfmbtWV2Hvl/s8mANGenC6k4v4++x/F3fH59heSWhhr6S5a6NsI0Hd5APesrZ0ixh4Kd0ebHLdRkt2ugtmLLr8Qm+mPTuPzdZgRUBEU3d7UOxV3+nI1hsqwqemanQ8U8eizRK570L9ElD3BvhooNtvgSJVEt16f7PNWye43It3Z1M0lmvNk6z8iIbplHUFA7Xy1P+UZtuBeSp+WanjaCK6Jj/UrD2TiMwvAdeIluZug/dva5Yzq28dNsSCNJEmAbo/Z+TWxMj6Ag4DcKhXz2Dlsq1h5O6ZP3Q/EFmIBOQUNr7YiKw8JPpAxpamH0Y1lWi5jXTw2Em8rlJX0szZ4HNDFHQTdNfa/qQd62Ae6TGLqqa6IzO3/5S8XY585LuKF0A97iOvO4omgVx9rGV/X+6GGGtRxibVZ74K28lzlnoWiqAjx/kA3PeFMiv8/ccI/T3eK2laEMIZmOBkEQZiDW13xXeqfgECLcDZbzm09cn5UmEKHysJdHY2MsLBI2mPGsS/32qulg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: JqIER7GyefWMMj53YcQzdkUl6g8SV1E4gsL9iO8RkVq9kp3q1JuQzweomjlVPHVoweBre04iwo6C6W0eetplRruyX1lGqSh7DfDg356E+TKPqcur9zF8trTaEw55EkeNXdeN+fXSoXpWAybBciFB859wuNERMxdFMmzU68C5THePWVhqD1r7/gZV+LEnbgjd82p+PrGK3F8snSJe16cNccegdJsT2Pjp+GFdKoxWo/+TGDop9GiAK8OMKWi0fCMm/zXXtDy5hEH8epfE5AndZIgv2CByw5pni4dDtUP71q58wBHwbmae/pH6DCKruAbTLu5+c716dquftnV8yPuFIUJ22aO3O1u8/Wyi4+raug/xF+7AOQFnrwzz7z4a41itOQWtUVrYzY/HQXb5+YkewWeFqfL51Pf9odKb46FBM+2Fw1AiuwflrWF67LGoWiFiJv1RTzB1EsQL6tF33Eamu7LT3rbChJQnwIo0cYPbjHjISE3Osxp3mWUnK4PI2lS41WNiLPwXVdZ+tkq/PFVN5TrZ3dukeJqECaFR//iq2/VUKGrhrcagSpKpGE6qmDagCbk76woTsaokZzlHRw0YoF6jbcXereT1WKPnPUSUq1kKBheetsDe1343718I3tclyPZgLNZUF1M3Q99MVRteWerk22Kg61JtmMf9r2sPaPsWGeljxanIpdu2W39fECk48qVvgPiVBoRe789aBKYdfIQIAExbCCVF+HQdZKz9GshQnF8N8PlnX/MxUarTMikYcQwivOtNd+UQZLWpDSnKpgToPmlNWsoIXR2KiEZp3PFljJiFxFbDfRfiKqp+aTmFx4ZT9SjVMiMggbcL/2+FiKfXPMmsHiD4Cp4Lyirki9RhuoEkc5cEo3R2XgibRsoC7upYEiBE5YsgIUjQEv3eBCoChIivhPu/iOWD848M1Lc9ADz0p/85u2Gy1zfeM7FqpB1IVR7BmeYZCKjwey4shw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9e3f1ac5-5de9-4a21-cdee-08d9e6b1703c X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2022 01:06:41.9237 (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: AM0PR0302MB3203 Subject: [FFmpeg-devel] [PATCH 74/80] avcodec/mpegvideo: Move decode_mb to H263DecContext 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: 3CKA9xFC3EjJ Only used by h263dec-based decoders; and only set by them in their main threads. Signed-off-by: Andreas Rheinhardt --- libavcodec/h263dec.c | 7 +++++-- libavcodec/h263dec.h | 2 ++ libavcodec/mpeg4videodec.c | 8 ++++---- libavcodec/mpegvideo.h | 1 - libavcodec/msmpeg4dec.c | 6 +++--- 5 files changed, 14 insertions(+), 10 deletions(-) diff --git a/libavcodec/h263dec.c b/libavcodec/h263dec.c index 4327aec54d..91e95b910e 100644 --- a/libavcodec/h263dec.c +++ b/libavcodec/h263dec.c @@ -86,7 +86,7 @@ av_cold int ff_h263_decode_init(AVCodecContext *avctx) ff_mpv_decode_init(m, avctx); s->quant_precision = 5; - s->decode_mb = ff_h263_decode_mb; + h->decode_mb = ff_h263_decode_mb; s->low_delay = 1; /* select sub codec */ @@ -201,6 +201,9 @@ static int get_consumed_bytes(H263DecContext *h, int buf_size) static int decode_slice(MPVMainDecContext *m) { MPVDecContext *const s = &m->s; + /* The following is only allowed because no h263dec based decoder + * uses slice threading. */ + H263DecContext *const h = (H263DecContext*)s; const int part_mask = s->partitioned_frame ? (ER_AC_END | ER_AC_ERROR) : 0x7F; const int mb_size = 16 >> s->avctx->lowres; @@ -274,7 +277,7 @@ static int decode_slice(MPVMainDecContext *m) get_bits_count(&s->gb), show_bits(&s->gb, 24)); ff_tlog(NULL, "Decoding MB at %dx%d\n", s->mb_x, s->mb_y); - ret = s->decode_mb(s, s->block); + ret = h->decode_mb(s, s->block); if (s->pict_type != AV_PICTURE_TYPE_B) ff_h263_update_motion_val(s); diff --git a/libavcodec/h263dec.h b/libavcodec/h263dec.h index b007372f64..13e097358f 100644 --- a/libavcodec/h263dec.h +++ b/libavcodec/h263dec.h @@ -42,6 +42,8 @@ extern const enum AVPixelFormat ff_h263_hwaccel_pixfmt_list_420[]; typedef struct H263DecContext { MPVMainDecContext m; + + int (*decode_mb)(MPVDecContext *s, int16_t block[12][64]); // used to avoid a switch } H263DecContext; int ff_h263_decode_motion(MPVDecContext *s, int pred, int f_code); diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index 854ccd5ade..7e3b672312 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -2946,9 +2946,9 @@ static int decode_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb, s->partitioned_frame = s->data_partitioning && s->pict_type != AV_PICTURE_TYPE_B; if (s->partitioned_frame) - s->decode_mb = mpeg4_decode_partitioned_mb; + h->decode_mb = mpeg4_decode_partitioned_mb; else - s->decode_mb = mpeg4_decode_mb; + h->decode_mb = mpeg4_decode_mb; time_incr = 0; while (get_bits1(gb) != 0) @@ -3242,7 +3242,7 @@ static int decode_studio_vop_header(Mpeg4DecContext *ctx, GetBitContext *gb) s->partitioned_frame = 0; s->interlaced_dct = 0; - s->decode_mb = mpeg4_decode_studio_mb; + h->decode_mb = mpeg4_decode_studio_mb; decode_smpte_tc(ctx, gb); @@ -3653,7 +3653,7 @@ static av_cold int decode_init(AVCodecContext *avctx) s->h263_pred = 1; s->low_delay = 0; /* default, might be overridden in the vol header during header parsing */ - s->decode_mb = mpeg4_decode_mb; + h->decode_mb = mpeg4_decode_mb; ctx->time_increment_bits = 4; /* default value for broken headers */ avctx->chroma_sample_location = AVCHROMA_LOC_LEFT; diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index 2d5ee61a27..d0e4e8e9ff 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -424,7 +424,6 @@ typedef struct MPVContext { int16_t (*block)[64]; ///< points to one of the following blocks int16_t (*blocks)[12][64]; // for HQ mode we need to keep the best block - int (*decode_mb)(struct MPVContext *s, int16_t block[12][64]); // used by some codecs to avoid a switch() #define SLICE_OK 0 #define SLICE_ERROR -1 diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c index b1f4df7aa9..c0d5d60cc6 100644 --- a/libavcodec/msmpeg4dec.c +++ b/libavcodec/msmpeg4dec.c @@ -382,15 +382,15 @@ av_cold int ff_msmpeg4_decode_init(AVCodecContext *avctx) switch(s->msmpeg4_version){ case 1: case 2: - s->decode_mb= msmpeg4v12_decode_mb; + h->decode_mb = msmpeg4v12_decode_mb; break; case 3: case 4: - s->decode_mb= msmpeg4v34_decode_mb; + h->decode_mb = msmpeg4v34_decode_mb; break; case 5: if (CONFIG_WMV2_DECODER) - s->decode_mb= ff_wmv2_decode_mb; + h->decode_mb = ff_wmv2_decode_mb; case 6: //FIXME + TODO VC1 decode mb break;