[Cellar] [PATCH] ffv1: Support CRC with initial -1 and final -1 values

Michael Niedermayer <michael@niedermayer.cc> Wed, 25 September 2024 08:06 UTC

Return-Path: <michael@niedermayer.cc>
X-Original-To: cellar@ietfa.amsl.com
Delivered-To: cellar@ietfa.amsl.com
Received: from localhost (localhost [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id 615CAC18DB8B for <cellar@ietfa.amsl.com>; Wed, 25 Sep 2024 01:06:26 -0700 (PDT)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -2.107
X-Spam-Level:
X-Spam-Status: No, score=-2.107 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_ZEN_BLOCKED_OPENDNS=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01, URIBL_BLOCKED=0.001, URIBL_DBL_BLOCKED_OPENDNS=0.001, URIBL_ZEN_BLOCKED_OPENDNS=0.001] autolearn=ham autolearn_force=no
Authentication-Results: ietfa.amsl.com (amavisd-new); dkim=pass (2048-bit key) header.d=niedermayer.cc
Received: from mail.ietf.org ([50.223.129.194]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 6uurZSPzPlZx for <cellar@ietfa.amsl.com>; Wed, 25 Sep 2024 01:06:21 -0700 (PDT)
Received: from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net [IPv6:2001:4b98:dc4:8::222]) (using TLSv1.2 with cipher ADH-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 599DEC15109C for <cellar@ietf.org>; Wed, 25 Sep 2024 01:06:20 -0700 (PDT)
Received: by mail.gandi.net (Postfix) with ESMTPSA id 05C224000B for <cellar@ietf.org>; Wed, 25 Sep 2024 08:06:16 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=niedermayer.cc; s=gm1; t=1727251577; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=ErvDiKa6vQb9lRvOusJH48lBLy+RlN5HoR5PZEs4/UQ=; b=p2wgrNlVXl+7UOHgmKmNmpZuUGSjjfPF4Z/eqmJ5NOzxOKsFEe/ttYDdlwFac0aAvJ28Dk K1Vn1JA6ieYqWaucD7W3oFbsVu+HYSFJGauCdY+9w6DEj9ETTecx1BgR6kKnC8LQWF/ZfN ARoCMUvARyCte3YDxHXMR9WXNBh1Gfh1eX6YQuJWHRlRKRpZ3vFu2x9KWQly9JhMYoqKGN 4rDoecinJL65+bzE2Y1TKTYAc8AdUAB354BiAKx5LmjsBPXygzyhzZvcrFDt57ETZIoj+T AaCzRGnzgnYAl5wqf7QHPNWjrotuMBkgPi2zgoJeUA8z/OYkczTBfLM4UymEfQ==
From: Michael Niedermayer <michael@niedermayer.cc>
To: cellar@ietf.org
Date: Wed, 25 Sep 2024 10:06:16 +0200
Message-ID: <20240925080616.28255-1-michael@niedermayer.cc>
X-Mailer: git-send-email 2.46.1
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
X-GND-Sasl: michael@niedermayer.cc
Message-ID-Hash: UNXMNOUPH4SXSYSA3CUV6WJYJ6ISXHYE
X-Message-ID-Hash: UNXMNOUPH4SXSYSA3CUV6WJYJ6ISXHYE
X-MailFrom: michael@niedermayer.cc
X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; header-match-cellar.ietf.org-0; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header
X-Mailman-Version: 3.3.9rc4
Precedence: list
Subject: [Cellar] [PATCH] ffv1: Support CRC with initial -1 and final -1 values
List-Id: Codec Encoding for LossLess Archiving and Realtime transmission <cellar.ietf.org>
Archived-At: <https://mailarchive.ietf.org/arch/msg/cellar/TTLY0uxJ8hCj_NUzSqTBFZX3qWc>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cellar>
List-Help: <mailto:cellar-request@ietf.org?subject=help>
List-Owner: <mailto:cellar-owner@ietf.org>
List-Post: <mailto:cellar@ietf.org>
List-Subscribe: <mailto:cellar-join@ietf.org>
List-Unsubscribe: <mailto:cellar-leave@ietf.org>

This allows detection of appended and prepended 0 bits.
Previously a correct block could have 0 bits added before and
after it and this would not be detected with the CRC.

I am not aware of such a case actually occurring in the real world but this
should improve the performance of the checksum slightly

Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
---
 ffv1.md | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/ffv1.md b/ffv1.md
index bb5361d..5c1e290 100644
--- a/ffv1.md
+++ b/ffv1.md
@@ -1267,7 +1267,8 @@ Figure: Description of the coding of `initial_state_delta[ i ][ j ][ k ]`. {#fig
 |value | error detection/correction type           |
 |------|:------------------------------------------|
 |0     | 32-bit CRC in `ConfigurationRecord`       |
-|1     | 32-bit CRC in `Slice` and `ConfigurationRecord`|
+|1     | 32-bit CRC in `Slice` and `ConfigurationRecord` using crcref=0  as initial and final values|
+|2     | 32-bit CRC in `Slice` and `ConfigurationRecord` using crcref=-1 as initial and final values|
 |Other | reserved for future use                   |
 Table: The definitions for `ec` values. {#tableEc}
 
@@ -1311,7 +1312,7 @@ Decoders conforming to this version of this specification **SHALL** ignore `rese
 
 ### `configuration_record_crc_parity`
 
-`configuration_record_crc_parity` is 32 bits that are chosen so that the `Configuration Record` as a whole has a CRC remainder of zero.
+`configuration_record_crc_parity` is 32 bits that are chosen so that the `Configuration Record` as a whole has a CRC remainder of crcref.
 
 This is equivalent to storing the CRC remainder in the 32-bit parity.
 
@@ -1720,11 +1721,11 @@ Table: The definitions for `error_status` values. {#tableErrorStatus}
 
 ### `slice_crc_parity`
 
-`slice_crc_parity` is 32 bits that are chosen so that the Slice as a whole has a CRC remainder of 0.
+`slice_crc_parity` is 32 bits that are chosen so that the Slice as a whole has a CRC remainder of crcref.
 
 This is equivalent to storing the CRC remainder in the 32-bit parity.
 
-The CRC generator polynomial used is the standard IEEE CRC polynomial (0x104C11DB7) with initial value 0, without pre-inversion, and without post-inversion.
+The CRC generator polynomial used is the standard IEEE CRC polynomial (0x104C11DB7) with initial value crcref, without pre-inversion, and without post-inversion.
 
 # Restrictions
 
-- 
2.46.1