- From: Aaron Colwell <acolwell@google.com>
- Date: Wed, 18 Jul 2012 14:19:19 -0700
- To: Mark Watson <watsonm@netflix.com>
- Cc: "public-html-media@w3.org" <public-html-media@w3.org>
- Message-ID: <CAA0c1bDtKWuKUvXj3K0EhcLwcdNkGB1rPszGCmRJbduRXfaBQg@mail.gmail.com>
So I'm starting to waver on my support for the pushTimestampOffset() & popTimestampOffset() mechanism and leaning towards the simple timestampOffset attribute again. Here is why: 1. The offset stack can be implemented in JavaScript. I'm not really seeing an advantage for putting this in the UA. 2. Mark's example looks like a common use case, but it only pushes things onto the stack. This is essentially equivalent to updating a timestampOffset attribute. 3. If the application isn't aware of the actual internal timestamps of a media segment, it could always append it to a "scratch" SourceBuffer on a different MediaSource object and discover the start timestamp by calling SourceBuffer.buffered. Am I missing something key here? Can someone provide other examples that show why it is advantageous for the UA to maintain the stack? Aaron On Thu, Jul 12, 2012 at 4:45 PM, Aaron Colwell <acolwell@google.com> wrote: > 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 Wednesday, 18 July 2012 21:19:50 UTC