W3C home > Mailing lists > Public > public-tt@w3.org > May 2014

Re: Liaison response - template on MIME type parameter for TimedText

From: Glenn Adams <glenn@skynav.com>
Date: Wed, 14 May 2014 11:14:54 -0600
Message-ID: <CACQ=j+dm_N_z8woj6JAJxQtUT3-i+XvcAPzTVVFUxcPY-UiHnA@mail.gmail.com>
To: David Singer <singer@apple.com>
Cc: Cyril Concolato <cyril.concolato@telecom-paristech.fr>, TTWG <public-tt@w3.org>
On Wed, May 14, 2014 at 11:01 AM, David Singer <singer@apple.com> wrote:

>
> On May 14, 2014, at 18:12 , Glenn Adams <glenn@skynav.com> wrote:
>
> >
> >
> >
> > On Wed, May 14, 2014 at 12:59 AM, David Singer <singer@apple.com> wrote:
> >
> > On May 13, 2014, at 19:46 , Glenn Adams <glenn@skynav.com> wrote:
> >
> > >
> > > On Tue, May 13, 2014 at 11:04 AM, David Singer <singer@apple.com>
> wrote:
> > >
> > > On May 13, 2014, at 18:40 , Glenn Adams <glenn@skynav.com> wrote:
> > >
> > > > Much of this is based on where we are with TTML1 and where folks
> want to go with TTML2. TTML1 defined only processor profiles, and
> explicitly ruled out treating them as content profiles. Now folks also want
> content profiles for labeling document conformance (and potentially
> selecting validation processing).
> > > >
> > > > We have a couple of paths here:
> > > >       • introduce a new concept and mechanism: content profiles,
> while reusing as much existing vocabulary as possible, e.g., reuse
> ttp:{profile,features,feature,extensions,extension} element types to
> support both uses;
> > > >       • merge both concepts and mechanisms into one
> concept/mechanism;
> > > > We have already started down the first of these paths. I haven't
> even considered fully what it would entail to do the second.
> > > >
> > > > Given the general confusion folks seem to have about whether a
> profile is defining content constraints or describing processor
> requirements, I strongly prefer the first path since it makes these
> concepts explicit and distinct. Following the second path, in my mind,
> would continue to maintain the confusion about the role (and semantics) of
> a profile.
> > > >
> > > > You appear to be implicitly arguing for the second path. I wonder
> what others feel about this.
> > >
> > > It’s the way it’s done for video and audio codecs such as H.264 and
> H.265, file formats such as ISO BMFF, and distribution technologies such as
> DASH, and so on.
> > >
> > > I have no problem with allowing intrinsic indicators such as schema
> locations, namespaces used, content profiles conformed to, or the marital
> status of the content author;  I just don’t think they are terribly
> relevant to the problem at hand, which is attempting to solve the question
> “can I (both ability and permission) process this document?”.  That’s what
> is needed when given a MIME type annotated with parameters; a canPlay
> decision.
> > >
> > > In that case, we should only be discussing processor profiles and stop
> talking about content profiles, at least in the present thread.
> > >
> > > Earlier in this thread, I see folks talking about "dialect naming" and
> namespaces used, etc. Both of those are related only to content profiling
> and not processor profiling (answering the canPlay question).
> >
> > namespaces, yes. But surely SMPTE-TT  and its use of images implies a
> different processing capability, for example?
> >
> > correct, but that use of namespaces is orthogonal to declaring which
> profile should be required; if an author requires support for, say, the
> SMPTE 2052-1:2010 profile, they would need to specify
> >
> > codecs=“stpp.ttml.st10"
>
> s/requires support for/permits processing by a client that supports/
>
> but yes, generally
>
> >
> > assuming that the following registration has been entered into an
> stpp.ttml registry:
> >
> > "st10" : "
> http://www.smpte-ra.org/schemas/2052-1/2010/profiles/smpte-tt-full"
> >
> > if the author is willing to accept support for TTML1 DFXP Presentation
> profile as a backup, then they would need to express it in an appropriate
> syntax, but I'm not sure from reading RFC6381 how to express this (the
> semantics of multiple comma separated values for the codecs parameter don't
> seem particularly well documented);
>
> Yes, they mean that there are several tracks in the file (video, audio,
> captions).  You only get one track, so you don’t get to use comma as a
> separator.  Use something else, like + that I suggested (meaning either/or).
>
> codecs=“avc1,mp4a,stpp.ttml” means a file with three tracks, one
> containing AVC (H.264), one containing some sort of MPEG-4 audio, and one
> containing timed XML sub-titles in the TTML format.
>
> >
> > if the comma operator means OR (rather than AND), then one might specify
> >
> > codecs="stpp.ttml.st10,stpp.ttml.tt1p”
>
> That’s two distinct timed-text tracks;  try
>
> codecs=“stpp.ttml.st10+tt1p”
>
> or something similar, expressing one TTML track for which either an st10
> processor or a tt1p processor are acceptable.
>

