Closed haudiobe closed 3 years ago
It comes from section 3.1.2 of 14496-14, which says "set to 0 as stored; when built into a stream, the lower 16 bits of the TrackID are used". It may be that the person who added it to FFMPEG misread that spec and used the track ID, but when sored in the file format it is supposed to be 0. So if you removed the restriction from CMAF, it would still be wrong unless it was also changed in 14496-14.
Although it probably doesn't affect clients, it seems helpful to have CMAF point out the requirement, otherwise it's hard to find out what value should be put here.
We recommend not making such constraints on old descriptors relating to transport streams, we would be happy if CMAF could not overly constrain to ES_ID is zero as in the end it is neither used nor does it have meaning for players. MPEG-4 part 14 should be enough.
Setting the track_id as done by ffmpeg and also mentioned by part-14 is probably what many implementation do and will not break anything either. We recommend removing this constraint from CMAF and from the validator and focus on issues that matter for CMAF.
An advantage of this is not breaking existing content and implementations, such as this ffmpeg implementation
Answer from JB: They may be using ffmpeg 4.2 or some old snapshot. We fixed those missing in 16fa513392 when doing the Dash-ULL work :) - we will check this!
I'd still be reluctant to completely remove this. Even though it's unlikely to break client implementations, it's useful to have a reference as to what to do properly. Either:
I prefer applying the second option, and maybe the 3rd option too, although the 3rd option could unnecessarily give too much importance to MPEG-4 Systems.
We seem to have an agreement here to replace a shall with a should.
This has been implemented in the current amendment and the group decided to close this issue.
In M54520, content was generated with FFMPEG. The content was verified with the conformance software for the second edition of CMAF.
One observed error is documented in clause 3.3.2: "CMAF check violated: Section 10.3.4.2.3. "fields of the ES_Desciptor SHALL be set to the following values: ES_ID = 0.", but found 1"
Clause 10.3.4.2.3 is provided below.
10.3.4.2.3 ES_Descriptor The syntax and values for ES_Descriptor shall conform to ISO/IEC 14496-1, and the fields of the ES_Descriptor shall be set to the following values. — ES_ID = 0 — streamDependenceFlag = 0 — URL_Flag = 0 — OCRstreamFlag = 0 — streamPriority = 0 — decConfigDescr = DecoderConfigDescriptor — slConfigDescr = SLConfigDescriptor, predefined type 2 Descriptors other than those specified in subclause 10.3.4.2.4 through subclause 10.3.4.2.6 shall not be used.
Question for discussion: Is it an FFMPEG problem or is it an overrestrictive specification? Please comment