summaryrefslogtreecommitdiff
path: root/ext/smoothstreaming
Commit message (Collapse)AuthorAgeFilesLines
* smoothstreaming: allow per feature registrationStéphane Cerveau2021-03-233-7/+4
| | | | | | | | | | | | | Split plugin into features including dynamic types which can be indiviually registered during a static build. More details here: https://gitlab.freedesktop.org/gstreamer/gst-build/-/merge_requests/199 https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/661 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2038>
* smoothstreaming: clear live adapter on seekHosang Lee2020-09-302-1/+12
| | | | | | | | | | | | | | | | | | | | In live streaming, buffers sent by souphttpsrc are pushed to the live adapter. The buffers in the adapter are sent out of mssdemux when it is greater than 4096 bytes. Occasionally, when seeking in live streams, if seek occurs just after the last data chunk was received, and if this data chunk is smaller than 4096 bytes, it will be kept in the live adapter. This remaining data in the live adapter will be erroneously prepended to the new data that is downloaded after seek and pushed out. When qtdemux receives this data, since it does not start with a moof box, it is impossible to demux the fragment, and bogus size error will occur. Clear out the live adapter on seek so that no unnecessary remaining data is pushed out together with the new fragment after seeking. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1345>
* smoothstreaming: start closer to the edge in live streamsHosang Lee2020-08-101-1/+17
| | | | | | | | | It is more appropriate to start closer to the live edge in live streams. Some live streams maintain a large dvr window (over few hours in some cases), so starting from the first fragment will be too far away from the live edge. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1346>
* mssdemux: ignore unrecognized streamHosang Lee2020-06-171-0/+8
| | | | | | | Only create pads for steams with caps that can be recognized from the fourcc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1348>
* smoothstreaming: fix H264 CodecPrivateData parsingyychao2020-03-101-2/+2
| | | | | | Do not pass SPS nal_unit_type (0x67) into gst_h264_parse_sps() Fixes #648
* Remove autotools build systemTim-Philipp Müller2019-10-141-22/+0
|
* h264parse lib: Remove the SPS parse_vui_params flagJan Schmidt2019-07-051-1/+1
| | | | | | | | | | | | | | | The SPS parsing functions take a parse_vui_param flag to skip VUI parsing, but there's no indication in the output SPS struct that the VUI was skipped. The only caller that ever passed FALSE seems to be the important gst_h264_parser_parse_nal() function, meaning - so the cached SPS were always silently invalid. That needs changing anyway, meaning noone ever passes FALSE. I don't see any use for saving a few microseconds in order to silently produce garbage, and since this is still unstable API, let's remove the parse_vui_param.
* docs: Build documentation with hotdocThibault Saunier2019-05-131-0/+1
|
* Minor documentation fixesThibault Saunier2019-05-131-3/+3
|
* mssdemux: fix protection data double freeXabier Rodriguez Calvar2019-03-181-1/+1
| | | | | For not being duplicated here it was being freed when the manifest was being destroyed and a second time when the buffer was being destroyed.
* Add feature options for almost all pluginsNirbheek Chauhan2018-07-271-1/+1
| | | | | | | The only plugins remaining are those that haven't been ported to Meson yet, and msdk. Also, the tests are still automagic. https://bugzilla.gnome.org/show_bug.cgi?id=795107
* Meson: Generate pc file for all plugins in badXavier Claessens2018-04-251-0/+1
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=794568
* smoothstreaming: Handle invalid XMLEdward Hervey2017-11-211-0/+5
| | | | Nothing guarantees the manifest is valid and will return a root node
* mssdemux: fix caps leak in error code pathTim-Philipp Müller2017-09-151-0/+1
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=787736
* meson: fix build for isoff lib additionTim-Philipp Müller2017-08-261-1/+1
|
* smoothstreaming: Use isoff to parse tfxd/tfrfSeungha Yang2017-08-254-228/+55
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=777825
* meson: make smoothstreaming depend on gioAlessandro Decina2017-07-201-1/+1
|
* Remove plugin specific static build optionNicolas Dufresne2017-05-161-1/+0
| | | | | Static and dynamic plugins now have the same interface. The standard --enable-static/--enable-shared toggle are sufficient.
* mssdemux: Fix compiler warningSebastian Dröge2017-04-251-2/+0
| | | | | | | | ../subprojects/gst-plugins-bad/ext/smoothstreaming/gstmssdemux.c: In function ‘gst_mss_demux_requires_periodical_playlist_update’: ../subprojects/gst-plugins-bad/ext/smoothstreaming/gstmssdemux.c:729:16: error: unused variable ‘mssdemux’ [-Werror=unused-variable] GstMssDemux *mssdemux = GST_MSS_DEMUX_CAST (demux); ^~~~~~~~ cc1: all warnings being treated as errors
* mss: always periodically update the manifest taking the new fragmentsMatthew Waters2017-04-252-4/+1
| | | | | | | Without this, for streams where the content is stored indefinitely and can be seeked on, the duration would never increase when in paused or, until we reached near the end of the currently advertised stream (where the internal fragment parser would see descriptions of new fragments).
* docs: Port all docstring to gtk-doc markdownThibault Saunier2017-04-121-1/+1
|
* mssdemux: only add live fragments after manifest fragmentsMatthew Waters2017-03-271-15/+14
| | | | | | | | | | | | | A live manifest may have a set (> LookAheadFragmentCount) of fragments that have already been served and are stored on the server, maybe indefinitely. Adding the parsed live fragments after the manifest fragments breaks duration reporting and the seekable range. Fix by only adding parsed fragments outside the list of fragments which assumes that the fragment list in the manifest is accurate enough to not stray too far off what's in the retrieved data. https://bugzilla.gnome.org/show_bug.cgi?id=779447
* Revert "adaptivedemux: answer duration queries for live streams"Matthew Waters2017-03-141-1/+1
| | | | | | | | Completely disabling duration reporting with live streams is not cool. This reverts commit e1b68d9a65ba512a52c3a2b298fa830a445eb451. https://bugzilla.gnome.org/show_bug.cgi?id=753879
* dash/smoothstreaming: Use GST_PLUGIN_LIBTOOLFLAGSNicolas Dufresne2017-03-081-1/+1
| | | | | Use the flags defined by configure script instead of always disabling static plugins.
* adaptivedemux: answer duration queries for live streamsAlex Ashley2017-03-021-1/+1
| | | | | | | | | | | For duration queries on live streams, adaptivedemux ignores the query. The problem then is that the query is answered by the downstream qtdemux element, with the duration of the currently passing fragment. This commit changes the behaviour of adaptivedemux to answer the duration queries for live streams, returning GST_CLOCK_TIME_NONE. https://bugzilla.gnome.org/show_bug.cgi?id=753879
* smoothstreaming: Fix minor use after free referenceArun Raghavan2017-01-021-1/+1
| | | | | | | Just a matter of reordering a g_free() /after/ cleaning out all the members. CID 1396746
* mssdemux: fix meson buildPhilippe Normand2016-11-291-0/+1
| | | | | Follow-up of 73721ad4e9e2d32e1c8b6a3b4aaa98401530e58a. Forgot to add the fragment parser in the meson build file.
* mssdemux: improved live playback supportPhilippe Normand2016-11-296-10/+567
| | | | | | | | | | | When a MSS server hosts a live stream the fragments listed in the manifest usually don't have accurate timestamps and duration, except for the first fragment, which additionally stores timing information for the few upcoming fragments. In this scenario it is useless to periodically fetch and update the manifest and the fragments list can be incrementally built by parsing the first/current fragment. https://bugzilla.gnome.org/show_bug.cgi?id=755036
* mssdemux: wrap unmodified data in protection eventPhilippe Normand2016-11-141-5/+3
| | | | | | | | | PlayReady being the one of the few DRM formats encoding its data with base64 it was not consistent to have a special case for this. So the base64 decoding operation now needs to be done by the protection event consumer, if needed. https://bugzilla.gnome.org/show_bug.cgi?id=774112
* smoothstreaming: use the duration from the list of fragments if not present ↵Matthew Waters2016-11-111-0/+24
| | | | | | | | | 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
* smoothstreaming: implement adaptivedemux's get_live_seek_range()Matthew Waters2016-11-113-0/+98
| | | | | | | | 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
* adaptivedemux: Enable bitrate selection for trick mode streaming againSebastian Dröge2016-08-251-1/+2
| | | | | | | | | | | | And scale the bitrate with the absolute rate (if it's bigger than 1.0) to get to the real bitrate due to faster playback. This allowed in my tests to play a stream with 10x speed without buffering as the lowest bitrate is chosen, instead of staying/selecting the highest bitrate and then buffering all the time. It was previously disabled for not very well specified reasons, which seem to be not valid anymore nowadays.
* Add support for Meson as alternative/parallel build systemNirbheek Chauhan2016-08-201-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | https://github.com/mesonbuild/meson With contributions from: Tim-Philipp Müller <tim@centricular.com> Matej Knopp <matej.knopp@gmail.com> Jussi Pakkanen <jpakkane@gmail.com> (original port) Highlights of the features provided are: * Faster builds on Linux (~40-50% faster) * The ability to build with MSVC on Windows * Generate Visual Studio project files * Generate XCode project files * Much faster builds on Windows (on-par with Linux) * Seriously fast configure and building on embedded ... and many more. For more details see: http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html Building with Meson should work on both Linux and Windows, but may need a few more tweaks on other operating systems.
* smoothstreaming: update fps calculation for h264 codec parser API changesTim-Philipp Müller2016-05-281-1/+6
| | | | | | | | | | | | | | Use new gst_h264_video_calculate_framerate() API instead of fps_n/fps_d fields in SPS struct which are to be removed. Apparently H264 content in MSS is always non-interlaced/progressive, so we can just pass 0 for field_pic_flag and don't need to parse any slice headers first if there's no external signalling. But even if that's not the case the new code is not worse than the existing code. https://msdn.microsoft.com/en-us/library/cc189080%28VS.95%29.aspx https://bugzilla.gnome.org/show_bug.cgi?id=723352
* bad: use new gst_element_class_add_static_pad_template()Vineeth TM2016-03-241-6/+6
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=763081
* mssdemux: remove unnecessary checkLuis de Bethencourt2016-02-091-2/+2
| | | | | | | | | stream->current_fragment has the value of g_list_previous (iter) which has just been checked. No need to check it again. Just to be safe, use a g_assert() to check fragment before dereferencing. CID #1352041
* mssdemux: implement snap seekingThiago Santos2016-02-043-40/+59
| | | | | | | Implement snap seek flags handling in stream_seek to allow the parent class to handle it for us https://bugzilla.gnome.org/show_bug.cgi?id=759158
* mssdemux: use correct seek position on reverse seeksThiago Santos2016-02-041-2/+6
| | | | | Otherwise it was always using the 'start' value, leading to wrong behavior
* mssdemux: only update download position if the seek requests toThiago Santos2016-02-041-1/+6
| | | | | Some seeks are only updating the stop position, there is no need to change the current downloading position.
* mssdemux: do not assert on fragment reloads for non-liveThiago Santos2016-02-041-2/+0
| | | | | It can be used as a resource to verify if the server has updated something in the Manifest when downloads are failing
* adaptivedemux: handle snap seeksThiago Santos2016-02-043-9/+25
| | | | | | | | | | | | | | | | | | | | | 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
* smoothstreaming: remove unused dependency on uridownloaderTim-Philipp Müller2016-01-312-2/+0
|
* adaptivedemux: replace ghostpad with a standard padThiago Santos2016-01-151-2/+1
| | | | | | | | | | | | 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
* mssdemux: add depth field to audio caps if availableMaroš Ondrášek2015-11-241-0/+11
| | | | | | | depth field can be retrieved from "BitsPerSample" or from "WaveFormatEx" structure, if provided in Manifest https://bugzilla.gnome.org/show_bug.cgi?id=758586
* Fix code indentationTim-Philipp Müller2015-11-061-1/+3
|
* mssdemux: activate streams before configuring bitratePhilippe Normand2015-09-301-2/+15
| | | | | | | | Doing the contrary has no effect and the consequence is that playback will start with the lowest bitrate even if we can already handle higher bitrate. https://bugzilla.gnome.org/show_bug.cgi?id=755108
* mssdemux: PlayReady WRM parsing supportPhilippe Normand2015-09-304-0/+140
| | | | | | | If the manifest has a ProtectionHeader node then parse it and emit protection events according to the specified protection SystemID. https://bugzilla.gnome.org/show_bug.cgi?id=753613
* mssdemux: always use timescale for gst timestamp calculationPhilippe Normand2015-09-301-6/+5
| | | | | | | | | Not doing this can lead the demuxer to attempt downloading fragments for an invalid start time. The server would then send a HTTP Precondition failed error, the demuxer would try some more times to download the invalid fragment and eventually error out. https://bugzilla.gnome.org/show_bug.cgi?id=754523
* Remove obsolete Android build cruftTim-Philipp Müller2015-04-261-15/+0
| | | | This is not needed any longer.
* adaptivedemux: Allow subclasses to override how a new manifest would be ↵Sebastian Dröge2015-04-232-4/+8
| | | | downloaded