Re: [Cellar] On the multiplicity of Info elements

Steve Lhomme <slhomme@matroska.org> Mon, 11 January 2016 10:05 UTC

Return-Path: <slhomme@matroska.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 A43BA1A88B2 for <cellar@ietfa.amsl.com>; Mon, 11 Jan 2016 02:05:29 -0800 (PST)
X-Virus-Scanned: amavisd-new at amsl.com
X-Spam-Flag: NO
X-Spam-Score: 1.422
X-Spam-Level: *
X-Spam-Status: No, score=1.422 tagged_above=-999 required=5 tests=[BAYES_50=0.8, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, FM_FORGED_GMAIL=0.622] autolearn=no
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 TaJPdqbCUO3L for <cellar@ietfa.amsl.com>; Mon, 11 Jan 2016 02:05:27 -0800 (PST)
Received: from mail-vk0-x235.google.com (mail-vk0-x235.google.com [IPv6:2607:f8b0:400c:c05::235]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by ietfa.amsl.com (Postfix) with ESMTPS id 84C671A88B8 for <cellar@ietf.org>; Mon, 11 Jan 2016 02:05:27 -0800 (PST)
Received: by mail-vk0-x235.google.com with SMTP id i129so83236538vkb.0 for <cellar@ietf.org>; Mon, 11 Jan 2016 02:05:27 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=matroska-org.20150623.gappssmtp.com; s=20150623; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:content-transfer-encoding; bh=cb66Va4ZY4lb0JF2l7Feks4U07UwiJA9IbFXwehZwhg=; b=MxA0ZcDoErhjEa131V2kgdq5BVvE1YfgjBEeBh0HUI/EXu7uctwmK8skMtCsbHUnkj DX0riB3zAfdsBu6C1vm1M0TNy8hp0FIuZtDm0dFJkJjpdVi9AV3hlK3xbBuc1MZYbWE4 1lx7ibBwwYt+f19uHaRTz7hsD/wbZEFTzVnsDNTwNSBAHMk/miTnb+0BjeTjzpr//hSe IxM65XD9EhekyhxoxtgrhXBmNus1NEizryHZgV1nYpnQ6VGQAWtdk2GcXE3xJabezKcP BgfAvPav64BvEy0vvov5aEsZGB0SSIGPlELElm1jWtWr+dCcdMaydHeftUOy5Rjo3DCt jfFA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:in-reply-to:references:date :message-id:subject:from:to:cc:content-type :content-transfer-encoding; bh=cb66Va4ZY4lb0JF2l7Feks4U07UwiJA9IbFXwehZwhg=; b=lGo+8P7sydFtX6FOw4YR8mIP+4EXw5dYnbwfr32XaG7a2x0mZH1rtZLaKy7P7fTjuv YAgmvTajFhqEwEjk4UPYXEtq29rCxVHWyymBIbjQAguRbcsLHpR2RMlFmdYf6CekXx+z 47giwyBG49WZY9LcYei4roY5pB116TMkWsdxpiMOPCIgIZ1fu4NzWU8At7U0YjGVaFmw CE6+L/7xhv83hE9kBpLGlHGuJYxdILpHDt+t5389agI+rm+s3yEzb0HoVJE+hC/b9AB9 qAB5dwb+kbQNGZWgC2xxoNCS16IVn9MeHc2Ff/S37MzXxwwVM+1qELUJCOKbRW0MPkKx qhlQ==
X-Gm-Message-State: ALoCoQm6EKvW49a82bpcZRipB0I+6+VXgFRtic+g50ynoKGU2I7yKClfYEHgOmt3HXP1CJkPPpXmL8xy0eJ4JRzUegtnd4Ls7w==
MIME-Version: 1.0
X-Received: by 10.31.166.208 with SMTP id p199mr89410958vke.122.1452506726621; Mon, 11 Jan 2016 02:05:26 -0800 (PST)
Received: by 10.31.8.84 with HTTP; Mon, 11 Jan 2016 02:05:26 -0800 (PST)
In-Reply-To: <692F039A-180D-4535-B4A1-529A777573F5@dericed.com>
References: <CAHUoETLC4dQQ7=TOuTXZ3aDjKCCJgz2s-8Gb33MoSAP3hgRQiQ@mail.gmail.com> <BEA72D66-EA3D-4CF0-987D-836E95287F39@dericed.com> <20151230091811.GA19636@bunkus.org> <CAOXsMFLCbe-W=h+tQpdRa8Nh0jz=xdbZTXEmoXsgQTbA=4OPCQ@mail.gmail.com> <C0E5EBA2-2A56-46F9-A049-629EFB11F280@dericed.com> <CAOXsMF+gc0d2LEisfHm0jnjDGQKcYquEMBt7FnZ_uuSNF=C0iw@mail.gmail.com> <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>
Date: Mon, 11 Jan 2016 11:05:26 +0100
Message-ID: <CAOXsMFKzUnSN0z3EdEQyJ31HV_yVJ7ZPfEQVQegojQScngaNFQ@mail.gmail.com>
From: Steve Lhomme <slhomme@matroska.org>
To: Dave Rice <dave@dericed.com>
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Archived-At: <http://mailarchive.ietf.org/arch/msg/cellar/fftE2el-zpZxokPm2cdVjvEaOMc>
Cc: cellar@ietf.org
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: Mon, 11 Jan 2016 10:05:29 -0000

2016-01-10 19:35 GMT+01:00 Dave Rice <dave@dericed.com>:
>
>> On Jan 6, 2016, at 2:12 PM, Sebastian G. <bastik> wrote:
>>
>> 06.01.2016, 08:06 Dave Rice:
>>> Here is a draft for an EBML Schema Attribute to be used in the
>>> definition of EBML Elements for what I’m referring to as
>>> Identically-Recurring Elements.
>>>
>>> ==== A boolean to express if the EBML Element may occur within its
>>> Parent Element more than once but that each recurrance within that
>>
>> Is 'recurrance' spelled correctly? (Not a native speaker). 'recurrence'
>> is suggested as search term suggestion.
>
> fixed
>
>>> Parent Element MUST be identical both in storage and semantics. Such
>>> Elements are referred to as Identically-Recurring Elements. In this
>>> case, identical copies of an EBML Element are permitted to be stored
>>> multiple times within the same Parent Element in order to increase
>>> data resillience and optimize the use of EBML in transmission.
>>
>> 'resillience' seems to have an error. 'resilience’.
>
> fixed
>
>>> Identically-Recurring Elements SHOULD include a CRC-32 Element as a
>>> Child Element. If a Parent Element contains more than one copy of an
>>> Identically-Recurring Element which includes a CRC-32 Child Elememnt
>>
>> s/Elememnt/Element
>
> fixed
>
>>> then the first instance of the Identically-Recurring Element with a
>>> valid CRC-32 value should be used for interpretation. If a Parent
>>> Element contains more than one copy of an Identically-Recurring
>>> Element which does not contain a CRC-32 Child Elememnt then the first
>>
>> s/Elememnt/Element
>
> fixed
>
>> 'If a Parent Element contains more than one copy of an
>> Identically-Recurring Element which does not contain a CRC-32 Child
>> Element "or if CRC-32 Child Elements are present but neither of those
>> are valid" then the first instance of the Identically-Recurring Element
>> should be used for interpretation.'
>>
>> I took your sentence and added (noted by "") the case something would
>> contain CRCs, but neither of them would be valid. Feel free to ignore
>> this suggestion. It might be a rare case.
>>
>> It is certainly possible to have it as separate sentence. Maybe it makes
>> it easier to read. Maybe even easier to understand.
>>
>>> instance of the Identically-Recurring Element should be used for
>>> interpretation. If the `identical` attribute is not expressed for
>>> that Element then that Element is considered to not have a
>>> requirement for identical expression within the same Parent Element.
>>> The `identical` attribute is only valid if the Element is not set to
>>> `multiple`, otherwise the `identical` attribute shall be ignored.
>>> ====
>>>
>>> The text may be seen in context with the other attributes at
>>> https://github.com/MediaArea/ebml-specification/blob/d108c14d1f1c748d1f3f50e58d4057208325f892/specification.markdown#ebml-schema-element-attributes
>>>
>>> Some pending questions:
>>> - Should Identically-Recurring Elements recommend or mandate inclusion of a CRC-32? I suggestion recommend and not mandate for reverse compability.
>>
>> Backward compatibility seems to be a higher goal than CRCs. I think it
>> should be even possible to play a file without checking CRCs, which does
>> not contradict having CRCs in the first place.
>
> I agree.

The backward compatibility is important so that older files are
handled correctly by future (stricter) parsers. In the case where a
recurring element doesn't have any CRC, I don't think future parsers
should discard such elements. So we could still make it mandatory and
keep backward compatibility. There will be plenty of other cases for
old files to not be compliant to the current/future specs and still
play fine.

>> Like Timothy B. Terriberry points out, reasons for not having CRCs on
>> those elements should be given in the specification.
>
> Based on Tim and Sebastian’s comments I extended the sentence to be:
>
> "Identically-Recurring Elements SHOULD include a CRC-32 Element as a Child Element; this is especially recommended when EBML is used for long-term storage or transmission.”
>
> Listing reasons to not have a CRC Child Element seems awkward. Realistically I think the primary reason that CRC elements are not used is because many muxers don’t support adding them, although the EBML specification has long contained: "All level 1 elements SHOULD include a CRC-32.” Instead of addressing reasons why not I added some reasons for why with references to ong-term storage and transmission.
>
>>> - Is 'Identically-Recurring Elements’ a decent short name for these types of Elements?
>>
>> I have no objection. IRE could be used when talking about those
>> elements, unless it is within official documents.
>>
>>> - Should the ‘identical’ attribute apply to only Master-elements? I think it could be open. I could see scenarios to place the CRC-32 both at the beginning and end of the Parent Element.
>>
>> I have not enough knowledge to make an informed statement.
>
> Unless there’s a good reason to do so, I won’t restrict the ‘identical’ attribute to certain Element Types, thus the specifications for EBML formats can decide how to use this.

If CRC is mandatory, then it's not possible. If it's not mandatory
it's possible to have unique elements duplicate. But then how do you
know which one to use ? Also having unique elements repeated seem
bogus and some parsers may not like that. It's a contradiction to what
"unique" means.

>>> - I’m thinking that ‘multiple’ means the Element may recur within its Parent Element and means that there are multiple semantics. I suggest that ‘identical’ Elements not be ‘multiple’ as an ‘identical’ Element recurs but only with a single and non-multiple semantic meaning. OK?
>>
>> I have not enough knowledge to make an informed statement.
>>
>>> - If there are multiple copies of identical Elements, I wrote in the draft that if there’s a CRC than the first copy with valid CRC be used, else the first copy be used. Potentially we could say first valid copy be used, but then need to say fully what valid means.
>>
>> I'm neutral, but agree that if just valid is used it would have to be
>> explained what valid means.
>>
>>> - I agree that an identical Element should not be used to change the semantics over time.
>>
>> Agreed.
>
> Here is a new version for review:
>
> Definition for a new EBML Schema Attribute: identical
> ===============
> A boolean to express if the EBML Element may occur within its Parent Element more than once but that each recurrence within that Parent Element MUST be identical both in storage and semantics. Such Elements are referred to as Identically-Recurring Elements. In this case, identical copies of an EBML Element are permitted to be stored multiple times within the same Parent Element in order to increase data resilience and optimize the use of EBML in transmission. Identically-Recurring Elements SHOULD include a CRC-32 Element as a Child Element; this is especially recommended when EBML is used for long-term storage or transmission. If a Parent Element contains more than one copy of an Identically-Recurring Element which includes a CRC-32 Child Element then the first instance of the Identically-Recurring Element with a valid CRC-32 value should be used for interpretation. If a Parent Element contains more than one copy of an Identically-Recurring Element which does not contain a CRC-32 Child Element or if CRC-32 Child Elements are present but none are valid then the first instance of the Identically-Recurring Element should be used for interpretation. If the `identical` attribute is not expressed for that Element then that Element is considered to not have a requirement for identical expression within the same Parent Element. The `identical` attribute is only valid if the Element is not set to `multiple`, otherwise the `identical` attribute shall be ignored.
> ===============
>
> Dave Rice
> _______________________________________________
> Cellar mailing list
> Cellar@ietf.org
> https://www.ietf.org/mailman/listinfo/cellar



-- 
Steve Lhomme
Matroska association Chairman