Re: [Cellar] On the multiplicity of Info elements

Moritz Bunkus <moritz@bunkus.org> Fri, 15 January 2016 08:10 UTC

Return-Path: <moritz@bunkus.org>
X-Original-To: cellar@ietfa.amsl.com
Delivered-To: cellar@ietfa.amsl.com
Received: from localhost (ietfa.amsl.com [127.0.0.1]) by ietfa.amsl.com (Postfix) with ESMTP id EF5401B2F07 for <cellar@ietfa.amsl.com>; Fri, 15 Jan 2016 00:10:32 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: -1.903
X-Spam-Level:
X-Spam-Status: No, score=-1.903 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RP_MATCHES_RCVD=-0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001] autolearn=ham
Received: from mail.ietf.org ([4.31.198.44]) by localhost (ietfa.amsl.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QvELrvCzICBA for <cellar@ietfa.amsl.com>; Fri, 15 Jan 2016 00:10:31 -0800 (PST)
Received: from liselle.bunkus.org (liselle.bunkus.org [176.9.119.9]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id E9E241B2F06 for <cellar@ietf.org>; Fri, 15 Jan 2016 00:10:30 -0800 (PST)
Received: from sweet-chili.local (unknown [10.55.4.6]) by liselle.bunkus.org (Postfix) with ESMTPS id E4152B3550B for <cellar@ietf.org>; Fri, 15 Jan 2016 09:10:27 +0100 (CET)
Received: by sweet-chili.local (Postfix, from userid 1000) id 4E85461FE2F; Fri, 15 Jan 2016 09:10:27 +0100 (CET)
Date: Fri, 15 Jan 2016 09:10:27 +0100
From: Moritz Bunkus <moritz@bunkus.org>
To: cellar@ietf.org
Message-ID: <20160115081026.GC4063@bunkus.org>
References: <568AC10F.9030303@gmx.de> <CAOXsMFKJJhzU-3CYqguDePY42T+Vvhx9ytAfvoM6xyqaZY+N4g@mail.gmail.com> <FCC4DC05-44CD-4C2B-8C59-8E3E5B494DC0@dericed.com> <568D6710.8000605@gmx.de> <692F039A-180D-4535-B4A1-529A777573F5@dericed.com> <5693D5D6.6030709@xiph.org> <F6B37DB3-EDCB-4BD2-9B0D-F8A4F353F36E@dericed.com> <20160112133656.GJ4063@bunkus.org> <5697E0D6.5000906@gmx.de> <FA83BFB8-286C-4BD5-A757-F653A06702A2@dericed.com>
MIME-Version: 1.0
Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="I7gN1YuHeqxrxkIZ"
Content-Disposition: inline
In-Reply-To: <FA83BFB8-286C-4BD5-A757-F653A06702A2@dericed.com>
User-Agent: Mutt/1.5.24 (2015-08-30)
X-Virus-Scanned: clamav-milter 0.98.7 at liselle
X-Virus-Status: Clean
Archived-At: <http://mailarchive.ietf.org/arch/msg/cellar/CK-wkwHo2phEVtGGxvcZY1zRrCY>
Subject: Re: [Cellar] On the multiplicity of Info elements
X-BeenThere: cellar@ietf.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: Codec Encoding for LossLess Archiving and Realtime transmission <cellar.ietf.org>
List-Unsubscribe: <https://www.ietf.org/mailman/options/cellar>, <mailto:cellar-request@ietf.org?subject=unsubscribe>
List-Archive: <https://mailarchive.ietf.org/arch/browse/cellar/>
List-Post: <mailto:cellar@ietf.org>
List-Help: <mailto:cellar-request@ietf.org?subject=help>
List-Subscribe: <https://www.ietf.org/mailman/listinfo/cellar>, <mailto:cellar-request@ietf.org?subject=subscribe>
X-List-Received-Date: Fri, 15 Jan 2016 08:10:33 -0000

Hey,

> The Matroska files with CRC Elements store a checksum of what data is
> stored in the Master-element rather than what is interpreted (via
> defaults).

That's good as it is and it's the only possible way to handle it.

> I think switching the CRC to calculate interpreted data rather than
> stored data would present numerous challenges.

Worse, it'd be impossible. Each time the specs change wrt. to default
values (e.g. by adding a new element with a default value) the CRC would
implicitly be invalidated as the CRC was calculated over the old set of
elements with a default value.

The problem I'm mentioned on my issue on GitHub is solely in libEBML's
design. A library's design should not force the specs to follow it. The
proposed CRC specs are fine as they are. No need to change them. I'll
just have to fix/extend libEBML accordingly (not easy, but doable).

> > My usecase for checksums was indeed just error recovery.

Just to be clear. "Error recovery" usually means both "error detection"
and "error correction". CRCs are only meant and useful for the
recovery. On their own they don't do anything for correction.

Only when combined with redundancy e.g. in the form of having multiple
"tracks" element with the same segment can they be used for
correction.

Kind regards,
mosu