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 774178 - smoothstreaming: support live seeking and reporting the live duration
smoothstreaming: support live seeking and reporting the live duration
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-bad
git master
Other Linux
: Normal normal
: 1.11.1
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2016-11-10 06:31 UTC by Matthew Waters (ystreet00)
Modified: 2017-03-02 00:32 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
smoothstreaming: implement adaptivedemux's get_live_seek_range() (6.28 KB, patch)
2016-11-10 06:32 UTC, Matthew Waters (ystreet00)
none Details | Review
smoothstreaming:use the duration from the current list of fragments if not in the manifest (1.77 KB, patch)
2016-11-10 06:33 UTC, Matthew Waters (ystreet00)
reviewed Details | Review
smoothstreaming: implement adaptivedemux's get_live_seek_range() (6.34 KB, patch)
2016-11-10 13:24 UTC, Matthew Waters (ystreet00)
committed Details | Review
smoothstreaming: use the duration from the current list of fragments if not in the manifest (1.80 KB, patch)
2016-11-10 13:25 UTC, Matthew Waters (ystreet00)
committed Details | Review

Description Matthew Waters (ystreet00) 2016-11-10 06:31:48 UTC
See commits
Comment 1 Matthew Waters (ystreet00) 2016-11-10 06:32:33 UTC
Created attachment 339432 [details] [review]
smoothstreaming: implement adaptivedemux's get_live_seek_range()
Comment 2 Matthew Waters (ystreet00) 2016-11-10 06:33:11 UTC
Created attachment 339433 [details] [review]
smoothstreaming:use the duration from the current list of fragments if not in the manifest
Comment 3 Sebastian Dröge (slomo) 2016-11-10 11:22:10 UTC
Review of attachment 339432 [details] [review]:

Generally makes sense but you seemed to have done some last minute changes that broke things before submitting the patch :)

::: ext/smoothstreaming/gstmssmanifest.c
@@ +1484,3 @@
+        gst_mss_manifest_get_dvr_window_length_clock_time (manifest);
+
+    if (GST_CLOCK_TIME_IS_VALID (dvr_window) && stop - start > dvr_window) {

You compare pointers here, start and stop are pointers
Comment 4 Sebastian Dröge (slomo) 2016-11-10 11:23:12 UTC
Review of attachment 339433 [details] [review]:

::: ext/smoothstreaming/gstmssmanifest.c
@@ +911,3 @@
+          guint64 frag_dur =
+              fragment->time + fragment->duration * fragment->repetitions;
+          min_dur = MIN (frag_dur, min_dur);

Should be the maximum, no? The DURATION query also gets the maximum of all streams
Comment 5 Matthew Waters (ystreet00) 2016-11-10 13:24:11 UTC
Created attachment 339483 [details] [review]
smoothstreaming: implement adaptivedemux's get_live_seek_range()

(In reply to Sebastian Dröge (slomo) from comment #3)
> Review of attachment 339432 [details] [review] [review]:
>
> You compare pointers here, start and stop are pointers

Oops. Fixed :)
Comment 6 Matthew Waters (ystreet00) 2016-11-10 13:25:42 UTC
Created attachment 339485 [details] [review]
smoothstreaming: use the duration from the current list of fragments if not in the manifest
Comment 7 Matthew Waters (ystreet00) 2016-11-10 13:34:54 UTC
commit 0fbee8f37427b88339194b22ba9aa210772a8613
Author: Matthew Waters <matthew@centricular.com>
Date:   Thu Nov 10 17:20:27 2016 +1100

    smoothstreaming: use the duration from the list of fragments if not present in the manifest
    
    Provides a more accurate duration for live streams that may be minutes
    or hours in front of the earliest fragment.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=774178

commit e9178fa082116d4bf733b184a8b6951112c17900
Author: Matthew Waters <matthew@centricular.com>
Date:   Thu Nov 10 17:18:36 2016 +1100

    smoothstreaming: implement adaptivedemux's get_live_seek_range()
    
    Allows seeking through the available fragments that are still available
    on the server as specified by the DVRWindowLength attribute in the
    manifest.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=774178