| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
Note that uppercase debug category names are used for
core modules and should be redefined in lowercase for plugins if necessary.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
fix CID #1456553
|
|
|
|
|
|
|
|
| |
Add a way to set/get properties for given nodes:
- root
- baseurl
- representation
|
|
|
|
|
|
| |
Add mpd node base class to provide
xml generation facilities for child
objects.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
provide a separate namespace for mpd helper
for xml parsing and the real mpd parsing.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
_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
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=794568
|
| |
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
| |
fix wrong AdaptationSet list iterator
https://bugzilla.gnome.org/show_bug.cgi?id=790812
|
|
|
|
|
|
| |
remove duplicated code
https://bugzilla.gnome.org/show_bug.cgi?id=790895
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
On very-high connection, we could quite well exceed that. Instead use
gint64 for max-bitrate.
|
|
|
|
|
|
| |
Also rename unit test dash_isoff to isoff
https://bugzilla.gnome.org/show_bug.cgi?id=777825
|
|
|
|
|
|
| |
Enable exposing webvtt subtitle streams.
https://bugzilla.gnome.org/show_bug.cgi?id=784715
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
https://bugzilla.gnome.org/show_bug.cgi?id=783028
|
|
|
|
|
|
|
| |
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
|
|
|
|
|
| |
If we didn't download anything yet, we shouldn't use fragment.start but
the start position of the current sidx entry.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
Even if downloading more than needed to try to get the moof and first
keyframe both together.
|
|
|
|
| |
And not the whole segment's timestamp/duration
|
| |
|
| |
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
skipping
And by default only produce up to 10 fps.
|
|
|
|
|
|
|
| |
over
While still making sure to not jump ahead one fragment further than
needed.
|
| |
|