Coder Social home page Coder Social logo

aomediacodec / id3-emsg Goto Github PK

View Code? Open in Web Editor NEW
17.0 17.0 9.0 328 KB

Carriage of ID3 Timed Metadata in the Common Media Application Format

Home Page: https://aomediacodec.github.io/id3-emsg/

License: Other

Ruby 6.11% HTML 16.81% CSS 48.18% JavaScript 3.06% Sass 25.84%

id3-emsg's People

Contributors

cconcolato avatar chrisn avatar dependabot[bot] avatar johnsim avatar krasimirkolarov avatar louquillio avatar sergiofagostinho avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

id3-emsg's Issues

emsg duration information is missing

The specification uses 'emsg' to carry id3 but not all fields are defined, especially those related to timing. I outline my questions related to the timing with suggested answers.

what should the duration of the emsg version 1 be ?
=> if emsg is send with each fragment it may be the fragment duration in each case
=> in case the duration is just the time for which the metadata applies this should be mentioned
=> if the duration is indefenete/unknown this should be mentioned and het duration must be set to 0xFFFFFFFF

Consider defining brand or urn for signaling compliance to this specification

The specification contains (for now) one (duplicate) 'must' statement, and maybe more if #17 is approved. In order to validate these statements in a validation tool, the tool would need to know either from the bitstream or from the manifest that the bitstream claims to be compliant. This could also be useful to a client to know before downloading the stream that it contains an ID3 stream. This is typically done via a brand, e.g. aid3 (meaning AOM id3), or via a urn (as used in CMAF to signal compliance to 'single initialization constraints' using urn:mpeg:cmaf:siss) which could be urn:aomedia:cmaf:id3.

The title of the spec is too broad

The current title of the spec is:

Timed Metadata in the Common Media Application Format (CMAF)

This is too broad. AOM cannot claim to define all timed metadata in CMAF. This is only applicable to ID3. I suggest renaming it to:

Carriage of ID3 Timed Metadata in the Common Media Application Format (CMAF)

Does introduction need to cite company names?

The introduction cites company names. This is not really appropriate in a specification. I suggest removing the sentence:

Companies in this ecosystem include Disney, Sony, and Nielsen.

emsg presentation_time usage is undefined

what should the constraints on presentation time of the emsg version 1 be ?

=> is it allowed to send metadata that applies to a later or earlier fragment ?

=> I would recommend the presentation time to be the earliest presentation time of the fragment, or at least to overlap with the fragment it is send with.
=> if this is not the case it should be explicitly mentioned what the presentation time could be in the specification

id3-emsg and ISO/IEC 23001-18 timed metadata tracks

I hope this is the right forum for this conversation.

There is a section in the specification describing the carriage of ID3 tags in DASHEventMessageBoxes. I want to suggest adding a section to the specification describing the carriage of ID3 tags in EventMessageInstanceBoxes. This would standardize the carriage of ID3 tags in ISO/IEC 23001-18 event message tracks.

This new section (proposed naming: “ID3 Metadata in an Event Message Instance Box”) would be very similar to the existing “ID3 Metadata in an Event Message Box” section. The one difference I want to propose is that the event_duration for a durationless ID3 tag should be 0 in an event message instance box (‘emib’). The 0xFFFFFFFF value works well in ‘emsg’ boxes, but doesn’t generalize well to ISO/IEC 23001-18 event message tracks.

Specifically, the ISO/IEC 23001-18 specification introduces the notion of an active interval for each event. Section 7.4 of the specification states:

Each EventMessageInstanceBox documents an event message which has or will have an active interval. If the media presentation time of the containing sample is T, the active interval is defined to run: from (T + presentation_time_delta) to, but not including (T + presentation_time_delta + event_duration).

Each event has an event duration, represented by the event_duration field. Each sample in the track also has a duration D.

Each sample shall contain all events that have an active interval that overlaps the sample's time interval [T, T+D).

The problem is that an event_duration of 0xFFFFFFFF will result in the active interval for the event being 0xFFFFFFFF ticks long, which is not what we want for a durationless ID3 tag.

If there is support for this proposal, I’m happy to put up a PR. I’m also interested in alternative suggestions. I’m also interested in any concerns about client-side handling of a 0 tick event.

Clarify signaling section

Signaling added in #26 could be confusing. DASH §5.10.3.3.1 mentions that "Event message boxes with scheme identifier and value pairs that are not defined in the MPD should not be present. If a DASH Client detects an event message box with a scheme that is not defined in MPD, the client is expected to ignore it." Some implementation might therefore prefer using "https://aomedia.org/emsg/ID3" rather than "urn:aomedia:cmaf:id3" for schemeIdUri to signal ID3 in a DASH manifest.

Missing normative statements

The spec only contains one (duplicate) 'must' statement, about the use of v1 emsg boxes. In order to make testing clearer, 'must' statements should be used to mandate the use of the defined scheme id uri and the use of the ID3 v2.4 in the payload.

emsg version 1 and 0

A question from our team, why is only version 1 supported, some devices may only support version 0 as this was introduced earlier.

Is there any chance of also supporting version 0 for broader compatibility ?

Overview section should be simplified

The first sentence of the overview is misleading. Using event message boxes is not the only way to have timed metadata in CMAF. I suggest deleting the sentence.

The second sentence is a duplicate of the sentence in the next section. I suggest deleting it too.

DASH not mentioned as a possible use case

The current specification, although it cites the DASH specification normatively, does not indicate that it is intended (I believe) to be applicable to DASH streaming as well. I would suggest adding the following sentence (or similar) at the end of the introduction:

CMAF-compatible fragmented MP4 can also be used in DASH. The elements defined in this specification may also be used with DASH.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.