| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
| |
This simplifies the code but also removes a bug with tracking of the remaining
size for the initial subfragment: we were not considering the size between the
index and the start of the first moof here.
https://bugzilla.gnome.org/show_bug.cgi?id=764684
|
|
|
|
|
|
|
| |
GstAdapter does not guarantee to pass through all the offsets, we have to keep
track of it ourselves.
https://bugzilla.gnome.org/show_bug.cgi?id=764684
|
|
|
|
|
|
|
|
|
| |
this directly
This allows subclasses to have more control and especially ensure that they
push data downstream with the correct offsets.
https://bugzilla.gnome.org/show_bug.cgi?id=764684
|
|
|
|
|
|
|
| |
The spec says it is xs:anyURI and leading and trailing whitespace
are to be ignored
https://bugzilla.gnome.org/show_bug.cgi?id=758064
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A realtime clock is used in many places, such as deciding which
fragment to select at start up and deciding how long to sleep
before a fragment becomes available. For example dashdemux needs
sample the client's estimate of UTC when selecting where to start
in a live DASH stream.
The problem with dashdemux calculating the client's idea of UTC is
that it makes it difficult to create unit tests, because the passage
of time is a factor in the test.
This commit changes dashdemux and adaptivedemux to use the
GstSystemClock, so that a unit test can replace the system clock when
it needs to be able to control the clock.
This commit makes no change to the behaviour under normal usage, as
GstSystemClock is based upon the system time.
https://bugzilla.gnome.org/show_bug.cgi?id=762147
|
|
|
|
|
|
| |
5.3.2.1 in the spec.
https://bugzilla.gnome.org/show_bug.cgi?id=751792
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=763081
|
|
|
|
|
|
| |
Otherwise the chunk selected isn't matched to the index and
the timing will be different, causing it to actually start
from a different position
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
date string
The code in the gst_dash_demux_parse_http_xsdate() was trying to
handle the case where the string is not null terminated by resizing
the buffer and appending a zero byte. This does not work if the buffer
is exactly the length of the string because the gst_buffer_resize()
function does not re-allocate the buffer, it just changes its size.
If a buffer is passed to gst_dash_demux_parse_http_xsdate() that is
exactly the length of the string, the function fails with an assert
failure in gst_buffer_resize().
https://bugzilla.gnome.org/show_bug.cgi?id=762148
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=752374
|
|
|
|
|
|
| |
On parsing error, free the mpd client object
https://bugzilla.gnome.org/show_bug.cgi?id=760120
|
|
|
|
|
|
|
| |
new_client local variable was not freed in case of errors.
Also, the buffer is not unmapped.
https://bugzilla.gnome.org/show_bug.cgi?id=760120
|
|
|
|
|
|
|
|
|
|
|
|
| |
gst_mpd_client_get_next_segment_availability_start_time
The function actually returns the segment availability start time (as defined by the standard).
That is at the end of the segment, but it is called availability start time.
Availability end time is something else (the time when the segment is no longer
available on the server). The function name was misleading.
https://bugzilla.gnome.org/show_bug.cgi?id=757655
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=757655
|
|
|
|
|
|
|
| |
Handle snap seeking at the stream_seek method and let superclass
do the rest to support snap seeking
https://bugzilla.gnome.org/show_bug.cgi?id=759158
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Adaptive demuxers need to start downloading from specific positions
(fragments) for every stream, this means that all streams can snap-seek
to a different position when requested. Snap seeking in this case will
be done in 2 steps:
1) do the snap seeking on the pad that received the seek event and
get the final position
2) use this position to do a regular seek on the other streams to
make sure they all start from the same position
More arguments were added to the stream_seek function, allowing better control
of how seeking is done. Knowing the flags and the playback direction allows
subclasses to handle snap-seeking.
And also adds a new return parameter to inform of the final
selected seeking position that is used to align the other streams.
https://bugzilla.gnome.org/show_bug.cgi?id=759158
|
|
|
|
|
| |
If the seek doesn't set the start/stop position, no need to
reposition the download index.
|
|
|
|
|
| |
Instead of using the segment values, use the parameter
requested in the seeking argument
|
|
|
|
|
|
| |
of the RepresentationIndex
https://bugzilla.gnome.org/show_bug.cgi?id=760936
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=757602
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
for a live stream
For a live mpd, if availabilityStartTime is missing, adaptive demux asserts
with: Unexpected critical/warning: gst_date_time_to_g_date_time: assertion
'datetime != NULL' failed.
This patch improves the error message to:
Unexpected critical/warning: gst_mpd_client_seek_to_time: assertion
'client->mpd_node->availabilityStartTime != NULL' failed
https://bugzilla.gnome.org/show_bug.cgi?id=757602
|
|
|
|
|
|
|
|
|
|
|
|
| |
Handling the ghostpad and its internal pad was causing more issues
than helping because of their coupled activation/deactivation
actions.
As we have to install custom chain,event and query functions it is
better to use a floating sink pad internally in the demuxer and just
use those pad functions to push through a standard pad in the demuxer
https://bugzilla.gnome.org/show_bug.cgi?id=757951
|
|
|
|
|
|
|
| |
sscanf has removed all spaces when it has constructed zone string. There is
no need to search for leading spaces.
https://bugzilla.gnome.org/show_bug.cgi?id=759743
|
|
|
|
|
|
|
|
|
|
| |
clock compensation
Convert year from 2 digits to 4 digits in gst_dash_demux_parse_http_head
https://bugzilla.gnome.org/show_bug.cgi?id=759743
Also updated references to Rfc822 to Rfc5322
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
gst_mpdparser_parse_utctiming_node does not validate the parsed values completely. The following scenarios are incorrectly accepted:
- elements with no schemeIdUri property should be rejected
- elements with unrecognized UTCTiming scheme should be rejected
- elements with empty values should be rejected
The last one triggers a division by 0 in gst_dash_demux_poll_clock_drift:
clock_drift->selected_url = clock_drift->selected_url % g_strv_length (urls);
because it urls is a valid pointer to an empty array.
https://bugzilla.gnome.org/show_bug.cgi?id=759547
|
|
|
|
|
|
|
| |
There are no threads waiting on clock_cond. It is just initialised and
signalled. It should be removed.
https://bugzilla.gnome.org/show_bug.cgi?id=759537
|
|
|
|
|
|
| |
Clock compensation is calculated in usec but is added to a GstClockTime value.
https://bugzilla.gnome.org/show_bug.cgi?id=759534
|
|
|
|
|
|
|
|
| |
Dashdemux has set the width and height information from MPD manifest.
Some embedded devices which are not insufficient H/W resources need more information such as framerate
to assign H/W resources. So I suggested that dashdemux also needs to set the framerate information from MDP manifest.
https://bugzilla.gnome.org/show_bug.cgi?id=758515
|
|
|
|
|
|
|
| |
According to the spec, they can be in AdaptationSet, Representation and SubRepresentation.
So They should be in RepresentationBase.
https://bugzilla.gnome.org/show_bug.cgi?id=758515
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=758593
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=758410
|
|
|
|
|
|
|
| |
Set it for all types of segment lists (templates / lists / base)
and not only for templates.
https://bugzilla.gnome.org/show_bug.cgi?id=751529
|
|
|
|
|
|
| |
Add binary search to optimize in stream_sidx_seek.
https://bugzilla.gnome.org/show_bug.cgi?id=749653
|
|
|
|
|
|
| |
gst_mpdparser_find_segment_by_index
https://bugzilla.gnome.org/show_bug.cgi?id=758233
|
|
|
|
| |
g_free() is NULL-safe
|
|
|
|
|
|
| |
Used by http://www.bok.net/dash/tears_of_steel/cleartext/stream.mpd
https://bugzilla.gnome.org/show_bug.cgi?id=757903
|
|
|
|
|
|
| |
gst_mpd_client_get_last_fragment_timestamp_end
https://bugzilla.gnome.org/show_bug.cgi?id=758188
|
|
|
|
|
|
|
|
|
|
|
| |
The stream->cur_seg_template is set to the lowest available segment
template (representation or adaptation or period, in this order).
Because the template elements are inherited, the lowest template will
have all the elements the parents had, so there is no need to check the
parent for an element that is not found in the child (eg initialisation
or index).
https://bugzilla.gnome.org/show_bug.cgi?id=752714
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=752336
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=752336
|
|
|
|
|
|
|
| |
Free new_mpd, allocated with g_slice_new(), before going out of scope in
goto error.
CID 1338050
|
|
|
|
|
|
|
|
|
|
| |
The standard does not seem to make any particular explicit not
implicit reference to the signedness of durations, and the code
does not rely on such, nor on the negativity of the -1 value
that's used as a placeholder when a duration property is not
present in the XML.
https://bugzilla.gnome.org/show_bug.cgi?id=750847
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=752340
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=753890
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
lower SegmentList
According to the standard:
"SegmentBase, SegmentTemplate and SegmentList shall inherit
attributes and elements from the same element on a higher level.
If the same attribute or element is present on both levels,
the one on the lower level shall take precedence over the one
on the higher level."
gst_mpdparser_parse_segment_list_node will now discard any inherited
segment URLs if the parsed element defines some too.
https://bugzilla.gnome.org/show_bug.cgi?id=751832
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
If MPD@suggestedPresentationDelay is not present in the manifest,
dashdemux selects the fragment closest to the most recently generated
fragment. This causes a playback issue because this choice does not allow
the DASH client to build up any buffer of downloaded fragments without
pausing playback. This is because by definition new fragments appear on
the server in real-time (e.g. if segment duration is 4 seconds, a new
fragment will appear on the server every 4 seconds). If the starting
playback position was n*segmentDuration seconds behind "now", the DASH
client could download up to 'n' fragments faster than realtime before it
reached the point where it needed to wait for fragments to appear on the
server.
The MPD@suggestedPresentationDelay attribute allows a content publisher
to provide a suggested starting position that is behind the current
"live" position.
If the MPD@suggestedPresentationDelay attribute is not present, provide
a suitable default value as a property of the dashdemux element. To
allow the default presentation delay to be specified either using
fragments or seconds, the property is a string that contains a number
and a unit (e.g. "10 seconds", "4 fragments", "2500ms").
|
|
|
|
|
|
|
| |
Improved the detection of stream's language if the AdaptationSet
contains more than 1 ContentComponent
https://bugzilla.gnome.org/show_bug.cgi?id=752367
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=751735
|
|
|
|
|
| |
Added support for %d in template identifier.
Added testcases for %d, %3d, %0-4d identifier formats.
|
|
|
|
|
|
|
|
| |
Corrected the parsing of a segment template string.
Added unit tests to test the segment template parsing.
All reported problems are now correctly handled.
https://bugzilla.gnome.org/show_bug.cgi?id=751735
|