From patchwork Tue Jan 25 17:41:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 33854 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2c4e:0:0:0:0 with SMTP id x14csp834445iov; Tue, 25 Jan 2022 09:45:25 -0800 (PST) X-Google-Smtp-Source: ABdhPJxfYPxSPYdn/TKmzQANXgdRiNx/3INng1JOC/UEE+k8HoKPaJ9l7e//ypoitb4xwjx7AqOl X-Received: by 2002:a17:907:868b:: with SMTP id qa11mr8553324ejc.585.1643132724833; Tue, 25 Jan 2022 09:45:24 -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 y20si3559563edd.608.2022.01.25.09.45.24; Tue, 25 Jan 2022 09:45:24 -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=VJSPkhRr; 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 A6C1168B1A6; Tue, 25 Jan 2022 19:42:36 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-oln040092072025.outbound.protection.outlook.com [40.92.72.25]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1373768B180 for ; Tue, 25 Jan 2022 19:42:33 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WBmkINA7Jb0VlgcZSQiAwosxqmHR/zBCAd1L5/d7l6CEMe5Oxp92xlKKjyiff/rOkbXxxCYZgX+Nl39I+XZqDkR0QOkk9+X01UzecDj7JgtYYb4jdbj5NbbivNOaABQQQ65KZMcN23qeZlmkrDV3fc/KY7bCIP7uRa0p0HOOIeg+NJdbv/V8NDcZkvf+kNcB1/2hVTRUVE+Mxq6ITA9pOvDhvG5r4WyEGv/WU6BD5e4zcJ49jKVGDCdsvvD4ouQrRoMcD0XSoBplD6nVvYJ1Si0UPBNhF7Auhyqo4zh/ixNQcs/6OmNOTsIGiM/rkGZQhtdowotkvTO6m+s84NW7WQ== 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=eEJOEQ809k/kGiKOk/O6+jCTtaZ1j6zbCsjpg5B99z4=; b=FhPaOv2+5La0zZNmnqxTXc3nuyUzciNNJROEB0lDeZYyj0PFYECovu5vT3N46t22RQeGXvrXJjijOMHWBwfkOzJyoz7PC5vdSWRM8QBg/Dg0Nrq/wsEPcWL1dRvdGbkJJYJamUSdaB87763QtLuasI7IwGDQ8Cql2ie4gbIJIJs/wleVQuPPHePx7v5A1xyj1vALVuK/TZ+gLioadiQnXT/dmaVz0qCBU8OuFYi0zUOhWOUzAlL7ke0Yg43FoPAJtGP//id/eVlx4Zvym0oSRB0EiZL2Yf0qdeO7Vla183WjUSOR+K2fFd+4Z9XAVdhnBwRh95BZfTFFk9MU4j8Bqg== 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=eEJOEQ809k/kGiKOk/O6+jCTtaZ1j6zbCsjpg5B99z4=; b=VJSPkhRr2RCy6kL3NsdPXPXsD291VGZIKl2N+0TnLLExJf5AxsT3K6IejYsd7WH0Qh2jkEX6KySfCwqNEqv1m9VO7a4ilqthBDsyJXaDDjnerBehBtn9Goy1J97GXkrD1CjxfcV5JB0v75dPx3BmghIKUJACW482UaxP2kMEPNUIJ92fgQsTxClxtZ27qkHgq/kl/TGdietfYMJqldppnbhTfAJCI703BZPbnQZA2tVO67fkhwPPhRcy/D7TjUUquOwkL+PI1D+h2VRPMjw/D2SnNZ9wU31kdeRCtdpIpbbDniy4GtKdJ2oLAqut1RLuPqExXI7+0LcJFxUGuxIbNQ== Received: from AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) by AM6PR03MB4086.eurprd03.prod.outlook.com (2603:10a6:20b:1a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.15; Tue, 25 Jan 2022 17:42:32 +0000 Received: from AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22]) by AM7PR03MB6660.eurprd03.prod.outlook.com ([fe80::ac56:2ff4:d304:ab22%4]) with mapi id 15.20.4930.015; Tue, 25 Jan 2022 17:42:32 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 25 Jan 2022 18:41:47 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 In-Reply-To: <20220125174148.994967-1-andreas.rheinhardt@outlook.com> References: <20220125174148.994967-1-andreas.rheinhardt@outlook.com> X-TMN: [c/X5T4kmle/tIhlfU+0DMHxw5LuCNW9b] X-ClientProxiedBy: AM6P193CA0061.EURP193.PROD.OUTLOOK.COM (2603:10a6:209:8e::38) To AM7PR03MB6660.eurprd03.prod.outlook.com (2603:10a6:20b:1c1::22) X-Microsoft-Original-Message-ID: <20220125174148.994967-19-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7005ba05-99f3-41a0-bb1d-08d9e02a10c9 X-MS-TrafficTypeDiagnostic: AM6PR03MB4086:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cEbwRbDZGhVlqoYCY/TqvEQTO9VwBLCFrAyfvJ073Gf+0QeEK3R9BBa+/zJ88sAzUjs6f7g2yI4mp6yN7cyEbgMAFcG56+Ie3pPErM1+otIs0QxureIFU0zrdDiMui7Ax9OjRHg/hDPhxV1OS8vo7ACZzbhlGA8bTDvgvnT1i0QBIUBqucUDZYEqoyaFBlFWt/kH1BQUjn30ePmrwnV8NT11lZIayeMtc0BA5MZoJ1ic22zcMx0KGH63Qdzjip67XFAejwrHJCL1ZSAjciAUmgZGOGBAy28OyIKmkmrQ9AGknFRAcnGGjR9jYRaCK11xF7RCMI64ITYYdNSVdVZern40xCpQWFirUIi2y68+DuWDsNUlDNLthOKDgZiRPQ8+jV6AGd/yuBcJ3tWkCsoRBxeU/yQIEceB/K5copw7qb1czPsNB+hEXAuZJc9Z2oUu6+7+n3Up3+oMkgGhMws1Ny0O857eNIl5QYtIzYV40Zoke6VC9VYkPvyiCQHNJfpMm/8rAzMb5umY1WjCUQZ3C0Hnghd1IB3GqzKNG0vr3igUTzvFzd7+OPXyS0n7jyCy X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 6T4I/G2MUG4N3ZKsjXR4fy0bP7UphsfBCchbnD/9GCHcHtMtU/4NezzH5ASgZX0SL14Vjn9AOQCcMHhIUTh/395xOKcXw3bU3gmPDJyeW5P6YIimzxbA2xmlv7rL2f6B+XGzQ9Uw7WBNqGlP63q0QPfCJnE/nvnN01qzcZxqsYA5yDL7UQ5cvPikmsgQhDv3n1Bb9I9VxC750gBsnvIjvVjYafX/SvWC4FdrWxcV+ZRgqWcMwRMtMVgb+eTs8o0l3jbRy/vsUqWnw1Ui+1PmWPtn+LC8PP2CljGehYnsSMv+MwhSU8B+ftziyEwQA28e7Yxssjh3v2sdfOy5J4NUZY7M5Rp7yAix51xTks8RRv9DMk3mhlWLCqQISwdRZ8pkAJgZtbe0PEYi9DjlYYDRmqLCEmfVN+5Nfbv+LAD+1mGe/saviBK8kAtTCl1hXNbf2AUL1cy9WT0EtnD9Grogdfue1f4Y6mRYwV2+z1aX0lTDZXHud8wAiV4oWOVbAnapOOCjXUddFAZvACo/7EkHPJCZGUH6pEe/VwJBhoVW50jxKupEzqNzWlCvP8CJKZpCZidR2Y6s3/sMkLlECg1RVOLqmJkPstUp2/NCKZvpC3aQSP7RylLRCbKAG6Y3QW2oxzmymI01OWZp4fh0a/A2x27A3DZ5ch/R4qCphBQLz+qXjNA30g77TsbWL8x3XywI+N/adCLdrWmuJp76YjttyOOH42UOPRd727AfApYN004Jmcr9suqEi6On3gsRKklQTm/OErkwYKgB3e4V1KNHrq1TTwD0aM8QQU1x5nShiky3nE7+5CCJwPvjik6IVCHfvBggnJrYGShjcveRf3L6WTNuXo58vTc1B3JxX/cGGHHH9QNBMNnTZvkyOmkBDclinAAxtR9Tica+uDV9qRfl10Z0PdTo+kDZBE4LGDG04IIm0SOSmfWGGUaA+wggf0d6LeDrtk1/oi0l+2LIsCY9HQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7005ba05-99f3-41a0-bb1d-08d9e02a10c9 X-MS-Exchange-CrossTenant-AuthSource: AM7PR03MB6660.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 25 Jan 2022 17:42:32.5477 (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: AM6PR03MB4086 Subject: [FFmpeg-devel] [PATCH 20/21] avcodec/speedhqenc: Add SpeedHQEncContext and move slice_start 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: QNQWWV14b3CZ Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo.h | 3 --- libavcodec/speedhqenc.c | 19 ++++++++++++++----- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/libavcodec/mpegvideo.h b/libavcodec/mpegvideo.h index e5a4cc9b81..9243edefce 100644 --- a/libavcodec/mpegvideo.h +++ b/libavcodec/mpegvideo.h @@ -425,9 +425,6 @@ typedef struct MpegEncContext { int inter_intra_pred; int mspel; - /* SpeedHQ specific */ - int slice_start; - /* decompression specific */ GetBitContext gb; diff --git a/libavcodec/speedhqenc.c b/libavcodec/speedhqenc.c index 967774931c..9a03876fbf 100644 --- a/libavcodec/speedhqenc.c +++ b/libavcodec/speedhqenc.c @@ -54,6 +54,12 @@ static uint32_t speedhq_chr_dc_uni[512]; static uint8_t uni_speedhq_ac_vlc_len[64 * 64 * 2]; +typedef struct SpeedHQEncContext { + MpegEncContext m; + + int slice_start; +} SpeedHQEncContext; + static av_cold void speedhq_init_static_data(void) { ff_rl_init(&ff_rl_speedhq, speedhq_static_rl_table_store); @@ -123,24 +129,27 @@ av_cold int ff_speedhq_encode_init(MpegEncContext *s) void ff_speedhq_encode_picture_header(MpegEncContext *s) { + SpeedHQEncContext *ctx = (SpeedHQEncContext*)s; + put_bits_le(&s->pb, 8, 100 - s->qscale * 2); /* FIXME why doubled */ put_bits_le(&s->pb, 24, 4); /* no second field */ + ctx->slice_start = 4; /* length of first slice, will be filled out later */ - s->slice_start = 4; put_bits_le(&s->pb, 24, 0); } void ff_speedhq_end_slice(MpegEncContext *s) { + SpeedHQEncContext *ctx = (SpeedHQEncContext*)s; int slice_len; flush_put_bits_le(&s->pb); - slice_len = s->pb.buf_ptr - (s->pb.buf + s->slice_start); - AV_WL24(s->pb.buf + s->slice_start, slice_len); + slice_len = put_bytes_output(&s->pb) - ctx->slice_start; + AV_WL24(s->pb.buf + ctx->slice_start, slice_len); /* length of next slice, will be filled out later */ - s->slice_start = s->pb.buf_ptr - s->pb.buf; + ctx->slice_start = put_bytes_output(&s->pb); put_bits_le(&s->pb, 24, 0); } @@ -273,7 +282,7 @@ const AVCodec ff_speedhq_encoder = { .type = AVMEDIA_TYPE_VIDEO, .id = AV_CODEC_ID_SPEEDHQ, .priv_class = &ff_mpv_enc_class, - .priv_data_size = sizeof(MpegEncContext), + .priv_data_size = sizeof(SpeedHQEncContext), .init = ff_mpv_encode_init, .encode2 = ff_mpv_encode_picture, .close = ff_mpv_encode_end,