After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 780589 - dashdemux: Don't try mpd update if minimumUpdatePeriod is not present
dashdemux: Don't try mpd update if minimumUpdatePeriod is not present
Status: RESOLVED OBSOLETE
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal normal
: git master
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-03-27 12:08 UTC by Seungha Yang
Modified: 2018-11-03 14:06 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
adaptivedemux: Query updatability of manifest to subclass (3.61 KB, patch)
2017-03-27 12:20 UTC, Seungha Yang
none Details | Review
dashdemux: Don't try mpd update if minimumUpdatePeriod is not present (3.17 KB, patch)
2017-03-27 12:21 UTC, Seungha Yang
none Details | Review
adaptivedemux: Stop updates loop if there is no more live playlist update (2.74 KB, patch)
2017-03-29 12:45 UTC, Seungha Yang
none Details | Review
dashdemux: Don't try mpd update if minimumUpdatePeriod is not present (3.08 KB, patch)
2017-03-29 12:46 UTC, Seungha Yang
none Details | Review
adaptivedemux: Stop updates loop if there is no more live playlist update (2.93 KB, patch)
2017-04-10 13:47 UTC, Seungha Yang
none Details | Review
dashdemux: Don't try mpd update if minimumUpdatePeriod is not present (2.53 KB, patch)
2017-04-10 13:47 UTC, Seungha Yang
none Details | Review
dashdemux: Don't try periodical MPD update depending on minimumUpdatePeriod (3.10 KB, patch)
2017-06-02 14:04 UTC, Seungha Yang
none Details | Review

Description Seungha Yang 2017-03-27 12:08:18 UTC
Absent of minimumUpdatePeriod in dynamic type MPD means that
no more MPD update. See spec 5.3.1.2 Semantics of MPD element
Comment 1 Seungha Yang 2017-03-27 12:20:48 UTC
Created attachment 348794 [details] [review]
adaptivedemux: Query updatability of manifest to subclass

If subclass cannot do, demux should push EOS to finish live streaming
Comment 2 Seungha Yang 2017-03-27 12:21:10 UTC
Created attachment 348795 [details] [review]
dashdemux: Don't try mpd update if minimumUpdatePeriod is not present
Comment 3 Thiago Sousa Santos 2017-03-28 04:55:11 UTC
Review of attachment 348794 [details] [review]:

Shouldn't this be also checked on the update_manifest call to skip updating it?

It should also be possible to interrupt the manifest update loop thread if no more updates are expected.
Comment 4 Seungha Yang 2017-03-29 12:45:50 UTC
Created attachment 348930 [details] [review]
adaptivedemux: Stop updates loop if there is no more live playlist update

Although it's live playlist, updating playlist might be explicitly denied
by the given playlist
Comment 5 Seungha Yang 2017-03-29 12:46:17 UTC
Created attachment 348931 [details] [review]
dashdemux: Don't try mpd update if minimumUpdatePeriod is not present
Comment 6 Seungha Yang 2017-03-29 12:49:28 UTC
(In reply to Thiago Sousa Santos from comment #3)
> Review of attachment 348794 [details] [review] [review]:
> 
> Shouldn't this be also checked on the update_manifest call to skip updating
> it?
> 
> It should also be possible to interrupt the manifest update loop thread if
> no more updates are expected.

Thanks for your review.

I made it stop download loop.
And, instead of adding new virtual function, I changed it to use existing 
requires_periodical_playlist_update().
Comment 7 Thiago Sousa Santos 2017-04-01 18:30:34 UTC
Review of attachment 348931 [details] [review]:

::: ext/dash/gstdashdemux.c
@@ +1819,3 @@
+      gst_buffer_unmap (buffer, &mapinfo);
+      return GST_FLOW_EOS;
+    }

Is this right? It could be that this is the last update that has new fragments but it also has removed the minimumUpdatePeriod. So we need this update and after this one we don't need to update no more.
Comment 8 Thiago Sousa Santos 2017-04-01 18:31:43 UTC
Review of attachment 348930 [details] [review]:

