From patchwork Sat Jul 23 05:14:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36895 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:1649:b0:8b:613a:194d with SMTP id no9csp825757pzb; Fri, 22 Jul 2022 22:14:45 -0700 (PDT) X-Google-Smtp-Source: AGRyM1uWRKcoTJ3IXNgWRnlneQlvwbLcfenqEGSIkMpJFK2MGqFe07chMA0y3/pMlzyhfYkQvdls X-Received: by 2002:a17:907:3f29:b0:72b:91df:2c4b with SMTP id hq41-20020a1709073f2900b0072b91df2c4bmr2393626ejc.206.1658553285054; Fri, 22 Jul 2022 22:14:45 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ay2-20020a056402202200b0043aa13e06d8si6700892edb.367.2022.07.22.22.14.42; Fri, 22 Jul 2022 22:14:45 -0700 (PDT) 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=bjkiPrzi; 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 83FB068B590; Sat, 23 Jul 2022 08:14:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-AM6-obe.outbound.protection.outlook.com (mail-am6eur05olkn2053.outbound.protection.outlook.com [40.92.91.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 19EB268B4F7 for ; Sat, 23 Jul 2022 08:14:32 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VhWp51f8Mv1e5iUw/RdTfljle7VlpDYbMxZ04GbySrupscoJGvDEfTF9vh3QufC7cfyFdQI+Bll06yFSTf/iSbIfC93n9BuZnawPDnGG1eJXhSlVCGybBD/uv5Dc6TkmTHrEOuxf6c4GECi94CskbdafVC7UYHaUZms2KNn5cqh2dB+0b/mBU+fAkFWFxMQJre6SPqyEKcWuX/YD1LqPMdqnvLUHOOkCanDnGc2Lczr+qw2dR58Vpo26PHvAr+GWsiIqMUGXzwSqlbd4RO+NxuV2DQ3468iiIlsETTA5kxMbpNTD6y8Ur/YY0vLEZc4SmSj5fGpG86OGuvBq9qwxBg== 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=FEXPQnw/Oh5XgeuHxMWor9INdZAO63sd/DuSVoRfeOk=; b=QprA2PThE8haqhda91kErOfKu7ygKjb5XFUMKQ7iqxpbF3olEtgZUPg2oXZMOUMYZuKXFa15D+kh5awLC0dVR2iB0hTcIzqduZA7/W9l49NfpyICe6bdFOGp38P8mqAg/fWQP/Wei/PKmryhbZDG4btRSX0EX73pODj9ijbFAm+o4cuKT6D4wUMXioAZoGCZsyfVEgyTEYzNGlB1dOHhBjhWcJMK5UXcC6e1jJXJKN6/ZPS5V8dTyClI/XE6u85bazOjGCpIYi1y1+KSRrVJKRE8jiw5hUwLY09mNus75z+VNEW2xAD/VY7hbUTz3bJ6Rmb1cS9M4xvAcQmuWnW8Bg== 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=FEXPQnw/Oh5XgeuHxMWor9INdZAO63sd/DuSVoRfeOk=; b=bjkiPrziWJ/IGvBfSTfZd5XPXgIWWjNfEAbRJWPcQqGoIM8amdG3cfjAgZ/zgURZIbabi+J1wKzALRv4BYbxe6wnSFJa0Umt9FrJZ8DqNR5DmrRql0fE461Qi96GJv2RHYKbM6EGi7UKJzm2eSRX9Gh38rW6Lb3MRW1DLMqvrxTnsu9kbyIgA/shcebNQyqB/ykz7vCPWoSPr8wIFsmxeCYTbtbqdDg+cJyKXUFlLps2NQYcyaHRMsRVZNixKN9Zls1095XXs2iTjEfsAnH6SfDy3Ygv7q1ltluBJQgUjXN/fxg0JZfP9wITpnAj1MoTk5+UQOovwNVuf/YtsYye1w== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by DB8PR01MB5449.eurprd01.prod.exchangelabs.com (2603:10a6:10:10b::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5438.15; Sat, 23 Jul 2022 05:14:30 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::210e:b627:bcc9:8c46%11]) with mapi id 15.20.5458.020; Sat, 23 Jul 2022 05:14:30 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 23 Jul 2022 07:14:16 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 X-TMN: [DuKi4hHpII8ID8PiGz5eAZaw6DA5DIQ0] X-ClientProxiedBy: FR3P281CA0063.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:4b::13) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220723051420.287716-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 4c6c048c-571c-441a-4240-08da6c6a37d5 X-MS-Exchange-SLBlob-MailProps: ISIDp/2nRg1zbbtLliz97RSTgN8tc71BS0/jyU6CmuIJog6Em53akPhcNkBLzQxHSELrQDFX/xd8Zj+2qusB3IlkI40Th6V0P14iRK2IPttT60FSX0k2vAUmlRyjRMrBhsRU86DDwy86e+M2cesg/B0EsvIBfTZWKuh71XsekXjFiM8wEfY/iX70Gd9q9/ITY1IyN0tnD2+rf0DkiSt/jNgcBt+lLaBN0c7LXSjNWIReWd4GTjFSXjV9gYzr34LGvVf0+skarsnqkrTBdE2wlNw4fGuWqMyiRVu7CN7VtFaw8lzzEcrw2aQLQVlW6dKZBgRXaQIsSdKSd1YO3DMLwyoygq+/yVz+/C1hOjtT0ZaTwo4u85M7bAQ55KFPJHSlgGO8Phes5KAGPNyK8I8QhiUO9P5EXC7Xi+8XB7REw3PgPtMna97RcwZnbqpa6ive3X2qElxlmlNRJBw+KGVMH6Hxs05S59ee4drlYaNTN7+frfJPgsYkL3LxPFYZ/dT95USLmh5D+KGlu7W1Lr//kmWHB3b1FzC1rMHl8GC/2VCy82pPxYMmq3QJk4RitVorCOBP0Gw5i8+UnTrjN2VkuN3/4yRQJBm/6b52OtKihwUzpw55r6tcv5rc1g3n+eeY652J+Yhh3OKvk8yTaqfRgNhTLYQPSz7G7jU0Ia1PJTHB8tMzmiJLVmQyzAMUZ+PWVDl28I6wdb/vsJcatvaUpsFfewNYQD6nEbAYLS3UKBnWAvahSYCeF0fkdOOjNoDEIVUAbme1scUh4b8SckQvWkSfJbzOiA5KiQWDK99ydcYe48NZI0jGtddmYhqFkm4jCNqijE0j60XCG+DFzVo2hFEZQ+feq//Xj4EjxL6OXHyq5+qIedVYYERR98WCoHz3fi+sC5yteXg= X-MS-TrafficTypeDiagnostic: DB8PR01MB5449:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OliHEa35Rt0fMn6ka5jC8Coc0EZlT5CHViBy7l4+Uq+Q+gyk9LDilMCHSbBBJpSvCFBwe6zWhqqgCa3/xbb5osgbePeP2OstwBxialcRkqv8a6i/EKTiYqG3ZaaXXPgcBvg+plpZeYoaIAeAuw5UhXrNgEfkiuj4fBmomP1sucux5Mpo4I9TOjXNlBNPV/Xo6aZ5UTkZL4UatNV3cIylpu0u8J4wPidMJraV4p9q2ypkgwIjfT8eSJBZPoVL/nhQ9EKk6/31W/toGLZM59DO1wDMSS2gNGgry3pYAEO7NZn4aWN3ZK8Pt9B/OUAaJvfUfBZACnF4hWvq4cWsrKB6hI8BjQOhguuO8IGabPoSE4bhKaqlyMLtroSB50NBXy4fsNUW3VA6cjjQWZYyNCM1PmIjpUElzjuaPASLmlVnqmmUQCbIoVfhV044fVwsiU/gpIHfJOS0vAsuYwD6li43MlFnG6rgNv4/OGXZdV4t6J+EHuGlPnFDL0sDuxfdoqPVlnP9Dd9ZXmNfnih4uYyGKD31FrJax51TO1whdORQv9FeTrOdEm+GCpGYDUPQ/52MBrQzvj51AGA57citqR8pBFIfWn2Lw8aLuWEvy+7EWbHbOA7j4OayCjIHbLLmWoIIpOBRqOrHUbOEENQ4GWHuEA== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1deonAruVrA04V3LdEKrUwdy/CzAFk751Y9uOXs6W0OYLrt+4kaqu1sbapmanHa+E0alI5uNbPbKq1+NaksN0WYIVjaLF5fWziWTIxPatdYbjcMcnkRMKeqp6gJHKwmYWZ87ip/xSw/xzMBb+4sKk42yIrD8TQCBcTYgYoZuzhYOnw5yGzBzLFXJz6wylu+avxu32qP1J2pv9f+9rFJDeWTxrFBf6sxbztXz5DsU/4+E263OTOh7JUPjWC5YIZDwOSLbENMxStTO0JqtqFJJCl9GgtwNj5LMUMhqdaDbmGf0arr020hYZGRQp134ECltO4KtxG4CtyOcGW4j4WD6c3crl6zZtIYWOIKp6NcA+F2ugqjeJXR82smx2e8doww0HduIS0wIdErSGDSiXUCSVA9lGjM2MH9+Qxh1vpzMPFSAhz9Zlxz8RuSaBrxPxqLEFjaNxlKJTXZe1q3hKK6Nk/8heUmgTfV0hRaneWeqDbemBRgV1tc/Vk07Dw5pOHGoDsmtDQ/HFK3ssWLJ33J34Icch2CSX0AkH2UTD0OJsyX4/RK9V/+0Ndu49jUqnxzUfDdve6g5B2Ye2Jy2+HGd0kJ/qntrtkL8zOVcvIAZGNTlVYbgP2IaiyGFpmcXxOcXHXQCLHiWGjQfHQADijrDBeUZYuTmo/OZVrer/rDXhAMkw4a48CgpNSfHc3hJLhO6WolguPtQH1k3hyOq4+tRtHY09jNKtqol5/KUH5w6la9a3an6QDNYKhoXt0/aQ2KMRAS7Lx0g430fcsg4aJOXGoVEDaR8pxJH1KP2O5b44GoFrSnR9g5dgnoT6NKou5t/P83aY9vIRfhFo+pWnPc9N2nqF7YwhuHRifOXEAtfSY7dDvYOZSPQsEuKuqCNJetI+WMUjgCUCSevLiyWdQg/lIeUWmgpgjMScuu222NsNPVZMRJJRkgzb/qcL9vBgF0SMnE7t027QzT2hXDKjrgF2GZsEIGmcDQpUbQLm8WyXAuHv9HKZBbBpUiLPU6golOR+Ab37iJS5AJw9q1FVkjXCsU2UEvlJppBkL9hDlGauohBSMXVrQ5sy1mp6skDKpWiqthaVD/AK7i1mPUdIferEIk+qMCypgv44olYlJFrR2iTGcdg8Q67lHmcyKqAbmx7sPQpaf5QAFhsxXkKxqC5KOL+s6ACMmjhRTq098Og5skUkrmb7EbL+VQJP5TMxfWNGZYTcfM+cxczMjMLehZHCM7kQKjQsI0Lu+A+9PihbZUjTgpx/OxEX0OaHiRnPWj9p/pwr9Ul8qbkbYugBTfcsM3MQ55vr9DwWHsW1WVW6Ks= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4c6c048c-571c-441a-4240-08da6c6a37d5 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Jul 2022 05:14:30.0401 (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: DB8PR01MB5449 Subject: [FFmpeg-devel] [PATCH 1/5] avcodec/hq_hqa: Remove transient GetByteContext from context 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: faooNl7qYxLN Signed-off-by: Andreas Rheinhardt --- libavcodec/hq_hqa.c | 48 +++++++++++++++++++++++---------------------- libavcodec/hq_hqa.h | 2 -- 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/libavcodec/hq_hqa.c b/libavcodec/hq_hqa.c index 9a07d83114..a17fa18bf8 100644 --- a/libavcodec/hq_hqa.c +++ b/libavcodec/hq_hqa.c @@ -24,6 +24,7 @@ #include "libavutil/intreadwrite.h" #include "avcodec.h" +#include "bytestream.h" #include "canopus.h" #include "codec_internal.h" #include "get_bits.h" @@ -114,12 +115,12 @@ static int hq_decode_mb(HQContext *c, AVFrame *pic, return 0; } -static int hq_decode_frame(HQContext *ctx, AVFrame *pic, +static int hq_decode_frame(HQContext *ctx, AVFrame *pic, GetByteContext *gbc, int prof_num, size_t data_size) { const HQProfile *profile; GetBitContext gb; - const uint8_t *perm, *src = ctx->gbc.buffer; + const uint8_t *perm, *src = gbc->buffer; uint32_t slice_off[21]; int slice, start_off, next_off, i, ret; @@ -144,7 +145,7 @@ static int hq_decode_frame(HQContext *ctx, AVFrame *pic, /* Offsets are stored from CUV position, so adjust them accordingly. */ for (i = 0; i < profile->num_slices + 1; i++) - slice_off[i] = bytestream2_get_be24(&ctx->gbc) - 4; + slice_off[i] = bytestream2_get_be24(gbc) - 4; next_off = 0; for (slice = 0; slice < profile->num_slices; slice++) { @@ -240,20 +241,20 @@ static int hqa_decode_slice(HQContext *ctx, AVFrame *pic, GetBitContext *gb, return 0; } -static int hqa_decode_frame(HQContext *ctx, AVFrame *pic, size_t data_size) +static int hqa_decode_frame(HQContext *ctx, AVFrame *pic, GetByteContext *gbc, size_t data_size) { GetBitContext gb; const int num_slices = 8; uint32_t slice_off[9]; int i, slice, ret; int width, height, quant; - const uint8_t *src = ctx->gbc.buffer; + const uint8_t *src = gbc->buffer; - if (bytestream2_get_bytes_left(&ctx->gbc) < 8 + 4*(num_slices + 1)) + if (bytestream2_get_bytes_left(gbc) < 8 + 4*(num_slices + 1)) return AVERROR_INVALIDDATA; - width = bytestream2_get_be16(&ctx->gbc); - height = bytestream2_get_be16(&ctx->gbc); + width = bytestream2_get_be16(gbc); + height = bytestream2_get_be16(gbc); ret = ff_set_dimensions(ctx->avctx, width, height); if (ret < 0) @@ -266,8 +267,8 @@ static int hqa_decode_frame(HQContext *ctx, AVFrame *pic, size_t data_size) av_log(ctx->avctx, AV_LOG_VERBOSE, "HQA Profile\n"); - quant = bytestream2_get_byte(&ctx->gbc); - bytestream2_skip(&ctx->gbc, 3); + quant = bytestream2_get_byte(gbc); + bytestream2_skip(gbc, 3); if (quant >= NUM_HQ_QUANTS) { av_log(ctx->avctx, AV_LOG_ERROR, "Invalid quantization matrix %d.\n", quant); @@ -280,7 +281,7 @@ static int hqa_decode_frame(HQContext *ctx, AVFrame *pic, size_t data_size) /* Offsets are stored from HQA1 position, so adjust them accordingly. */ for (i = 0; i < num_slices + 1; i++) - slice_off[i] = bytestream2_get_be32(&ctx->gbc) - 4; + slice_off[i] = bytestream2_get_be32(gbc) - 4; for (slice = 0; slice < num_slices; slice++) { if (slice_off[slice] < (num_slices + 1) * 3 || @@ -305,32 +306,33 @@ static int hq_hqa_decode_frame(AVCodecContext *avctx, AVFrame *pic, int *got_frame, AVPacket *avpkt) { HQContext *ctx = avctx->priv_data; + GetByteContext gbc0, *const gbc = &gbc0; uint32_t info_tag; unsigned int data_size; int ret; unsigned tag; - bytestream2_init(&ctx->gbc, avpkt->data, avpkt->size); - if (bytestream2_get_bytes_left(&ctx->gbc) < 4 + 4) { + bytestream2_init(gbc, avpkt->data, avpkt->size); + if (bytestream2_get_bytes_left(gbc) < 4 + 4) { av_log(avctx, AV_LOG_ERROR, "Frame is too small (%d).\n", avpkt->size); return AVERROR_INVALIDDATA; } - info_tag = bytestream2_peek_le32(&ctx->gbc); + info_tag = bytestream2_peek_le32(gbc); if (info_tag == MKTAG('I', 'N', 'F', 'O')) { int info_size; - bytestream2_skip(&ctx->gbc, 4); - info_size = bytestream2_get_le32(&ctx->gbc); - if (info_size < 0 || bytestream2_get_bytes_left(&ctx->gbc) < info_size) { + bytestream2_skip(gbc, 4); + info_size = bytestream2_get_le32(gbc); + if (info_size < 0 || bytestream2_get_bytes_left(gbc) < info_size) { av_log(avctx, AV_LOG_ERROR, "Invalid INFO size (%d).\n", info_size); return AVERROR_INVALIDDATA; } - ff_canopus_parse_info_tag(avctx, ctx->gbc.buffer, info_size); + ff_canopus_parse_info_tag(avctx, gbc->buffer, info_size); - bytestream2_skip(&ctx->gbc, info_size); + bytestream2_skip(gbc, info_size); } - data_size = bytestream2_get_bytes_left(&ctx->gbc); + data_size = bytestream2_get_bytes_left(gbc); if (data_size < 4) { av_log(avctx, AV_LOG_ERROR, "Frame is too small (%d).\n", data_size); return AVERROR_INVALIDDATA; @@ -339,11 +341,11 @@ static int hq_hqa_decode_frame(AVCodecContext *avctx, AVFrame *pic, /* HQ defines dimensions and number of slices, and thus slice traversal * order. HQA has no size constraint and a fixed number of slices, so it * needs a separate scheme for it. */ - tag = bytestream2_get_le32(&ctx->gbc); + tag = bytestream2_get_le32(gbc); if ((tag & 0x00FFFFFF) == (MKTAG('U', 'V', 'C', ' ') & 0x00FFFFFF)) { - ret = hq_decode_frame(ctx, pic, tag >> 24, data_size); + ret = hq_decode_frame(ctx, pic, gbc, tag >> 24, data_size); } else if (tag == MKTAG('H', 'Q', 'A', '1')) { - ret = hqa_decode_frame(ctx, pic, data_size); + ret = hqa_decode_frame(ctx, pic, gbc, data_size); } else { av_log(avctx, AV_LOG_ERROR, "Not a HQ/HQA frame.\n"); return AVERROR_INVALIDDATA; diff --git a/libavcodec/hq_hqa.h b/libavcodec/hq_hqa.h index 08d79e7454..71aa36706c 100644 --- a/libavcodec/hq_hqa.h +++ b/libavcodec/hq_hqa.h @@ -26,7 +26,6 @@ #include "libavutil/mem_internal.h" #include "avcodec.h" -#include "bytestream.h" #include "hq_hqadsp.h" #include "vlc.h" @@ -37,7 +36,6 @@ typedef struct HQContext { AVCodecContext *avctx; HQDSPContext hqhqadsp; - GetByteContext gbc; VLC hq_ac_vlc; VLC hqa_cbp_vlc;