ok; but does anyone but me wonder if '+' is the best operator? in my mind
it is more associated with AND than OR; could we use '|' instead?


>
> >
> > assuming that the following registration has been entered into an
> stpp.ttml registry:
> >
> > "tt1p" : "http://www.w3.org/ns/ttml/profile/dfxp-presentation"
> >
> > if the comma operator does not mean OR, as in "A,B" means "codec A must
> be supported OR codec B must be supported", then how is it intended that OR
> be expessed?
> >
> > note also that nothing about this formalism directly expresses which
> namespaces are used or whether the document adheres to some content
> profiles somehow related to these processor profiles; of course, one can
> deduce the set of namespaces for which support is required by interpreting
> the semantics of the definitions of the enumerated processor profiles;
> >
> >
> > >
> > > If folks can agree that we are only talking about processor profiles
> (the canPlay question), then I can reformulate the semantics of the
> suggested codecs parameter strictly in terms of processor profiles.
> > >
> > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > On Tue, May 13, 2014 at 9:54 AM, David Singer <singer@apple.com>
> wrote:
> > > >
> > > > On May 13, 2014, at 17:22 , Glenn Adams <glenn@skynav.com> wrote:
> > > >
> > > > >
> > > > > On Tue, May 13, 2014 at 3:20 AM, David Singer <singer@apple.com>
> wrote:
> > > > > Hi Glenn
> > > > >
> > > > > I still worry that you are making this much more complex than it
> needs to be.
> > > > >
> > > > > at first order, we need to understand the process precisely and
> understand the parameters involved, if for no other reason, than to
> document that process correctly; we can then choose to what extent we want
> to expose those parameters to the author/processor
> > > > >
> > > > >  In other places, we write that when a document says P,Q,R as the
> list of profiles, then:
> > > > >
> > > > > * the document contains everything that is required by any of P,
> Q, and R
> > > > > * the document contains nothing contrary to any of P, Q, and R
> > > > > * the document creator will be satisfied by a processor that
> implements exactly only the required processing behavior of any one of P, Q
> or R
> > > > >
> > > > > the first two constraints above correspond with the way I defined
> ttp:contentProfileCombination="mostRestrictive": prohibited > required >
> optional
> > > > >
> > > > > the third constraint requires something different than has
> previously been mentioned; so far, we have talked about inferring a PP from
> a single CP, namely the effective CP resulting from combining constituent
> CPs; however, here you suggest inferring a PP from any constituent CP of
> the ECP; this could be handled by using a second parameter
> > > >
> > > > Life gets a lot simpler if a profile has a definition of both the
> content and processing requirements, under a single label.
> > > >
> > > > >
> > > > > ttp:inferProcessorProfileSource = (combined|first) : combined
> > > > >
> > > > > where combined means use the combined ECP as source, and first
> means use the first constituent CP that, when mapped to a PP using the
> inferProcessorProfileMethod (renamed from the earlier inferProcessorProfile
> parameter - see below), that PP is supported by processor;
> > > > >
> > > > > so, let's say we rename the earlier parameter
> inferProcessorProfile to inferProcessorProfileMethod, thus ending up with
> the following parameters:
> > > > >
> > > > > ttp:inferProcessorProfileSource = (combined|first) : combined
> > > > > ttp:inferProcessorProfileMethod = (loose|strict) : loose
> > > > >
> > > > > the first of these determines which CP to use as the source for
> inferring the PP, and the second of these determines the mapping from the
> CP constraints to the PP constraints; namely, how 'optional' in the CP is
> mapped to the PP: if 'loose' then optional -> optional, and if 'strict',
> then optional -> required;
> > > > >
> > > > > given these parameters and the others mentioned before, the
> treatment you suggest for codecs filtering maps to:
> > > > >
> > > > > ttp:contentProfileCombination="mostRestrictive"
> > > > > ttp:inferProcessorProfileSource="first"
> > > > > ttp:inferProcessorProfileMethod=“loose"
> > > >
> > > > again, I think this is way too complex.
> > > >
> > > > The client needs to answer the question “can I process this?” in two
> respects “am I able?” and “am I allowed to?”.  I see little or no value in
> allowing content makers effectively to define new profiles by combining
> other ones; they should define the profile, and publish its identifier (and
> be prepared to defend it).  I also see little value in being able to say
> “this document conforms to CP X but you’re not allowed to process it even
> if if you implement PP X”, and clearly the opposite “this document does not
> conform to CP X but go ahead if you implement PP X” is fairly absurd.
> > > >
> > > > >
> > > > >
> > > > >
> > > > > Then a client examines the list, and answers the simple question:
> do I implement the processing requirements of at least one of the named
> profiles?
> > > > >
> > > > > It isn't quite as simple as that since the named profiles are
> naming content profiles and not processor profiles, so we have to map the
> former to the latter to ask a well-formed question.
> > > >
> > > > As I say, I don’t think this is a useful distinction.  Yes, profiles
> can have distinct rules for content and for processing (and often do), but
> having distinct names and concepts seems un-needed complexity.
> > > >
> > > >
> > > > >
> > > > > If yes, then process the document as best I can.  If no, this
> document is not for me.
> > > > >
> > > > > Note that the client is permitted to exceed the requirements of
> the profile(s) it supports, and also process items that are optional,
> extensions, and so on, but it must meet at least one profile.
> > > > >
> > > > > I think that the simple profile list you mention is along these
> lines, and I don’t think we need anything more complex than this.
> > > > >
> > > > > We have to deal with the overall consequences of the following
> requirements:
> > > > >       • distinguishing content profiles from processor profiles
> > > > >       • combining multiple constituent content profiles into a
> single effective content profile
> > > > >       • combining multiple constituent processor profiles into a
> single effective content profile
> > > > >       • inferring a processor profile from a content profile
> > > >
> > > > I don’t see the need for any of these, for the simple cases.
> > > >
> > > > > To satisfy these requirements, we appear to need at least the four
> parameters mentioned:
> > > > >
> > > > > ttp:contentProfileCombination
> > > > >
> > > > > determines how multiple content profiles are combined into a
> single combined content profile
> > > > >
> > > > > ttp:processorProfileCombination
> > > > >
> > > > > determines how multiple processor profiles are combined into a
> single combined processor profile (note that this parameter is called
> ttp:profileCombination in the current TTML2 draft, but probably should be
> renamed to make clear the type of profile and distinguish it from the
> ttp:contentProfileCombination parameter)
> > > > >
> > > > > ttp:inferProcessorProfileSource
> > > > >
> > > > > determine the source content profile to use when inferring a
> processor profile
> > > > >
> > > > > ttp:inferProcessorProfileMethod
> > > > >
> > > > > determine how to map feature/extension constraints in source
> content profile to feature/extension constraints in inferred processor
> profile
> > > > >
> > > > > I don't think we can simplify further without changing the
> requirements enumerated above.
> > > >
> > > > I think I need to understand what problems those requirements solve.
> > > >
> > > > >
> > > > > I agree that document requirements (must/must not/should/may…be
> present) and processing requirements (must/should process, must indicate an
> error if…) are distinct, and profiles generally document both of them.  But
> I think that in marking a document with a profile, you are implicitly
> buying into both of them;
> > > > >
> > > > > Agreed. This is a common understanding. However, what is not
> generally considered is how the two are distinct. In particular, does a
> feature that is optionally used in a content profile imply that support is
> optional or required in a corresponding processor profile?
> > > >
> > > > That needs stating in the profile definition.  “X may be present,
> and may be ignored in processing” or “X may be present, but if present must
> be processed” (or even “X may be present, but if present must be ignored”).
> > > >
> > > > > We can establish a default, which is what I've done above by
> making ttp:inferProcessorProfileMethod have a default value of 'loose',
> thus meaning an optional feature in a CP maps to optional support in a
> corresponding inferred PP.
> > > > >
> > > > > notably, if you have two profiles P, Q with the same document
> requirements but Q has better, stronger, processing requirements
> > > > >
> > > > > you are mixing CP and PP semantics in this statement; if P and Q
> specify document requirements, then they are CPs, and if they specify the
> same document requirements, then they are the same CP;
> > > > >
> > > > > if P == Q but IPP(P) != IPP(Q) [IPP = inferred processor profile],
> then the inference rules, i.e., the parameters of the function IPP(), must
> be distinct
> > > > >
> > > > > , and you feel that P-level processing is not good enough, then
> don’t mark P as a profile on the document, even though the document itself
> conforms to P — because you do not want P-level processors processing it.
> > > > >
> > > > > right, assuming "P-level processing" means IPP(P); but note that
> the syntax we are discussing for the codecs parameter only allows
> enumerating content profiles, and not processor profiles,
> > > >
> > > > as I say, I don’t see the utility of separate concepts here outside
> the profile definitions
> > > >
> > > > > then an inference method must produce the corresponding processor
> profiles for this pre-filtering stage; importantly: this (inability to
> explicitly enumerate processor profiles in the codecs syntax) does not
> apply internally to TTML documents or the actual processing of a TTML
> document, where the author may specify both CPs and PPs;
> > > > >
> > > > >
> > > > > I think that the simple TTML profile combination meets this, but I
> am not sure:
> > > > > > TTML1 already allows including multiple ttp:profile elements [1]
> and defines a hardwired combination method:
> > > > >
> > > > > can you confirm?
> > > > >
> > > > > yes, TTML1 does presently allow specifying multiple processor
> profiles (not content profiles) and uses a hardwired combination method
> that corresponds with the replace method defined in TTML2; however, this
> does not map to the process we discussed above with respect to CP
> combination and PP inference; so I think it won't be particularly useful;
> > > > >
> > > > > note that we can define the codecs syntax pre-filtering process in
> terms of TTML2 vocabulary and semantics, even when applied to TTML1 based
> documents (and profiles)
> > > > >
> > > > >
> > > > >
> > > > > On May 12, 2014, at 21:15 , Glenn Adams <glenn@skynav.com> wrote:
> > > > >
> > > > > >
> > > > > > On Mon, May 12, 2014 at 10:37 AM, David Singer <singer@apple.com>
> wrote:
> > > > > > Hi Glenn, comments and questions inline…
> > > > > >
> > > > > > On May 12, 2014, at 18:21 , Glenn Adams <glenn@skynav.com>
> wrote:
> > > > > >
> > > > > > >
> > > > > > > You say singular “the”, but a document can be conformant with
> more than one profile, can’t it?  How do I indicate that?
> > > > > > >
> > > > > > > In TTML1, it is not possible. However, we do have an open
> issue to add support to TTML2 to allow defining a profile by referencing
> multiple referenced profiles [1]. This mechanism may be used to refer to
> such a combined profile, where the profile designator makes reference to
> the definition of the combined profile, e.g., [using the mechanisms for
> defining processor profile]
> > > > > > >
> > > > > > > #1 referencing a combination processor profile
> > > > > >
> > > > > > Got it, but that doesn’t enable a content author, but a profile
> definer…
> > > > > >
> > > > > > > #2 referencing multiple processor profiles from ttp:profile
> attribute
> > > > > > >
> > > > > > > <tt ttp:profile="http://example.com/ttml/profile/A
> http://example.com/ttml/profile/B http://example.com/ttml/profile/C"
> ttp:profileCombination="leastRestrictive”>
> > > > > >
> > > > > > yes, that works
> > > > > >
> > > > > > > #3 embedding multiple processor profiles with ttp:profile
> element
> > > > > > >
> > > > > > > <tt ttp:profileCombination="leastRestrictive">
> > > > > > > <head>
> > > > > > > <ttp:profile use="http://example.com/ttml/profile/A"/>
> > > > > > > <ttp:profile use="http://example.com/ttml/profile/B"/>
> > > > > > > <ttp:profile use="http://example.com/ttml/profile/C"/>
> > > > > > > </head>
> > > > > > > ...
> > > > > > > </tt>
> > > > > >
> > > > > > that works too
> > > > > >
> > > > > > >
> > > > > > > note that TTML1 already allows this type of combination
> profile definition but defines a hard-wired (rather than author specified)
> combination method
> > > > > >
> > > > > > sorry, you lost me
> > > > > >
> > > > > > TTML1 already allows including multiple ttp:profile elements [1]
> and defines a hardwired combination method:
> > > > > >
> > > > > > If more than one ttp:profile element appears in a Document
> Instance, then all specified profiles apply simultaneously. In such a case,
> if some feature or some extension is specified by one profile to be used
> (mandatory and enabled) and by another profile to be required (mandatory)
> or optional (voluntary), then that feature or extension must be considered
> to be used (mandatory and enabled); if some feature or some extension is
> specified by one profile to be merely required (mandatory) and by another
> profile to be optional (voluntary), then that feature or extension must be
> considered to be required (mandatory).
> > > > > >
> > > > > > This is equivalent to specifying
> ttp:profileCombination="replace" as currently defined in TTML2 [2].
> > > > > >
> > > > > > [1]
> http://www.w3.org/TR/2013/REC-ttml1-20130924/#vocabulary-profiles
> > > > > > [2]
> https://dvcs.w3.org/hg/ttml/raw-file/tip/ttml2/spec/ttml2.html#parameter-attribute-profileCombination
> > > > > >
> > > > > >
> > > > > >
> > > > > > > However, we need to be clear about the purpose of using a
> profile here. It is *not* to specify conformance, at least from the way I
> see people discussing this matter. Rather, it is to specify what processor
> profile is required to process the document. In other words, what features
> must be supported by processor according to author's requirements. This is
> distinct from what profile(s) the document conforms to. For example, a
> document may conform to a profile in which a feature is optionally used,
> but then require that feature be supported in order for it to be processed.
> > > > > >
> > > > > > I am not sure I get the distinction.
> > > > > >
> > > > > > * This processor profile is required to process the document.
> > > > > >
> > > > > > If this can be rephrased as follows, then yes:
> > > > > >
> > > > > > "A processor must abort processing (unless overridden) when the
> effective processor profile specifies a feature/extension is required and
> the processor does not support that feature/extension."
> > > > > >
> > > > > > where "effective processor profile" is the result of combining
> all processor profiles referenced/defined by a document, and the method of
> combination is specified by ttp:profileCombination.
> > > > > >
> > > > > > * This document conforms to this profile.
> > > > > >
> > > > > > If this can be rephrased as follows, then yes:
> > > > > >
> > > > > > "A document declares it satisfies (or otherwise conforms with)
> the effective content profile. In addition, in the absence of declared
> processor profile, a processor may infer a processor profile from this
> effective content profile."
> > > > > >
> > > > > > where "effective content profile" is the result of combining all
> content profiles referenced/defined by a document, and the method of
> combination is specified by ttp:contentProfileCombination.
> > > > > >
> > > > > >
> > > > > > What is the practical difference here, for a client trying to
> decide “I support profiles X, Y, Z; can/should I process this document?”.
> > > > > >
> > > > > > To answer this question in general, the client must determine
> the effective processor profile by combining all
> referenced/included/inferred processor profiles. A content profile
> declaration would only apply in the absence of an explicitly referenced or
> included processor profile, i.e., only when it is necessary to infer a
> processor profile from the effective content profile.
> > > > > >
> > > > > > Isn’t it just a question of how conformance is defined (as a
> format question or as a processing question)?
> > > > > >
> > > > > > The definitions of content conformance and processor conformance
> are distinct.
> > > > > >
> > > > > > A document may (or not) conform to a content profile, a
> determination that can be made by a content validator/verifier using some
> set of specifications, including, e.g., schemas, custom verification tools,
> etc.
> > > > > >
> > > > > > A processor on the other hand doesn't, strictly speaking,
> conform to a processor profile. It conforms to general semantic
> requirements of TTML, e.g., the ability to compute a document's effective
> processor profile and test whether it (the processor) supports that
> profile's required features/extensions. Thus, it is better to ask whether a
> processor "supports" or "satisfies" a given processor profile, and not
> whether a processor "conforms" with a processor profile.
> > > > > >
> > > > > > Also, with respect to content profiles, it is better to ask
> whether a processor "supports a processor profile implied by (inferred
> from) a content profile".
> > > > > >
> > > > > > Why do these concepts of processor profile and content profile
> need to be distinct? It is best to give an example:
> > > > > >
> > > > > > Let's say that content profile C defines a feature F to be
> optional, meaning it may but need not be present. By itself this doesn't
> say anything about whether a processor must support F. Now, an author may
> decide to use F in some documents but not others, all of which conform to
> C. Now, let's say an author wants all processors that may process these
> documents to be able to correctly support F if it is present. So the author
> defines a processor profile P that specifies that support for F is
> required. Now this P is not the same as C, since the former says (support
> for) F is required, and the latter says (use of) F is optional.
> > > > > >
> > > > > > If the author were to only make reference to content profile C,
> and not reference a processor profile, then a processor profile would need
> to be inferred from C, in which case a determination must be made as to
> whether support for F is required or optional. Depending on how we define
> this default inference process, the inferred processor profile may or may
> not meet the original requirements of the author (that F must be supported
> by processor whether or not F is used in a document), in which case the
> author might need to specify the suggested ttp:inferProcessorProfile.
> > > > > >
> > > > > > So to summarize, the author has the following options (without
> considering an external codecs/profile hint):
> > > > > >
> > > > > > #1 declare only a processor profile;
> > > > > > #2 declare only a content profile,  in which case a processor
> profile is inferred at processing time;
> > > > > > #3 declare both processor and content profiles;
> > > > > > #4 declare neither processor nor content profile, in which case
> a default processor profile is determined by the document interchange
> context, or, if no context or the context doesn't specify a default, then
> choose a default based on the type of processing (transform vs
> presentation) and the version of TTML that applies;
> > > > > >
> > > > > > When processing on client, the processor looks only at the
> processor profile, unless it is performing validation processing, in which
> case it would look at the content profile. If there is no declared content
> profile, then no validation is possible, i.e., content profile is never
> inferred from processor profile, etc.
> > > > > >
> > > > > >
> > > > > > * Any one of these processor profiles are required to process
> the document.
> > > > > > * This document conforms to these profiles.
> > > > > >
> > > > > > and these are the same with higher cardinality.
> > > > > >
> > > > > > > The only utility of a statement of content profile conformance
> is to (1) perform validation processing, and/or (2) to imply a processor
> profile in the absence of an explicit declaration of processor profile.
> From what I can tell in this discussion, folks are primarily thinking about
> the second of these uses of a content profile conformance declaration.
> Furthermore, it appears that, in regard to discussing references to
> multiple content profiles, folks are assuming that a disjunction combinator
> applies; namely, that the least restrictive expression of any given feature
> usage requirement would apply to creating a corresponding processor support
> requirement.
> > > > > > >
> > > > > > > For example, say we have three content profiles P, Q, and R
> that define one feature F, where P makes F prohibited, Q makes F optional,
> and R makes F required.
> > > > > >
> > > > > > Then it’s only possible to make a document that conforms to 2 of
> them (F is absent: PQ;  F is present; QR).
> > > > > >
> > > > > > "conforms simultaneously to 2 of them"
> > > > > >
> > > > > >
> > > > > > > If we then had an expression of conformance (where
> "leastRestrictive" profile is similar to an an "or" or "union" operation),
> e.g.,
> > > > > > >
> > > > > > > <tt ttp:contentProfile="P Q R"
> ttp:contentProfileCombination="leastRestrictive”/>
> > > > > >
> > > > > > No, stop, we’re not asking that.
> > > > > >
> > > > > > <tt ttp:contentProfile="P Q R"
> ttp:contentProfileCombination="leastRestrictive”/>
> > > > > >
> > > > > > would mean
> > > > > > a) everything in the document is either permitted by P Q and R
> (or is ignorable — permitted ignorable stuff under P Q and R)
> > > > > >
> > > > > > actually, leastRestrictive is defined to mean that when merging
> values component-wise for a given feature F (or extension E), then choose
> the least restrictive value (optional > required > prohibited);
> > > > > >
> > > > > > so for the example, the combination of P, Q, R would be F:
> optional; if said document does use F, then it conforms to the combination,
> but not to P; if said document does not use F, then it conforms to the
> combination, but not to R
> > > > > >
> > > > > > in contrast ttp:contentProfileCombination="mostRestrictive”
> means choose most restrictive (prohibited > required > optional);
> > > > > >
> > > > > > so for the example, the combination of P, Q, R would be F:
> prohibited; if said document does use F, then it does not conform to the
> combination, but does conform individually to Q and R; if said document
> does not use F, then it conforms to the combination, but not to R
> individually;
> > > > > >
> > > > > > b) there is nothing in the document contrary to any of P Q or R
> > > > > >
> > > > > > it is up to the author to determine how they want to declare
> conformance; in this (admittedly) complex example, the author has declared
> conformance with two mutually conflicting content profiles, P and R; the
> combination methods are defined to produce reproducible results, which they
> do accomplish;
> > > > > >
> > > > > >
> > > > > > c) if you implement at least one of P Q or R, then you can
> process the document, ignoring stuff that is not in the profile(s) you
> support, and the result is OK by the content author.
> > > > > >
> > > > > > in the above example, the author has only declared a (set of)
> content profile(s), so it will be necessary to infer a processor profile
> from the effective content profile, i.e., the content profile produced by
> performing the content profile combination method on the declared content
> profiles;
> > > > > >
> > > > > > if we alter our example and say that P, Q, and R are not
> pair-wise mutually conflicting, and ttp:inferProcessProfile is not
> specified, in which case it would default to 'loose', then we would end up
> with an effective processor profile that requires support for a feature F
> only if all of P, Q, and R require support for F, otherwise support for F
> is optional;
> > > > > >
> > > > > > if ttp:contentProfileCombination were specified as
> 'mostRestrictive', then the same configuration would require support for a
> feature F if any of P, Q, or R require support for F, otherwise support for
> F is optional;
> > > > > >
> > > > > >
> > > > > > >
> > > > > > > I understand this desire. However, it is also clear that we
> are not going to define a calculus for use in a codecs parameter that is
> equivalent (in terms of expressibility) with the formal definition
> mechanism for processor and content profiles in TTML2.
> > > > > >
> > > > > > I don’t see any calculus required.
> > > > > >
> > > > > > If we define the syntax P+Q+R as a suffix of codecs (following
> stpp.ttml, e.g., "stpp.ttml.P+Q+R") to mean:
> > > > > >       • P, Q, and R are identifiers that map to pair-wise
> non-conflicting content profiles;
> > > > > >       • determine an effective processor profile as follows:
> > > > > >               • compute effective content profile ECP by
> combining P, Q, and R using content profile combination method
> "leastRestrictive"
> > > > > >               • infer an effective processor profile EPP from
> ECP using the "loose" inference method
> > > > > >       • if EPP contains a required feature/extension that is not
> supported by the processor, then do not fetch resource
> > > > > >       • otherwise, fetch resource and commence processing of
> profile declarations contained in resource (in tt:tt and tt:head elements);
> > > > > >       • if processing of profile declarations contained in
> resource result in processing being aborted, then do not fetch remainder of
> resource and continue to next candidate resource
> > > > > > Using this method, the codecs parameter could serve as a
> pre-filter on fetching the resource and the the full TTML profile
> processing semantics (based on declarations found in the resource) could
> occur next. So there are two opportunities to reject and pass over a
> candidate resource in a list of resources: once using the codecs parameter,
> and once using the TTML resource's profile declarations.
> > > > > >
> > > > > > A conservative client can ignore the codecs parameter and fetch
> each resource to perform the TTML specified processor profile semantics; a
> liberal client can perform the codecs base pre-filtering step and reject
> fetches without performing the TTML specified profile processing.
> > > > > >
> > > > > > The above procedure is a "limited calculus" that would appear to
> expose the desirable filtering while not exposing the need to fetch or
> perform the full TTML profile computations (in the pre-fetch state).
> > > > > >
> > > > > > Look, we have a number of TTML profiles already with significant
> overlap.  If I write a document that stays in that intersection, someone
> implementing EBU TT, SMPTE TT, W3C DFXP, and so on, should all be fine.  I
> suspect many simple cases will fall into this intersection.  Documents
> ought to be able to say so.
> > > > > >
> > > > > > I agree they should be able to do this internally, and they
> certainly will be able to do so in a fuller manner in the TTML2 context.
> Not so much in TTML1.
> > > > > >
> > > > > > Defining the codecs parameter and a higher level (fetch
> filtering) proposal such as described above should be able to handle this
> both for existing TTML1 and new TTML2 resources.
> > > > > >
> > > > > >
> > > > > >
> > > > > > David Singer
> > > > > > Manager, Software Standards, Apple Inc.
> > > > > >
> > > > > >
> > > > >
> > > > > David Singer
> > > > > Manager, Software Standards, Apple Inc.
> > > > >
> > > > >
> > > >
> > > > David Singer
> > > > Manager, Software Standards, Apple Inc.
> > > >
> > > >
> > >
> > > David Singer
> > > Manager, Software Standards, Apple Inc.
> > >
> > >
> >
> > David Singer
> > Manager, Software Standards, Apple Inc.
> >
> >
>
> David Singer
> Manager, Software Standards, Apple Inc.
>
>
Received on Wednesday, 14 May 2014 17:15:45 UTC

This archive was generated by hypermail 2.3.1 : Thursday, 5 October 2017 18:24:15 UTC