I think it also would be a good idea to do the 'requires_periodical_playlist_update' check right from the updates loop. So that after an update we check if more updates are coming and, otherwise, we can stop that loop.
Comment 9 Seungha Yang 2017-04-10 13:47:05 UTC
Created attachment 349608 [details] [review]
adaptivedemux: Stop updates loop if there is no more live playlist update
Comment 10 Seungha Yang 2017-04-10 13:47:42 UTC
Created attachment 349609 [details] [review]
dashdemux: Don't try mpd update if minimumUpdatePeriod is not present
Comment 11 Seungha Yang 2017-04-10 13:48:37 UTC
(In reply to Thiago Sousa Santos from comment #7)
> Review of attachment 348931 [details] [review] [review]:
> 
> ::: ext/dash/gstdashdemux.c
> @@ +1819,3 @@
> +      gst_buffer_unmap (buffer, &mapinfo);
> +      return GST_FLOW_EOS;
> +    }
> 
> Is this right? It could be that this is the last update that has new
> fragments but it also has removed the minimumUpdatePeriod. So we need this
> update and after this one we don't need to update no more.

You are correct:) I misunderstood at that point.
Comment 12 Seungha Yang 2017-04-10 13:50:32 UTC
(In reply to Thiago Sousa Santos from comment #8)
> Review of attachment 348930 [details] [review] [review]:
> 
> I think it also would be a good idea to do the
> 'requires_periodical_playlist_update' check right from the updates loop. So
> that after an update we check if more updates are coming and, otherwise, we
> can stop that loop.

Please review updated patch :) As you suggested, stopping updates in the loop seems to looks better
Comment 13 Edward Hervey 2017-05-30 14:32:36 UTC
Here's a trick question: What do you do if minimumUpdatePeriod is present ... but it's set to 0s ?

My understanding is that:
* it only implies that everything in the manifest is for everything available until "now"
* Whenever we go beyond the last segment present in the manifest we need to request an updated manifest
Comment 14 Seungha Yang 2017-05-30 23:33:44 UTC
(In reply to Edward Hervey from comment #13)
> Here's a trick question: What do you do if minimumUpdatePeriod is present
> ... but it's set to 0s ?
This patch does not consider that condition. I'm planning to report now bug as I mentioned in bug #783028 if you ok. Abstract my idea for this zero minimumUpdatePeriod is,
- Disable periodic mpd update for zero minimumUpdatePeriod case.
- Update manifest only if the current manifest is expired
Note that, if inbandstream scheme (I'm working on bug#775803) is used, zero minimumUpdatePeriod is recommended. This is another usecase of zero minimumUpdatePeriod

> 
> My understanding is that:
> * it only implies that everything in the manifest is for everything
> available until "now"
That's my understanding. When I saw spec, it's still tricky for me, but DASHIF implementation guide is saying that
4.4.2.3.Some Special Cases
"If the MPD @minimumUpdatePeriod is set to 0, then the MPD documents all available  segments on the server."

> * Whenever we go beyond the last segment present in the manifest we need to
> request an updated manifest
Right. we should update at this moment or before.
Comment 15 Seungha Yang 2017-06-02 14:04:21 UTC
Created attachment 353085 [details] [review]
dashdemux: Don't try periodical MPD update depending on minimumUpdatePeriod

Absent of minimumUpdatePeriod in dynamic type MPD means that
no more MPD update. See spec 5.3.1.2 Semantics of MPD element
Or, if minimumUpdatePeriod was zero, try update only if the last
MPD has been expired.
Comment 16 Seungha Yang 2017-06-02 14:06:06 UTC
I hope attachment #353085 [details] can handle zero minimumUpdatePeriod. But not yet tested. I'm trying to find available test stream for that case.
Comment 17 Seungha Yang 2017-07-07 09:58:24 UTC
Hello Edward Hervey and Thiago Sousa Santos

I tested using attached patch and following streams which were reported at
bug #783028 can be played.
Comment 18 GStreamer system administrator 2018-11-03 14:06:36 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/539.