On 01/30/2017 08:05 PM, Martin Storsjö wrote:
> On Mon, 30 Jan 2017, Anton Schubert wrote:
> 
>> On 01/27/2017 09:04 PM, Martin Storsjö wrote:
>>>
>>> But I started wondering, is there any actual use for this, when we 
>>> explicitly list all the segments (either as individual segment filenames or 
>>> via the template). As far as I can see, this is mostly necessary if you 
>>> implicitly calculate the live edge based on availabilityStartTime and the 
>>> segment length. So is there actually any gain from using it in our 
>>> configuration?
>>
>> Yes, because the players will always try to calculate the live-edge, as they 
>> don't know
>> whether the segment they are requesting is available yet.
> 
> Yes, I know that you need to do this if you use the implicit mechanism where 
> you don't list the individual segments. But you can also list them 
> explicitly, which we do by default.
> 
> There's (at least) three different ways of indicating the available segments:
> 
> 1) Via <SegmentList> and <SegmentURL>, explicitly listing the segments 
> (-use_template 0)
> 
> 2) Via <SegmentTemplate> and <SegmentTimeline>, explicitly describing all 
> individual segments via the timeline. (This is the default, parameters 
> -use_template 1 -use_timeline 1.)
> 
> 3) Impcliitly, via <SegmentTemplate> and via availabilityStartTime. In this 
> case, I can understand that the UTCTiming element is needed to actually sync 
> clocks; otherwise the availabilityStartTime is hard to interpret correctly.
> 
> Now when I wrote the previous mail, I didn't even remember that we did 
> support case 3) - sorry about that. In that case, I do see that it is needed.
> 
> My question is, for cases 1) and 2), the way you guys interpret the spec, 
> should the player ignore the actual list of segments (via <SegmentURL> or 
> <SegmentTimeline>) and use availabilityStartTime to guess which ones really 
> are available, or can the player just assume that all explicitly listed 
> segments really are available?

As I interpret the spec it assumes that the player calculates the time at which 
the segments become available and
doesn't just assume them as available.

In Annex A.3.1 it is mentioned that "Segments are available at its assigned URL 
if at wall-clock time NOW the Segment availability start time is
smaller than or equal to NOW and the Segment availability end time is larger 
than or equal to NOW."

So the player will need to compare it's clock time with the segment 
availability start times it gets from
the segmentlist/segmenttemplate.

>> they don't know whether the availabilityStartTime is ok for
>> synchronization.
> 
>> That's also why Shaka-player now gives a warning if there is no UTCTiming 
>> tag present
>> in live-manifests.
>> https://github.com/google/shaka-player/commit/1fb78929c1551a3e4f1a07323ce67ee622503273
> 
> Ok, so I can see that Shaka warns if the tag isn't available - that should be 
> reason enough to add it. This was kinda what I wanted to hear to understand 
> the patch better.
> 
> I'm still quite interested to know, though, does Shaka actually use 
> availabilityStartTime in cases 1) and 2) above?

Shaka-player always uses availabilityStartTime to calculate it's live-edge for
live-manifests. It's segmentAvailabilityEnd and seekRangeEnd are determined 
from that.

Best, Anton

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to