From patchwork Fri Oct 21 20:12:58 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 38898 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4a86:b0:9d:28a3:170e with SMTP id fn6csp957441pzb; Fri, 21 Oct 2022 13:16:19 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6IVWcdRSMSm3EM4Ia0iMXajX0UTjhiw2DSO95kZq8JIdNjROushNan+mBkcil0ytUABbEW X-Received: by 2002:a17:907:2c4b:b0:78d:8621:c113 with SMTP id hf11-20020a1709072c4b00b0078d8621c113mr16297542ejc.364.1666383379563; Fri, 21 Oct 2022 13:16:19 -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 cb17-20020a0564020b7100b00459c448d32csi17726628edb.446.2022.10.21.13.16.19; Fri, 21 Oct 2022 13:16:19 -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=rg78C2ml; 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 4E71668BF78; Fri, 21 Oct 2022 23:14:06 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-oln040092075076.outbound.protection.outlook.com [40.92.75.76]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2CF0868BF6E for ; Fri, 21 Oct 2022 23:14:04 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WjRl9feUU/EHoTCWpVf54ZfFVRmOXKGPQjQdpd5Ec+ZpumP+IETYY454cXEfItrVfLueYFiZo/gtOVIxknSwDSSslod0zgXMhSZ+6AwJQomUNZyI60VdBxbsnnBGMnC+SqCFJHfR+WLJ7kom30hVwAE/jyeqIg0o8uAvakJNbURspBdhsCEAGh5v9V3qv+kcz12fDQCe/IJFhiMp0mlKdy2hT1p3EN7F88ASwIjILbJe9xEb6NKijFYO/ljW4KnVdw6cXH2e3qJNSoe2mggNuh2wDlMb8zZUi4nTO26lEuPrEQ1Q/BR2jvq3XQrBXVedRnow4BT4shMTEEl/qWCtjg== 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=UZqbbdbsWdPam8KniwhKTGJZY1LDDxPZOo5o4cdLNQg=; b=eb9sFQm0KgFDe9RJQ28IyGROz3AkvwWjGwFKIbGzUPadkMeZNCGpZhq05LBD7+oMc1INUwjfcYAgTilwK/nV1yZ4A+zQFZ3f5VMbdg6ac3JatMiroMx9wln/tyN4noyoUdX99vUqNWlP46oYcottiCdtctB8Mw1NqDWHddoz2nOQ1I2BseQtUNpL3lUhQwS1ib+JBNUbTugc83rKwJvicSXMMNuDT0IQ0GwShr0s3B8+UgtXrCxDWP7BwoD3SZgn6LaXnl8vIs7lx2zlHErl+djByKyECuGsE0ZX/gWc+tQaFdojuqNHsKQnl9UxcOc+p7T9PMLAWRexg20mzb/ldA== 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=UZqbbdbsWdPam8KniwhKTGJZY1LDDxPZOo5o4cdLNQg=; b=rg78C2ml3bSbhOlQhqXHmxetziE42HfePfIy8aJR6d22blhLOrpYv4p21nX85L9kY3iWXzud/e/VEM2l35Woz4JEajqWYE/9V18/bD6k+7PmOGzHm/WNXsN/HGAs3nzm3tmvFBVCyqVDPH5fUJWLEhOXwkpqEf1/rI2u0z1aDf5Isax9MUv6oy9Vl2SjkX4hlBSU4CDwGtBSBuGU3dRKB6aAZ7CyOz7KrCDBWSN512bBotLIVrGMLEh1C+D2gb//xwh8FnnH84JyWMZhWxtvRLzrR2Ocw11dsef93hgAzx2MVJh37Y2L75e37uouLfNU1eoO0kBu+0cXEJP2O9Rccw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by DB4P250MB1007.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:3f1::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.21; Fri, 21 Oct 2022 20:14:03 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe%7]) with mapi id 15.20.5709.015; Fri, 21 Oct 2022 20:14:03 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 21 Oct 2022 22:12:58 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [uzsz1vRKZpwQifWd173KUgEVrloqRaOvBOK/flQwZ/4=] X-ClientProxiedBy: AM5PR0101CA0027.eurprd01.prod.exchangelabs.com (2603:10a6:206:16::40) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20221021201300.3565913-21-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|DB4P250MB1007:EE_ X-MS-Office365-Filtering-Correlation-Id: ecf467e6-3e16-44c4-f816-08dab3a0ccb3 X-MS-Exchange-SLBlob-MailProps: ZILSnhm0P3nnHDnbJ910YUAai4EXr732ZJgNvhYrZs6mhBXlK7TrmTt/rnHQh1ZIvi8BxuwR+xNLsOnp3bofjwIYg/uxbGbr9HIvKZatH/oq7xt+4Kc4fSAhbQ7tiypdOGC+pzvQVeqdXSVbkntlEwQOM2i1mbD9/Vyuy/KiVnfsgcHO1Fa3bXayvZPTahFiIAqUL4kLhweGE5C1Unzq3MLUhRHzBDR92vFTpAGNqURmgCC1/eFgJaU55ZMQEV0fEVQZUxoIni+51WePOek5Q+VH6P1M8BHybRQcXTpiGkhMA0WsXc1mih1SOTTrONBki54mXXvMIE8SfWe1iaEHyAZwBhWCBAt8Mc2CFJV89ATk4bxvuAQ8uFXj0TCUKnvRyIe/1oRD3SE4ujBqBOc7cndPNnnfSL4Olw8PYMhm+qgmvAgGubL4KjSoXDZRSTwEwcjRfEmoUnpdFzTXjPuciVDyuLo3OYW/dOCTR/aKwTOpQzn7skxAjguzUpPLAy3f2fw5dz3KSg/p2/vfwd3Ytn4D1X/CT8b8Jo3if+R/e3eoBg6NriXwW8oTzYBQKJ08BjcQ0WwibxRBQtb/MJkP2iXYue6UrBzkl6q884JZ+2Ql7zeOzeIZ7UIKovl4WgovnEV5kUTH5GC5WTJnOk3rR8J64zJshTARa6h1m2CpyjEjDEhm2l1P6UL8gGfBWfLB6ui97aZpcuDsymfRWcFv5LWRYxw8wwiAEa4B5jHNWoGwyxVNZTOp2BZYvAMutqFmkPapJP2Ns9mBchEOPfZxjaRpXCG+oS0k X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: EOKQ0gDK5fczSoTac+m4puOXgFgAHndiffpi1jTOZ+AHrWMwgdlyDAWcFSyGPHfEKos0aemU2jjoPw26ekgryTXp2yQt+ZGsy0LFYDlHofoQIEty1eaYiPfOUZTZR+iUElyyQYCSADpZvKvELL+DK9CnxULPjJHfPrSsN3DEpK1S9wP9Oz+jkOqD+88Y4Q4v8Xuf+T8ne8A9MD2NHdrRgIdMMeZeVK+3JGzzgVP0EKB4Wh4QULxphfIthq/fuPeFKhCFJndJjQzpQ+HuRecf6Um0Uit9dUFMDE9oa4G7uQfpatc0QwaJArThtEu5vUTSnkqkykyuvOC24Liyj2pKlyomy1oECcePBF9arbnZ98V9N2wqO/ldVLzgAoBUb4bVeBib0ykoXnWXpp02i2d3vBOgXhwUHrpA3nyFxjcs3PBMMzYltm05hOdkBc76zKTUeu4U3IexvihzOo3B9KryKt0vdRYXbCo4PRCfqz2hv4MbyoF2WT1WsZFywF0bHf8nNKWK/yNnul5lhQagYunga/wvapfP41VdDaukqvHcdN/M8YBLasr31ZdafchoXIu7XyR2XyJqhVnHFXHhHjWvdkq4htAN6H/igyUwl+Cod/eKZsfbCa2OPTn5dtqgJD0lxNTouG7efCMTROB7xwS3xgv9nrYT3GRJznhbO3U+wNStQ2dFLVr+rRLctCz0/Srz X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rFbPRGvotfK1qZCPtSWT0F98TkfnHnh3iN4swcmKaBuua6dIFvEM3rvfcnNTi4h5VfJODUcp1pT2Dqw25C3w+kx+i/ROAdtkO7Nuurw657ny2DlgoyHQLPEpaSuaFHJGyFkI2UYmS2JPwsTgxqJIdtbQ3X7ZqkjFnn8bMTW/h9SxKwrln4JMcRdPTUQs6XsZWGJX1kgh1GnaMf73Uh7oaLY+hFPayrGtb2N5tnG+IxGceQsudBeCzmmI9ie6wpVPni334bO+1iy6IesAoRVULN4gJFt9254QwC0TZwmJkWPrifOwfcKyluWTG6kxgDx6L3IRNisEzeS/DzR1Ez8OdWjpW5fGXYSU0PVwhLe1/i/bMVpeLXcfXnPwYbDcq2bU6sGX0TbMyxbzqXeyInc+mnhxwU7zyqwNB+ACq6+S9dBWmnSYk6wV7jFlq7yVkySpHi7mQDAYF7Teed7roinKaCaCa9Mmwp06O2uxZaMJcDu4tlaP/cexeTU9fSJBFPCncVzcua9b/ncbN+vdwf2O4ISwnP2eXlU0uZjG5q7HC3obFLYlCVEstxgkONy3AziNGQfhKrqluoNTHErVwPBDlKe1hdUoCn5k79QXDgAwPegt3mGC4MUFLE2zbFl9ue9KW+yOJoD0FbFEW0RWKju9/sOrvb3PWGMldcn7SchGc88GThpZ9gn1C+BGemMrw60j22yIGw9v3HRUdonP4Unj+iv7PDweW7u44/9YvWeQOGyv1DzoZ5ZFfT1d4sCIx+SalQ0AHE5YZmMOj4oFIiAuXtPLe7Jt2Iv3/H/WicJ5cJVa4gHczFXL4IKXtCmskIH+3zz+GalEKn0mEvVSrE+p6wNFgAuglm204NLePh80NL9Xbh2kZm0uG9eBLOUeyx8e7w89VoIp0d7+GGnYaXRP7+DxMZUgiJAaPZDXRyI1Ft6f3jkEavCJEfwAWI9Y82LAZBmVyU4gf+DUPOAvA3RXADb8wF3ISwgXUvI9PEpIo5bXLtorpVL/zNlZp47KD42jqroKA5/Crp96CHDS7kJqVUH2tFB1khBg9jzfvqezigoPkwb3LvnuPppmkyj+vr7skvKlf3BFy5jNGlWiiIilOZLOELqrux/YTgk/eiyy0aKRzNVaRoCU4NlhkAFtLeZQtpk/41AIDiivzvMjqkFpXf28elEADKEJeWjSxsFtpG9+zghxVK3dOQ3/TnHEN30xuddIP2PWh42gnrEMn3Tv0aQF/4VKIB4trvjnRQIPDdycCPXhazFAijXp0+IBlpj7x2Yw6uUyJ9EWP3yYNm9udJGyjERUM00eGaIiPX9EdeaKgaS1sljcxW4wZCF2eHE6 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ecf467e6-3e16-44c4-f816-08dab3a0ccb3 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Oct 2022 20:14:03.8549 (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: DB4P250MB1007 Subject: [FFmpeg-devel] [PATCH v2 22/24] avcodec/eatgq: Move transient GetByteContext from context to stack 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: MCJ2XLbjbP4U Signed-off-by: Andreas Rheinhardt --- libavcodec/eatgq.c | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/libavcodec/eatgq.c b/libavcodec/eatgq.c index 627615b4e8..89e9f20880 100644 --- a/libavcodec/eatgq.c +++ b/libavcodec/eatgq.c @@ -45,7 +45,6 @@ typedef struct TgqContext { int width, height; int qtable[64]; DECLARE_ALIGNED(16, int16_t, block)[6][64]; - GetByteContext gb; } TgqContext; static av_cold int tgq_decode_init(AVCodecContext *avctx) @@ -147,34 +146,35 @@ static void tgq_idct_put_mb_dconly(TgqContext *s, AVFrame *frame, } } -static int tgq_decode_mb(TgqContext *s, AVFrame *frame, int mb_y, int mb_x) +static int tgq_decode_mb(TgqContext *s, GetByteContext *gbyte, + AVFrame *frame, int mb_y, int mb_x) { int mode; int i; int8_t dc[6]; - mode = bytestream2_get_byte(&s->gb); + mode = bytestream2_get_byte(gbyte); if (mode > 12) { GetBitContext gb; - int ret = init_get_bits8(&gb, s->gb.buffer, FFMIN(bytestream2_get_bytes_left(&s->gb), mode)); + int ret = init_get_bits8(&gb, gbyte->buffer, FFMIN(bytestream2_get_bytes_left(gbyte), mode)); if (ret < 0) return ret; for (i = 0; i < 6; i++) tgq_decode_block(s, s->block[i], &gb); tgq_idct_put_mb(s, s->block, frame, mb_x, mb_y); - bytestream2_skip(&s->gb, mode); + bytestream2_skip(gbyte, mode); } else { if (mode == 3) { - memset(dc, bytestream2_get_byte(&s->gb), 4); - dc[4] = bytestream2_get_byte(&s->gb); - dc[5] = bytestream2_get_byte(&s->gb); + memset(dc, bytestream2_get_byte(gbyte), 4); + dc[4] = bytestream2_get_byte(gbyte); + dc[5] = bytestream2_get_byte(gbyte); } else if (mode == 6) { - bytestream2_get_buffer(&s->gb, dc, 6); + bytestream2_get_buffer(gbyte, dc, 6); } else if (mode == 12) { for (i = 0; i < 6; i++) { - dc[i] = bytestream2_get_byte(&s->gb); - bytestream2_skip(&s->gb, 1); + dc[i] = bytestream2_get_byte(gbyte); + bytestream2_skip(gbyte, 1); } } else { av_log(s->avctx, AV_LOG_ERROR, "unsupported mb mode %i\n", mode); @@ -202,6 +202,7 @@ static int tgq_decode_frame(AVCodecContext *avctx, AVFrame *frame, const uint8_t *buf = avpkt->data; int buf_size = avpkt->size; TgqContext *s = avctx->priv_data; + GetByteContext gbyte; int x, y, ret; int big_endian; @@ -210,21 +211,21 @@ static int tgq_decode_frame(AVCodecContext *avctx, AVFrame *frame, return AVERROR_INVALIDDATA; } big_endian = AV_RL32(&buf[4]) > 0x000FFFFF; - bytestream2_init(&s->gb, buf + 8, buf_size - 8); + bytestream2_init(&gbyte, buf + 8, buf_size - 8); if (big_endian) { - s->width = bytestream2_get_be16u(&s->gb); - s->height = bytestream2_get_be16u(&s->gb); + s->width = bytestream2_get_be16u(&gbyte); + s->height = bytestream2_get_be16u(&gbyte); } else { - s->width = bytestream2_get_le16u(&s->gb); - s->height = bytestream2_get_le16u(&s->gb); + s->width = bytestream2_get_le16u(&gbyte); + s->height = bytestream2_get_le16u(&gbyte); } ret = ff_set_dimensions(s->avctx, s->width, s->height); if (ret < 0) return ret; - tgq_calculate_qtable(s, bytestream2_get_byteu(&s->gb)); - bytestream2_skip(&s->gb, 3); + tgq_calculate_qtable(s, bytestream2_get_byteu(&gbyte)); + bytestream2_skipu(&gbyte, 3); if ((ret = ff_get_buffer(avctx, frame, 0)) < 0) return ret; @@ -233,7 +234,7 @@ static int tgq_decode_frame(AVCodecContext *avctx, AVFrame *frame, for (y = 0; y < FFALIGN(avctx->height, 16) >> 4; y++) for (x = 0; x < FFALIGN(avctx->width, 16) >> 4; x++) - if (tgq_decode_mb(s, frame, y, x) < 0) + if (tgq_decode_mb(s, &gbyte, frame, y, x) < 0) return AVERROR_INVALIDDATA; *got_frame = 1;