From patchwork Tue Feb 1 13:06:17 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33994 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp603975iov; Tue, 1 Feb 2022 05:11:35 -0800 (PST) X-Google-Smtp-Source: ABdhPJzEm+vGqg7AHtCfKYZunkr8veJZXTHAu9iFemQ4frGqpIjx1tVd4nHNur0nie2swOvgXcFh X-Received: by 2002:a17:907:3e1d:: with SMTP id hp29mr20678198ejc.701.1643721095026; Tue, 01 Feb 2022 05:11:35 -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 s10si10531739edd.190.2022.02.01.05.11.33; Tue, 01 Feb 2022 05:11:35 -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=CXenC5ta; 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 D52EE68B339; Tue, 1 Feb 2022 15:07:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2081.outbound.protection.outlook.com [40.92.89.81]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D9D6768B2BA for ; Tue, 1 Feb 2022 15:07:45 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fkCQwCKhgBpKetoYR64789otO8VOX0Py6sD9woOgPf3zpP/6d2NfWdPT6H0cGMKsvXPsA31GPNQ9PuDPZyQfRyBDUPsYgLdccf9+FfEH4qJCt7EU4GLlL40sYs0/KKSthGrChGKXKkafCndSbK82TTP0MpdBGXojyOLjvVLn31xN1/O08kFUdwIsgYzyJA7FH0uLS5NR6U4SmDy0xDSaZ0zUf+IBFjrZlhhesz43qVoROhalhARdagNKz+5xn9d61ooTodvOlCKxvPtgL8oqbe0C2sYGwFLTF3xzbpPveI6WTJUplZFSHYV9JKyWZQS9pXyZmJ/3gkKq+fT6VR+WzQ== 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=AHtoiIrGl378GWT2D7Iyy+hhAqqNIKxMqkb3Q3JeLrE=; b=DfmkxPmSD2TF3z1Ha3clqUyTlflpirb3OosSNreNPIsLC0wzi24+JmWQ2GHP/PTPb06brfVsCJhC3wyY/MooVxqRmLQalTUrqS42QV6MgvHPFSS7kRkkRyZkuYNw6hIMn0f/WFDkP+p7jhG4OcVFiVX4IW8Lr/a8m4244Ri/hn0Kz4oruB/jBcJEKF9Z1DDdC8L8KZkuFZZRp6BSX2SCVWZtAGfO3WTnNxyEOzFWKNyfZCNOLzzN+A0Flz7PX/W3k+RpwvSRkkQqxwp3pWKX+mUUMmdlRU5KIu2I/r4rNqFGsPFnSuEa+Q2DwDwM2PVNMrIcx8waKcUJTkcrvBDTPQ== 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=AHtoiIrGl378GWT2D7Iyy+hhAqqNIKxMqkb3Q3JeLrE=; b=CXenC5taEeGU5EJb78VESXxBhY4SOEqcT/YQfsLyOfQvj+c70uKMJGm7omstGb9xFS34yzyt5+LoMtpZ/t+FgISthKX0UeZMeEbe/uXuw1DQ3+x4n4QUWks/G5464lsJ+8oLpnqfTboOL0u0AnsnOq5qm8YdQEWW3R9vN+O/oc/JpfzB3QTDpvdGkEpItReQgqrlAHfycK9UUNFokbBuu7PaxIZfWbxuGjhrm8kTJlX3TkRpej0k1OzgzR2ZDAqz7KG9iK4AjuaqhT6TLEVSn7heEiVKxcHkZ/kNjyLxcS+VYCRyvNNVsoNHbejcmpPg+qBzdC9C+PfUW6BsA8UhzQ== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM0PR03MB5700.eurprd03.prod.outlook.com (2603:10a6:208:16f::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.22; Tue, 1 Feb 2022 13:07:44 +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; Tue, 1 Feb 2022 13:07:44 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 1 Feb 2022 14:06:17 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: References: X-TMN: [mpxcNooQjoOsY26qbAaMPuvwZqewwbEX] X-ClientProxiedBy: AM6P195CA0092.EURP195.PROD.OUTLOOK.COM (2603:10a6:209:86::33) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220201130706.1420875-19-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b61f37ab-3768-4db0-5df4-08d9e583d5f7 X-MS-TrafficTypeDiagnostic: AM0PR03MB5700:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3OXlCQYB+BwmHTe/WiiLdj9jnKv6g+F5StvpmlONqN/0l+i9wDVJtOVxU8akZlPLrHLFmga34jOuVBAMt0qUrwjZtsUZswRh2bhN/CwVTUQJNLUU8ily1PHlpM4zhOcYbqYMKKx3LbCTaHd6H4BUx1lDJSGsLUl6GGMt0XSs6Dn3oFNycIfCjc8B0xTtPIGKDCGf14wD+qtopWOtqmDH0G/DR82B5z+mQw5uGNqBNdOV88dvUCFIlRWKO24gjDXBXi2nB1BDxcrkh7TMBU0v3PHFutPRmQIPNhJNpRfo3QE5m0Y90U8F/mOktootaxFAorof+1iTUWdaNphB88ScOh49XetV7uL7hhThiqhz/pFuBICOq/oAntV5IRjw8l0XKIJB8ur1uD+w0NwdnNgHijznkPPwq7mW8Q5fH4RisFxTL4Bqijq2Ci7X/zFaTkRYHYq0Ga4BugRNS/DZ/0EohHqLVngC9z1dMdmXiqhcE7sbHSzBPn8hGFzElC/5Pjh7hc1ofbqoFyhHaDmLtbJByzdtRJA/fQQpyPO0EZqMQvjAaaOzzIlmvWSXoCo1WPsw X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8l2trRjCzTFA3jdAf2+51IyHhWxkGOTEaGeAhbpB/XDfxdIXPjZLFRPjKHmZ6AhYPV8k8oinIN/LlZIDKaQqiCPI39UKKTKI30Yo8exQMoT4xldP57/C8ub+DWX0/Wad/Mneoxpz9lBTtpAxKyn+u8zT0gCZiUpdWjXVF9oeh+lIAN+Clmq0Cj8BccdTigM5/x2MXDN2PXogmqxxDwKcZETmUpxz2tZbTod88vpGNfwjc2WEQn/INfkUnzL8jL9jUI8Eti9r9b34VBGpD44FXVdkg5D0ks0nxvLzG21vaTOVDTX5O4CVfYkdnkWV4TjxbxMi8a37X9TjS8S+nAbZkr1rgGL+xom1Xcb3SHmhe8fNDs2gNSk0PCl+VclLhgcul1/19vtp4bcTiXSg4IQGX0r0FW69zWqSqXq03OdppqyaNvS4CM0+RPZDr43ZCHldleRsyQPW8sMcqr/XlPAOOGdmzKaVcRcjPIY5H1hMHe0m4UBj+4+vtWtke9Pv7I1YmkUFBS7rB1IXVIS3RPJSdi0YiWw6hh5dPix2VnVHr64F4XWHtVDQjvfiE1I+5YeeRKR53CamXth3j7TwxPvrcDeZnDkWUfUK6TDuK7eyqd8VHQp+KFqtY795zfRy/dzSgtSJRPKTm+1Gb7xCxUoddPr5yHpMEYvgNaApMg3qXJIiahIa2GwUVHkti5uHTcWoGLF1XcC8EWNN8dGas8N90ZBK43qLjt9qGmIMKqn3OpplTIQa3V+qPHy/YjI7+1bZHm6753A3JNFGFqg5USyesrKm8KoPj8q1KQqTlJyPZl6Cjz97AqmA99CjzOu4rNYt5Qo5qaE/X3sWdBoraaPI1G+yK/nLrAtheLqzhUjB7WDDvOxbLdXT0VwTYze5CHluv+V7ZoHubIxdgZlnwQCnCFheaDOoPJv4qauU8h1v3UC4VV5AP1e3Y2TdzL86Pixhr/EOg1sjADeaB9UNA9/UsA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b61f37ab-3768-4db0-5df4-08d9e583d5f7 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Feb 2022 13:07:44.3964 (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: AM0PR03MB5700 Subject: [FFmpeg-devel] [PATCH v2 20/69] avcodec/mpeg12.h: Move decoder-only stuff to a new header 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: fWSPBtHyfyV8 Signed-off-by: Andreas Rheinhardt --- libavcodec/eatqi.c | 2 +- libavcodec/mdec.c | 3 ++- libavcodec/mpeg12.c | 7 ++--- libavcodec/mpeg12.h | 31 ---------------------- libavcodec/mpeg12dec.c | 3 +-- libavcodec/mpeg12dec.h | 60 ++++++++++++++++++++++++++++++++++++++++++ libavcodec/speedhq.c | 4 ++- 7 files changed, 69 insertions(+), 41 deletions(-) create mode 100644 libavcodec/mpeg12dec.h diff --git a/libavcodec/eatqi.c b/libavcodec/eatqi.c index 8f502b3c56..51eff20b65 100644 --- a/libavcodec/eatqi.c +++ b/libavcodec/eatqi.c @@ -36,8 +36,8 @@ #include "eaidct.h" #include "idctdsp.h" #include "internal.h" -#include "mpeg12.h" #include "mpeg12data.h" +#include "mpeg12dec.h" typedef struct TqiContext { AVCodecContext *avctx; diff --git a/libavcodec/mdec.c b/libavcodec/mdec.c index 007e7fada8..759967e28f 100644 --- a/libavcodec/mdec.c +++ b/libavcodec/mdec.c @@ -33,8 +33,9 @@ #include "blockdsp.h" #include "bswapdsp.h" #include "idctdsp.h" -#include "mpeg12.h" +#include "internal.h" #include "mpeg12data.h" +#include "mpeg12dec.h" #include "thread.h" typedef struct MDECContext { diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 58e03c05d4..ecb0706cf5 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -29,18 +29,15 @@ #include "libavutil/attributes.h" #include "libavutil/avassert.h" -#include "libavutil/timecode.h" #include "libavutil/thread.h" #include "internal.h" #include "avcodec.h" #include "mpegvideo.h" -#include "error_resilience.h" #include "mpeg12.h" #include "mpeg12data.h" +#include "mpeg12dec.h" #include "mpegvideodata.h" -#include "bytestream.h" -#include "thread.h" static const uint8_t table_mb_ptype[7][2] = { { 3, 5 }, // 0x01 MB_INTRA @@ -238,7 +235,7 @@ int ff_mpeg1_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size, int ff_mpeg1_decode_block_intra(GetBitContext *gb, const uint16_t *quant_matrix, - uint8_t *const scantable, int last_dc[3], + const uint8_t *scantable, int last_dc[3], int16_t *block, int index, int qscale) { int dc, diff, i = 0, component; diff --git a/libavcodec/mpeg12.h b/libavcodec/mpeg12.h index fb2b37e7c8..a405db6c2d 100644 --- a/libavcodec/mpeg12.h +++ b/libavcodec/mpeg12.h @@ -22,7 +22,6 @@ #ifndef AVCODEC_MPEG12_H #define AVCODEC_MPEG12_H -#include "mpeg12vlc.h" #include "mpegvideo.h" /* Start codes. */ @@ -37,38 +36,8 @@ void ff_mpeg12_common_init(MpegEncContext *s); -#define INIT_2D_VLC_RL(rl, static_size, flags)\ -{\ - static RL_VLC_ELEM rl_vlc_table[static_size];\ - rl.rl_vlc[0] = rl_vlc_table;\ - ff_init_2d_vlc_rl(&rl, static_size, flags);\ -} - -void ff_init_2d_vlc_rl(RLTable *rl, unsigned static_size, int flags); void ff_mpeg1_init_uni_ac_vlc(const RLTable *rl, uint8_t *uni_ac_vlc_len); -static inline int decode_dc(GetBitContext *gb, int component) -{ - int code, diff; - - if (component == 0) { - code = get_vlc2(gb, ff_dc_lum_vlc.table, DC_VLC_BITS, 2); - } else { - code = get_vlc2(gb, ff_dc_chroma_vlc.table, DC_VLC_BITS, 2); - } - if (code == 0) { - diff = 0; - } else { - diff = get_xbits(gb, code); - } - return diff; -} - -int ff_mpeg1_decode_block_intra(GetBitContext *gb, - const uint16_t *quant_matrix, - uint8_t *const scantable, int last_dc[3], - int16_t *block, int index, int qscale); - void ff_mpeg1_clean_buffers(MpegEncContext *s); #if FF_API_FLAG_TRUNCATED int ff_mpeg1_find_frame_end(ParseContext *pc, const uint8_t *buf, int buf_size, AVCodecParserContext *s); diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 4a7bd6d466..d55a4d2feb 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -34,10 +34,8 @@ #include "libavutil/mem_internal.h" #include "libavutil/stereo3d.h" #include "libavutil/timecode.h" -#include "libavutil/video_enc_params.h" #include "avcodec.h" -#include "bytestream.h" #include "error_resilience.h" #include "hwconfig.h" #include "idctdsp.h" @@ -45,6 +43,7 @@ #include "mpeg_er.h" #include "mpeg12.h" #include "mpeg12data.h" +#include "mpeg12dec.h" #include "mpegutils.h" #include "mpegvideo.h" #include "mpegvideodata.h" diff --git a/libavcodec/mpeg12dec.h b/libavcodec/mpeg12dec.h new file mode 100644 index 0000000000..b4e94a92ce --- /dev/null +++ b/libavcodec/mpeg12dec.h @@ -0,0 +1,60 @@ +/* + * MPEG-1/2 decoder header + * Copyright (c) 2007 Aurelien Jacobs + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef AVCODEC_MPEG12DEC_H +#define AVCODEC_MPEG12DEC_H + +#include "get_bits.h" +#include "mpeg12vlc.h" +#include "rl.h" + +#define INIT_2D_VLC_RL(rl, static_size, flags)\ +{\ + static RL_VLC_ELEM rl_vlc_table[static_size];\ + rl.rl_vlc[0] = rl_vlc_table;\ + ff_init_2d_vlc_rl(&rl, static_size, flags);\ +} + +void ff_init_2d_vlc_rl(RLTable *rl, unsigned static_size, int flags); + +static inline int decode_dc(GetBitContext *gb, int component) +{ + int code, diff; + + if (component == 0) { + code = get_vlc2(gb, ff_dc_lum_vlc.table, DC_VLC_BITS, 2); + } else { + code = get_vlc2(gb, ff_dc_chroma_vlc.table, DC_VLC_BITS, 2); + } + if (code == 0) { + diff = 0; + } else { + diff = get_xbits(gb, code); + } + return diff; +} + +int ff_mpeg1_decode_block_intra(GetBitContext *gb, + const uint16_t *quant_matrix, + const uint8_t *scantable, int last_dc[3], + int16_t *block, int index, int qscale); + +#endif /* AVCODEC_MPEG12DEC_H */ diff --git a/libavcodec/speedhq.c b/libavcodec/speedhq.c index 743dacc6ce..fd4ea0d75e 100644 --- a/libavcodec/speedhq.c +++ b/libavcodec/speedhq.c @@ -31,11 +31,13 @@ #include "libavutil/mem_internal.h" #include "avcodec.h" +#include "blockdsp.h" #include "get_bits.h" +#include "idctdsp.h" #include "internal.h" #include "libavutil/thread.h" #include "mathops.h" -#include "mpeg12.h" +#include "mpeg12dec.h" #include "mpeg12data.h" #include "mpeg12vlc.h"