summaryrefslogtreecommitdiff
path: root/ext/dash
Commit message (Collapse)AuthorAgeFilesLines
* dash: allow per feature registrationStéphane Cerveau2021-03-235-20/+32
| | | | | | | | | | | | | 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>
* dashsink: add h265 codec supportHaihua Hu2021-01-261-0/+2
| | | | | | Return hvc1 for video/x-h265 mime type in mpd helper function Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1966>
* dashsink: fix double unref of sinkpad capsHaihua Hu2021-01-251-2/+0
| | | | | | | no need to unref caps in gst_mpd_helper_get_XXX_codec_from_mime it will be unref in caller gst_dash_sink_get_stream_metadata() Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1981>
* dashsink: fix critical log when exit dynamic pipelineHaihua Hu2020-12-312-3/+4
| | | | | | | | | availability-start-time and publish-time shared the same GstDateTime object, this object will be unref twice and cause reference count issue. Should use g_value_dup_boxed() to copy this object. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1928>
* adaptivedemux: Store QoS values on the elementEdward Hervey2020-11-111-5/+7
| | | | | | | | | | | Storing it per-stream requires taking the manifest lock which can apparenly be hold for aeons. And since the QoS event comes from the video rendering thread we *really* do not want to do that. Storing it as-is in the element is fine, the important part is knowing the earliest time downstream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1021>
* meson: update glib minimum version to 2.56Stéphane Cerveau2020-10-161-26/+0
| | | | | | | | | | | | | In order to support the symbol g_enum_to_string in various project using GStreamer ( gst-validate etc.), the glib minimum version should be 2.56.0. Remove compat code as glib requirement is now > 2.56 Version used by Ubuntu 18.04 LTS Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1695>
* plugins: uddate gst_type_mark_as_plugin_api() callsMathieu Duponchelle2020-06-061-1/+1
|
* plugins: Use gst_type_mark_as_plugin_api() for all non-element plugin typesSebastian Dröge2020-06-041-0/+2
|
* dash: fix VARARGS coverity errorStéphane Cerveau2020-04-081-22/+18
| | | | | | | | | | va_end was not called in every code path due to g_return_val_if_fail. API usage errors (VARARGS) va_end was not called for "myargs". CID: 1461294
* dash: add build-dep on pbutilsMatthew Waters2020-03-031-1/+2
| | | | | | | | Fixes dependency issues: FAILED: subprojects/gst-plugins-bad/ext/dash/8bd0b95@@gstdash@sha/gstdashsink.c.obj cl @subprojects/gst-plugins-bad/ext/dash/8bd0b95@@gstdash@sha/gstdashsink.c.obj.rsp C:\builds\ystreet\gst-plugins-base\gst-build\subprojects\gst-plugins-base\gst-libs\gst/pbutils/pbutils.h(30): fatal error C1083: Cannot open include file: 'gst/pbutils/pbutils-enumtypes.h': No such file or directory
* dash: Don't use sscanf + glib format modifiersNirbheek Chauhan2020-02-271-25/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We do not have a way to know the format modifiers to use with string functions provided by the system. `G_GUINT64_FORMAT` and other string modifiers only work for glib string formatting functions. We cannot use them for string functions provided by the stdlib. See: https://developer.gnome.org/glib/stable/glib-Basic-Types.html#glib-Basic-Types.description F.ex. ``` ../ext/dash/gstxmlhelper.c: In function 'gst_xml_helper_get_prop_unsigned_integer_64': ../ext/dash/gstxmlhelper.c:473:40: error: unknown conversion type character 'l' in format [-Werror=format=] if (sscanf ((gchar *) prop_string, "%" G_GUINT64_FORMAT, ^~~ In file included from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib/gtypes.h:32, from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib/galloca.h:32, from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/glib-2.0/glib.h:30, from /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/include/gstreamer-1.0/gst/gst.h:27, from ../ext/dash/gstxmlhelper.h:26, from ../ext/dash/gstxmlhelper.c:22: /builds/nirbheek/cerbero/cerbero-build/dist/windows_x86/lib/glib-2.0/include/glibconfig.h:69:28: note: format string is defined here #define G_GUINT64_FORMAT "llu" ^ ../ext/dash/gstxmlhelper.c:473:40: error: too many arguments for format [-Werror=format-extra-args] if (sscanf ((gchar *) prop_string, "%" G_GUINT64_FORMAT, ^~~ ``` In the process, we're also following the DASH MPD spec more closely now, which specifies that ranges must follow RFC 2616 section 14.35.1: https://tools.ietf.org/html/rfc2616#page-138
* dash: Remove spurious condition check and remove unused debug categorySeungha Yang2020-01-071-5/+1
| | | | | Note that uppercase debug category names are used for core modules and should be redefined in lowercase for plugins if necessary.
* dashsink: Add new sink to produce DASH contentStéphane Cerveau2020-01-038-8/+1525
| | | | | | | | | | | | | | Add static or dynamic mpd with: - baseURL - period - adaptation_set - representaton - SegmentList - SegmentURL - SegmentTemplate Support multiple audio and video streams. Pass conformance test with DashIF.org
* gstxmlhelper: fix xmlOutputBufferFlush ignored retStéphane Cerveau2020-01-031-1/+1
| | | | fix CID #1456553
* dash: add set/get property for nodesStéphane Cerveau2020-01-0311-8/+835
| | | | | | | | Add a way to set/get properties for given nodes: - root - baseurl - representation
* dash: Generate an XML content from object.Stéphane Cerveau2020-01-0360-822/+2544
| | | | | | Add mpd node base class to provide xml generation facilities for child objects.
* dash: move parser nodes/types to separated filesStéphane Cerveau2019-12-0543-1415/+3441
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rename GstMpdClient to GstMPDClient and use GObject model. Move nodes to file from gstmpdparser.c: - GstMPDRootNode - GstMPDBaseURLNode - GstMPDUTCTimingNode - GstMPDMetricsNode - GstMPDMetricsRangeNode - GstMPDSNode - GstMPDSegmentTimelineNode - GstSegmentTemplateNode - GstMPDSegmentURLNode - GstMPDSegmentListNode - GstMPDPeriodNode - GstMPDRepresentationNode - GstMPDsubRepresentationNode - GstMPDAdaptationSetNode - GstMPDContentComponentNode - GstMPDSubsetNode - GstMPDProgramInformationNode Move types to gstmpdhelper from gstmpdparser.c: - GstURLType - GstDescriptorType - GstSegmentBaseType - GstMPDMultSegmentBaseType - GstMPDRepresentationBaseType Cleanup naming when possible.
* dash: split mpdparser, mpdclient and xmlhelperStéphane Cerveau2019-12-0511-4636/+4839
| | | | | provide a separate namespace for mpd helper for xml parsing and the real mpd parsing.
* dash: Fix typo in meson.buildXavier Claessens2019-11-191-3/+3
|
* documentation: fixed a heap o' typosAaron Boxer2019-11-052-8/+8
|
* Remove autotools build systemTim-Philipp Müller2019-10-141-34/+0
|
* dash: Fallback to libxml2 subprojectXavier Claessens2019-07-241-1/+6
|
* dashdemux: include both Period start and presentationTimeOffset in segment startAlex Ashley2019-06-011-27/+38
| | | | | | | | | | | | | | | | | | | The start of each segment is relative to the Period start, minus the presentation time offset. As specified in section 5.3.9.6 of the MPEG DASH specification: The value of the @t attribute minus the value of the @presentationTimeOffset specifies the MPD start time of the first Segment in the series. dashdemux was not taking account of presentationTimeOffset and in some methods was not taking into account the Period start time. This commit modifies the segment->start value to always be relative to the MPD start time (zero for VOD, availabilityStartTime for live streams). This makes all uses of the segment list consistent. Fixes #841
* docs: Build documentation with hotdocThibault Saunier2019-05-131-0/+1
|
* dashdemux: Always create the adapterNicolas Dufresne2018-08-161-3/+1
| | | | | | | | Worst case it will be empty. This fixes a crash when the base class calls data_received() when the stream is neither is_isobmff or has_isoff_ondemand_profile. https://bugzilla.gnome.org/show_bug.cgi?id=796745
* 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
* dashdemux: Fix sync of updated manifest from previous oneSeungha Yang2018-05-121-0/+6
| | | | | | | _get_next_fragment_timestamp() returns relative timestamp to period start. But gst_mpd_client_stream_seek() uses absolute MPD timeline. https://bugzilla.gnome.org/show_bug.cgi?id=781183
* Meson: Generate pc file for all plugins in badXavier Claessens2018-04-251-0/+1
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=794568
* Fix code indentationTim-Philipp Müller2018-04-221-1/+1
|
* dashdemux: parse xs:dateTime's timezone indicatorJun Xie2017-12-181-3/+47
| | | | | | | The lexical form of xs:dateTime is YYYY-MM-DDThh:mm:ss[Z|(+|-)hh:mm] timezone indicator (+|-)hh:mm] needs to be parsed. https://bugzilla.gnome.org/show_bug.cgi?id=791602
* dashdemux: fix coredump issue with external AdaptationSetJun Xie2017-12-061-4/+4
| | | | | | fix wrong AdaptationSet list iterator https://bugzilla.gnome.org/show_bug.cgi?id=790812
* dashdemux: remove duplicated codeJun Xie2017-11-301-4/+0
| | | | | | remove duplicated code https://bugzilla.gnome.org/show_bug.cgi?id=790895
* dashdemux: fix memory leakJun Xie2017-11-301-2/+2
| | | | | | | GPtrArray in GstActiveStream is leaked in some cases. gst_mpdparser_free_active_stream shall be invoked to free GstActiveStream https://bugzilla.gnome.org/show_bug.cgi?id=790899
* dashdemux: Handle bitrate > 2**31Edward Hervey2017-11-252-3/+3
| | | | | On very-high connection, we could quite well exceed that. Instead use gint64 for max-bitrate.
* isoff: Move isoff to gst-libsSeungha Yang2017-08-255-732/+3
| | | | | | Also rename unit test dash_isoff to isoff https://bugzilla.gnome.org/show_bug.cgi?id=777825
* dashdemux: Add support webvtt subtitle streamSeungha Yang2017-07-181-2/+5
| | | | | | Enable exposing webvtt subtitle streams. https://bugzilla.gnome.org/show_bug.cgi?id=784715
* dashdemux: update manifest streams correctly if pads aren't exposedThiago Santos2017-07-131-1/+12
| | | | | | | | | | In some cases, it is possible that we need to update the manifest before pads have been exposed at all. If there are no current pads, just expose the next prepared streams. This doesn't handle the case where a manifest update would happen while a live streams is changing periods, which is a type of use case that we're unaware of real usages yet. https://bugzilla.gnome.org/show_bug.cgi?id=783028
* dashdemux: Implement a default presentation delayEdward Hervey2017-06-011-2/+2
| | | | | | | Have a fallback presentation delay is great (if not present in the manifest), having an actual default value is better. https://bugzilla.gnome.org/show_bug.cgi?id=783244
* mpdparser: remove duplicate free of client dataThiago Santos2017-06-011-1/+0
| | | | https://bugzilla.gnome.org/show_bug.cgi?id=783028
* dashdemux: Remove wrong assertionEdward Hervey2017-05-311-2/+0
| | | | | | | This is wrong because: * If the rate is negative we should check for the *previous* period * adaptivedemux already does the proper checks before calling this method
* dashdemux: Use correct (sub) fragment start when clipping chunk sizeSebastian Dröge2017-05-181-11/+10
| | | | | If we didn't download anything yet, we shouldn't use fragment.start but the start position of the current sidx entry.
* dashdemux: Make sure to pass the next buffer after a seek with DISCONT flagSebastian Dröge2017-05-181-0/+2
| | | | | | When we manually seek for skipping ahead in keyunit-only trickmode, we have to enforce that ourselves as adaptivedemux does not know about the seeks.
* dashdemux: Ensure that we never ever download over the current SIDX entrySebastian Dröge2017-05-181-6/+18
| | | | | Even if downloading more than needed to try to get the moof and first keyframe both together.
* dashdemux: Take SIDX entry timestamp/duration into account for keyunit-only modeSebastian Dröge2017-05-181-20/+48
| | | | And not the whole segment's timestamp/duration
* dashdemux: Reset parsing state correctly in various placesSebastian Dröge2017-05-181-17/+23
|
* dashdemux: Reset previous target_time when seekingSebastian Dröge2017-05-181-2/+4
|
* dashdemux: Smooth out skip distances in keyframe-only trick modesSebastian Dröge2017-05-182-1/+30
| | | | | | This ensures smoother playback. It looks weird if we first do a big jump, then play a couple of consecutive frames, just to again skip ahead quite a bit because we ran late again.
* dashdemux: Take configure max bitrate/framerate into account for keyframe ↵Sebastian Dröge2017-05-182-57/+143
| | | | | | skipping And by default only produce up to 10 fps.
* dashdemux: Try harder to not run into a loop over the same fragment over and ↵Sebastian Dröge2017-05-181-12/+67
| | | | | | | over While still making sure to not jump ahead one fragment further than needed.
* dashdemux: Add some debug output to the target time selectionSebastian Dröge2017-05-181-2/+12
|