From patchwork Thu Oct 6 00:57:12 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 38575 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4d9:b0:9c:f4b:4e41 with SMTP id 25csp885234pzd; Wed, 5 Oct 2022 17:58:31 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7lWDTRTzPP68TSZOKch17Z8GLiIuO8D+qOQdndIOsEikNl3giMMwxklYxOltBQaKlk5Ob0 X-Received: by 2002:a17:907:9711:b0:78b:db86:a92d with SMTP id jg17-20020a170907971100b0078bdb86a92dmr1837360ejc.107.1665017911302; Wed, 05 Oct 2022 17:58:31 -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 he36-20020a1709073da400b007417c6edb0asi16580471ejc.402.2022.10.05.17.58.30; Wed, 05 Oct 2022 17:58:31 -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=P6+Kxm0i; 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 A899168BBCE; Thu, 6 Oct 2022 03:57:39 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR01-DB5-obe.outbound.protection.outlook.com (mail-oln040092064095.outbound.protection.outlook.com [40.92.64.95]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 44C8968BB93 for ; Thu, 6 Oct 2022 03:57:32 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MGVwWvvWnQeOIkQA56ns2dRUEFwhf4WaWppjANXq5XHeNKsGw5skJi29UOV9EFsNAnuE/hzGaXO7mpJXrF49oQnA+CftQS1jFOAyy7zkTh7OrYMr6UfOI602Ihwj+UkScUgR6Q+D+PBF62c7h1EtTiwbBD9pBRdK+xc8z48JPfdPzTzZqPQwkxHgl3rHxJJaiyjJ1vrmYiRdcvvX/giAg59J5CI5I1LRUWZpQNToJapoVOxDfCyotXxPWIkPHHbV4/+9fY+QmpDOtj9aZCJWRJCjWWkTb+8v+yJLBDv/UwP2uehw3GDoALycQnCwhSx/7HZeK7+vlgfYTkifcreMSw== 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=PjIARGzEVqMqwiL26ddNRWJahn6FGS6Atz0txqDydhU=; b=fQTwH+ZgDMrNqYdZJYCb4J5g8MmGlfhyyLAMRVBSii2mN0hD/91rdDO9Df/XWpLS1hA3diT7XchE1oS+c6d2HXwWAEFp7Oxavr2yMthH5M/SbXb0ANgZ9y4I8cr2RoyEET4YkzmDG+WrF5KfNq6FNVDiX2C4wX3TFKvpjYkw5X13krmMzuSqTT4Gm1eOyF/IPBxqMldYB9kek4lfUXhyIHZfb6vHojaVF1+m08tEWtgBDKjWYo+v0o0QkFknB6g1kLq7WBpPTXY2sjYC6pmCz1FpX0nXAy9kexvAa0hsC30llAqTsmdbYCEmW5LXbl5N9Rp6/vHnP72ruUUq1CfRiw== 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=PjIARGzEVqMqwiL26ddNRWJahn6FGS6Atz0txqDydhU=; b=P6+Kxm0iuyrsdKNEzRjWF7ZbkQuNanHJCe39f4JkLvMW0H/Ed6kE/MNOItFQUwH/IGJ268F51LFBBm30UE6zMB6znsTRggbwG96MUihejhGOTOetM4JLYtOOk7Z5oB3ND5gxYtYtNLsAPdkxHqNsntKE+VEb/4u5yM2vwwwqsj3KPGk14rCvJ6BmgjqqGG5fe6H/efhQ/dML0jqLlONJ8YrXs+SWHrmxCReZMX/tNxoZVnwHKKaNQKtLo3XMHSEe/3BvgvJNIFfAoCOQ96iEka9vCqL1/Am6r68xmt7IEofS1uUU5Xxl988Cs4um44UXay54W/DEf9WQ7gIQop92ug== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by GV2P250MB0801.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:a9::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5676.28; Thu, 6 Oct 2022 00:57:20 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::68bd:2fc7:ac52:38f8]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::68bd:2fc7:ac52:38f8%9]) with mapi id 15.20.5676.028; Thu, 6 Oct 2022 00:57:20 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 6 Oct 2022 02:57:12 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [sso7P2449J2vNw6Jdko9fSHuj/dXYrcHiNi6ydmDDtk=] X-ClientProxiedBy: ZR0P278CA0150.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:41::14) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20221006005714.3530026-6-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|GV2P250MB0801:EE_ X-MS-Office365-Filtering-Correlation-Id: 12fd8655-9294-4eb8-60ee-08daa735b900 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmqgQ4FT7B8ShVDNjokrWqh3TdArK1torF3td320DYFa9wwCdz1PpW+3YH72eEeqaZt8ZXCp3ixmpoB8XUvgy8kZJIWhdWKDBL95JsFFDMr2jL1NUO77/8by8eJ9zvicQNlSDT6YILZrSbwJeu7DHt4u0oBB8CfI6nBuSmLJYW/yOffjqjycY8SROs8DzNUfrijySBNJ7XFDtAkVWLgNVhJpSS6g94eokISz67Y3k64u2e+nMlNFbcZBSpUFS71XA7wRPVzwHYJk8R0m5IMJiRCXLJuDvJTYrz5XcUz+czQeABPJsnEv/qw0o4Z3wkGbM5835vhu4slwXFfw8a5QnzFPQcBwqTi5h258Lku1VH33iqAAAxfeOHviVEJT2HhTNsb9rTHz0Rksq/utqbSTdCBaRRW8YE5sLtsMWqP8yHPMSvnquYHC0aSkWdHT8cnjsPbjOFpib5M+FW8McYUShP1UJNGmh9Hg8hqJAO5rJ1h9WVSV9TO0UMj++TTfmFSreVdJJWTfjKPYkzAUgnTT/Gp/973nsT5AC72ey0mb/m6qjKvPaV87P0UrHq1DYjYQTiCnhtq3rq2XW0alaJjFuRsJ9AQGujzv77fXmDLBrd9Zvy+dh3VRu1r38bEjjak9VqUDgN2IfBaKFacfP7QqIlxbE4x7oaksJ4a5lgMsMQLeJzqu5vPN+9I+EPg+yCUGRJXAWbj1oH4DKgEqbY+WOluyBRf49ugpalnIXR21zR+tnLfW4MYuo3nfIN3Awng/yN8= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: rXJHzMKlT9Q2YUkWYT3nGiNn5Mtp0amveX6rAQ7hlH1SKLG7p5qCD67pVy5r3hMMEm59rX77OlcYDHXMrpliSh7NyoV54dSBgk08af8xsXwcZfc22qgHuGrA8evI5x9TR3p6g4G8I1+5cWCDyTWMs8GUwlK3TQO943O/pYq5VXTUn5JMidR12L+yRSndsvDJ2HokjKWiZF17CEYOCtBmvvfQazEKXQIFG2aQcsuihrNjgV38qc+EO98bNtW80dfzVLTG07T6h+Yx1FAgGNwDllTap5lhzPGXJBLDwcjB+JLCKU/hJfqj2vfJ5YOl9pMrEuBbxt2vxVIuLo3uzH1E0HFrrDKc6Sm2udnk82RjeWXDie5PFT4HktbhbViK6csQk5qhxP2ZlFTVJM6ntNSgxX3g2u+ejw1HNXesJVl3dE/5f6iILTaNaVLdGDxNzy7t1BnQtmg8mrDFovUk1vUDgzCZwyJyqSeohaja2UFx+RxdU04Qlfa1NI+L+m35FZQO3H4x1OQFeJXeaPUHFSmhj4iXkkgy7ll6xTUJY/mHu8i1av/BilYaelA1DKs0UwVnMKx8MTO0I8rgh3qRjm/hBdHnwKowPflUE6sqQhsPdh87/g4uat6ssAxTLL9gQTkDeMGQallunhRlY3BCE+1P0BY2jprfk1aaza8XbiaOOi3uXRix6ptAmVSkUdaaDNhY X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: nKRF0f8MnRmvvFQu05ht3faBzjgTw8XBI/TgN1ZfaY9Q5cumgauLG7RNIUrV1GBnpg8S1YsIvIuigLtU9gWhEmv7QHggZib1XRezEJ7W9ouFGyre//7ihjJjLZJaJfSTItEmqv3vmB3l3LJUc0rgOJZu3wce3XMw+g71lCZtxdaRZYs9N2JbhPzJQiw+M/RxKXWrmebWE3+g9m3uuZXBlkJQokECykQr8bOCvgp0kbajLXA5BwFlV/BFr8dcZxkhqOrdizIC6IUEbZrrHfWCTgCeviKaaNSxqLbf4xU5+AWgG098crFl2UWT0DO163B9y1OSV+yp6ZePbAJv04/Oan5zLJ6+VKdg1DLjSViQEhPOmmIteQLadP2K2ZqwrQmXzLkdinzML7PBgqR2CChdT9kGDqbE68CqJEQBpP63wqj1AaK25VeZDo62GBgKoY8DPJxQczx5JChTQ0f++cfYmcd6T59vlnS5lP5FKuqyJqCOGRWILwilxS3EH/Cw8Ap3AY1n0bJ8L4yfAM0waesnMttms0j8M8B31xlx9YkOs0KKplHclTHXaOMLYW6dQTO8TW+oNNC1MwWlPYDhNviN3Ah7hX1anOL6rFgBLANNKBotsKk/Zi8cJ9bzl7wcQGN83Jaa8Tg7zH1hWkaHGdzqNc5oEak4ElSJhIttrf48gWofBQTTFgUY5v/D3a2NfvogwaIGt+rehy5av30nRpdgMBFGuiGk3/O1vR5BZ9E/YApuafrjMyje/n8WAslcpAlmjiElrs118ASRWBApAYOLTTllFLUNVIo0aAh5G28m9hf6gCGGa8lrhJSZWwdmDUjKQpCdJ0p1Uib7peymo+DIynxPcCtebSNkpSkQgDWNuZWnFpglvxdhecB1oG5ZD94WZ3urnJezQZRZph16OQ61a555NkJKtBDv4OLEkkK5qf8thRJiuphkW/57b9y64lPpkSVkJ58G3RRQaP1lg+M/he4FBptrinmzLm3/vLVq0PYjI/+0D4wpvFHbCTAK6vRNv2Lykr0PzsVKk+eK77ScvxeOpz1kgW55riSQiygRKv47xayGjGsydJXIyzTXpYcD9XSrw5+SuLUSPPX7S3CflSsJhst/U+HxvxSiPRqkZEdubRyp2TFCdfDXaA4DE4dIU3pFvKR8kqkCp+04EcopCnTQCdwOtI2YJbgthizYbolHIDO6IHpBHyQdE+u2Enu9iHj1pdfHurJz1R5gtcnafHOpF88G4cQKAUhtoptTWI0/PrYmlMTrCixAjHgWyDv40q3nfY/zoAyDFXokzcypQ09/Ki5Z1GNa/GQEqEqQIq1Q6pGDi9kj9032rWgO53bc X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 12fd8655-9294-4eb8-60ee-08daa735b900 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2022 00:57:20.6980 (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: GV2P250MB0801 Subject: [FFmpeg-devel] [PATCH 7/9] avcodec/vc2enc: Don't use bitcount when byte-aligned 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: dWz8oUFzG3BM (There is a small issue that is now being treated differently: The earlier code would record a position in a buffer that is being written to via put_bits(), then write data, then overwrite the byte at the position recorded earlier and only then flush the PutBitContext. In case there was no writeout in the meantime, said flush would overwrite what one has just written. This never happened in my tests, but maybe it can happen. In this case this commit fixes this issue by flushing before overwriting the old data.) Signed-off-by: Andreas Rheinhardt --- libavcodec/vc2enc.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libavcodec/vc2enc.c b/libavcodec/vc2enc.c index 5cb6e0d198..82d11462aa 100644 --- a/libavcodec/vc2enc.c +++ b/libavcodec/vc2enc.c @@ -233,7 +233,7 @@ static void encode_parse_info(VC2EncContext *s, enum DiracParseCodes pcode) align_put_bits(&s->pb); - cur_pos = put_bits_count(&s->pb) >> 3; + cur_pos = put_bytes_count(&s->pb, 0); /* Magic string */ ff_put_string(&s->pb, "BBCD", 0); @@ -746,7 +746,7 @@ static int encode_hq_slice(AVCodecContext *avctx, void *arg) /* Luma + 2 Chroma planes */ for (p = 0; p < 3; p++) { int bytes_start, bytes_len, pad_s, pad_c; - bytes_start = put_bits_count(pb) >> 3; + bytes_start = put_bytes_count(pb, 0); put_bits(pb, 8, 0); for (level = 0; level < s->wavelet_depth; level++) { for (orientation = !!level; orientation < 4; orientation++) { @@ -755,10 +755,10 @@ static int encode_hq_slice(AVCodecContext *avctx, void *arg) quants[level][orientation]); } } - align_put_bits(pb); - bytes_len = (put_bits_count(pb) >> 3) - bytes_start - 1; + flush_put_bits(pb); + bytes_len = put_bytes_output(pb) - bytes_start - 1; if (p == 2) { - int len_diff = slice_bytes_max - (put_bits_count(pb) >> 3); + int len_diff = slice_bytes_max - put_bytes_output(pb); pad_s = FFALIGN((bytes_len + len_diff), s->size_scaler)/s->size_scaler; pad_c = (pad_s*s->size_scaler) - bytes_len; } else { @@ -766,7 +766,6 @@ static int encode_hq_slice(AVCodecContext *avctx, void *arg) pad_c = (pad_s*s->size_scaler) - bytes_len; } pb->buf[bytes_start] = pad_s; - flush_put_bits(pb); /* vc2-reference uses that padding that decodes to '0' coeffs */ memset(put_bits_ptr(pb), 0xFF, pad_c); skip_put_bytes(pb, pad_c);