[Bug 763454] New: Fix the bug when inheriting segmentbase, segmentTemplate or segmentList from grandparent
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Thu Mar 10 11:53:41 UTC 2016
https://bugzilla.gnome.org/show_bug.cgi?id=763454
Bug ID: 763454
Summary: Fix the bug when inheriting segmentbase,
segmentTemplate or segmentList from grandparent
Classification: Platform
Product: GStreamer
Version: git master
OS: Linux
Status: NEW
Severity: normal
Priority: Normal
Component: gst-plugins-bad
Assignee: gstreamer-bugs at lists.freedesktop.org
Reporter: r97922153 at gmail.com
QA Contact: gstreamer-bugs at lists.freedesktop.org
GNOME version: ---
Created attachment 323611
--> https://bugzilla.gnome.org/attachment.cgi?id=323611&action=edit
proposed solution
Fix the bug when inheriting SegmentBase, SegmentTemplate and SegmentList from
upper layer.
The detail is given in the attached = report.
The issued MPD is also given in the attached.
Also a proposed patch is given.
A brief description is as below but for the detail, please refer to report.
>From the attached MPD, it is expected to generate resource URLs by the
SegmentTemplate table below. Unfortunately, it is not so now. For current
Gstmpdparser we will get illegal address & make playback fail.
The root cause is:
Firstly We call gst_mpdparser_parse_period_node() and store the result in
struct GstSegmentTemplateNode by calling
gst_mpdparser_parse_segment_template_node().
Then we parse the children node and call
gst_mpdparser_parse_adaptation_set_node().
At this time "SegmentTemplate" DOES NOT appear. So we have no chance to call
gst_mpdparser_parse_segment_template_node(). As the result, the adaption set
carries no info about "SegmentTemplate".
Finally, we parse the representation node but parent->SegmentTemplate is NULL
(parent = adaption set). So representation node’s SegmentTemplate inherits
nothing and only with timescale from itself.
As the result, the generated stream->cur_seg_template will only have timescale
as the logic below. It misses the attribute of @index and @ initialization so
we CANNOT generate a legal URL address.
[Proposed solution]
>From the description above, the root cause is that we only do inherit from
“parent”. However, if the desired attribute exists at the grandparent (as
period’s role to representation), we will get miss.
The spec says:
“…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. …”
According to the spec, the proposed solution is:
When we parse an adaption set and find that either one of the three elements =
[ SegmentBase, SegmentTemplate and SegmentList ] DOES NOT exist but the parent
(period node) holds one, we FORCE to inherit the element from period node.
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list