- From: Aaron Colwell <acolwell@google.com>
- Date: Thu, 12 Jul 2012 16:45:20 -0700
- To: Mark Watson <watsonm@netflix.com>
- Cc: "public-html-media@w3.org" <public-html-media@w3.org>
- Message-ID: <CAA0c1bByurN-PaeLoBQuuwq_pLC=Txyyb72MhDA=QBjptSCTkg@mail.gmail.com>
Ok. This seems reasonable to me. Question 2: I was just trying to determine if we wanted to provide a way for the app to "rediscover" that an offset is currently active in case it wasn't keeping track. Perhaps: // Number levels of timestampOffset (ie how many popTimestampOffset() I need to clear them all) readonly attribute int timestampOffsetDepth; or // Indicates at least one timestamp offset is on the offset stack. readonly attribute bool usingTimestampOffset; I'm not sure how critical this is, but I could definitely see people getting confused if they forgot that they called pushTimestampOffset() and then had no way to detect that an offset is still being applied. Question 4: Yes I think that an offset should stay in place across multiple segments. I was thinking about events that would fire when push & pop actions actually become active. For example if you pushed an offset while in the middle of appending a media segment, it wouldn't take effect until the end of that segment. Once the segment ended a 'timestampoffsetstart' event would fire since that is when the new offset would start being applied. If a pop happens mid-segment then a 'timestampoffsetend' would fire when the current segment has been completely appended. I'm not sure whether these events are really that useful or not, but I just wanted to ask the question to see what people thought. Aaron On Thu, Jul 12, 2012 at 2:33 PM, Mark Watson <watsonm@netflix.com> wrote: > > On Jul 12, 2012, at 1:59 PM, Mark Watson wrote: > > > On Jul 12, 2012, at 12:58 PM, Aaron Colwell wrote: > > Yes. The idea was to prevent the app from having to worry about the > internal timestamp and only worry about the presentation times. I think > this API needs some polishing though. > > Here are some outstanding questions I have: > > 1. nextSegmentStartTime() & clearTimestampOffset() names are a little > clunky and don't seem related. Alternate name ideas anyone? > > > pushTimestampOffset() and popTimestampOffset() ? > > > 2. How does the app determine that an offset is currently being applied? > > > Does it need too ? Since the app is the only one which can establish one. > > peekTimestampOffset() ? > > > 3. Should we model this as offset stack? I think Adrian suggested this > during the last Media Source telecom. > > > Yes. > > > 4. Should events be defined to signal when an offset starts/stops being > applied? Effectively this marks the beginning of the next media segment > after either method is called.' > > > Hmm. I assumed the offset persists across multiple media segments until > you cancel it. > > You may, for example, have 200 segments of main media content that start > at timestamps 0, 2, 3, … 398s. You feed in 100 of them without setting an > offset. Then you have 15 ad segments with timestamps 0, … 28s and before > feeding these in you call pushTimestampOffset( 200s ). Once finished with > these you have to call popTimestampOffset() and pushTimestampOffset( 30 ) > before feeding in the rest of the media segments from the main content. > > > Oops, I mean pushTimestampOffset( 230s ) for the last one here as we are > specifying the actual source buffer time where we want the next segment to > appear, not the offset between internal media time and source buffer time. > > > > 5. Does anyone have an alternate proposal for applying offsets? > > Aaron > > On Wed, Jul 11, 2012 at 9:26 AM, Mark Watson <watsonm@netflix.com> wrote: > >> Actually, I liked the nextSegmentStartTime (option 3). That is, >> assuming I remember correctly that what it does: establish a mapping from >> internal media time to source buffer time such that the next segment is >> placed at the provided source buffer time. (strictly, the mapping is >> established when the next segment arrives). >> >> This obviates the need for the app to understand much about the >> internal media time. >> >> ...Mark >> >> Sent from my iPhone >> >> On Jul 10, 2012, at 11:50 AM, "Aaron Colwell" <acolwell@google.com> >> wrote: >> >> Hi All, >> >> I'm going to try to summarize what I've read on this thread to see if I >> understand everyone's position >> >> 1. Eric, Steve, & Kevin all support the sourceTimestampOffset() >> signature >> 2. Mark doesn't have a strong preference either way, but is leaning >> towards sourceTimestampMapping() because it is more explicit about the >> application needing to know about the internal timestamps in the media >> segments and how they should map to the presentation timeline. >> 3. The alternative nextSegmentStartTime()/clearTimestampOffset() >> suggestion mentioned at the bottom of >> http://lists.w3.org/Archives/Public/public-html-media/2012Jun/0095.html got >> no votes >> 4. Duncan feels this mechanism isn't sufficient to address ad-insertion >> use cases he cares about. I just started an Ad Insertion thread<http://lists.w3.org/Archives/Public/public-html-media/2012Jul/0033.html> to >> continue the discussion. This may require adding a new feature. >> >> Let me know if this is correct or if I've missed something. >> >> Thanks, >> Aaron >> >> >> On Fri, Jun 15, 2012 at 3:40 PM, Aaron Colwell <acolwell@google.com>wrote: >> >>> Hi, >>> >>> Bug 17004 <https://www.w3.org/Bugs/Public/show_bug.cgi?id=17004> proposes >>> a mechanism for adjusting timestamps inside media segments. This enables >>> seamlessly splicing content together that doesn't originally exist on a >>> common presentation timeline. Inserting advertisements into content is the >>> most straight forward use case. There has been some useful discussion in >>> the bug comments, but we haven't decided on which method signature to use >>> for specifying the timestamp adjustments. >>> >>> Here are the proposed signatures at this point: >>> >>> void sourceTimestampMapping(in double presentationTimestamp, in double >>> segmentTimestamp) >>> -- or -- >>> void sourceTimestampOffset(in double timestampOffset) >>> >>> sourceTimestampMapping() just provides a way to say, "I want this >>> timestamp in the segment to map to this presentation time." >>> sourceTimestampOffset() is basically just saying, "Add this offset to >>> any timestamp in the segment to get the desired presentation time." >>> >>> Fundamentally they do the exact same thing, but I'm looking for input >>> on which option people feel more comfortable with. >>> >>> Which do you prefer? >>> Are you ok with the semantics outlined in the bug description<https://www.w3.org/Bugs/Public/show_bug.cgi?id=17004#c0> >>> ? >>> >>> Aaron >>> >>> >> > > >
Received on Thursday, 12 July 2012 23:45:50 UTC