summaryrefslogtreecommitdiff
path: root/gst/playback/gsturidecodebin.c
AgeCommit message (Collapse)AuthorFilesLines
2021-08-18playbin/uridecodebin: Emit source-setup signal early before doing the ↵Sebastian Dröge1-18/+19
scheduling query Some elements will require the source to be set up properly before the scheduling query returns useful results, e.g. appsrc and giostreamsrc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1241>
2021-04-21uridecodebin: Don't force floating reference for future reusable decodebinSeungha Yang1-2/+9
uridecodebin assumes that refcount of decodebins stored in pending_decodebins are floating but it might not be true in case that refcount of the decodebin was touched in other places. To avoid the floating refcount issue, hold strong reference. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1113>
2021-04-21uridecodebin: Use gst_object_ref instead of g_object_refSeungha Yang1-1/+1
It's more debugging friendly (tracer for example) Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1113>
2021-03-26playback: Don't special-case G_SIGNAL_RUN_CLEANUP stage in signal accumulatorsSebastian Dröge1-10/+5
All these signals don't run the class handler in the CLEANUP stage. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1076>
2021-03-10playback: remove useless ret testStéphane Cerveau1-1/+1
Use GST_ELEMENT_REGISTER_DEFINE_CUSTOM instead of GST_ELEMENT_REGISTER_DEFINE_WITH_CODE if a specific init needs to be tested before registering the element. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1060>
2020-12-10playback: allow per feature registrationStéphane Cerveau1-11/+7
Split plugin into features including elements and device providers 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-base/-/merge_requests/900>
2020-06-05uridecodebin: Dont link random padsEdward Hervey1-2/+6
When linking source pads to decodebin, make sure we use the *specified* new source pad and not some random one. This avoids ending up with source pads being unlinked. Main cause of random timeouts with rtsp change_state_intensive validate tests Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/687>
2020-01-09playbin2: handle GST_PLAY_FLAG_FORCE_SW_DECODERSVíctor Manuel Jáquez Leal1-1/+47
Added `force-sw-decoders` boolean property in decodebin2 and uridecodebin. By default the property is %FALSE and it bypass the new code. Otherwise the factory list is filtered removing decoders within 'Hardware' class. uridecodebin sets the `force-sw-decoders` property in its internal decodebin, and also filters out Hardware class in the autoplug-factories default signal handler. playbin2 adds by default GST_PLAY_FLAG_FORCE_SW_DECODERS it its flags property, and depending on it playbin2 sets the `force-sw-decoders` property on its internal uridecodebin, also filters out the Hardware class decoding decoders at the autoplug-factories signal handler.
2019-08-30Pass the code through codespellThibault Saunier1-5/+5
2019-08-27Don't pass default GLib marshallers for signalsNiels De Graef1-17/+11
By passing NULL to `g_signal_new` instead of a marshaller, GLib will actually internally optimize the signal (if the marshaller is available in GLib itself) by also setting the valist marshaller. This makes the signal emission a bit more performant than the regular marshalling, which still needs to box into `GValue` and call libffi in case of a generic marshaller. Note that for custom marshallers, one would use `g_signal_set_va_marshaller()` with the valist marshaller instead.
2019-05-22uridecodebin, urisourcebin: fix buffering for ssh:// URIsTim-Philipp Müller1-3/+5
Protocols that are in the stream_uris list should always be streams, no matter what they respond to the scheduling query. The flag in the scheduling query is just another way to declare something that needs buffering without the whitelist, the absence of the flag shouldn't make us ignore our known protocol list. Also set is_stream always to a boolean and not a mask value.
2019-05-13doc: Fix some gtk-doc commentsThibault Saunier1-8/+8
2019-04-09decodebin: Protect ->source with the object lockThibault Saunier1-2/+11
As expected by the property getter. Basically there are cases where we can be getting the source from any thread and in another thread bring back the element from PAUSED to READY, which leads to a critical warning (or worse). The only place where we use `->source` outside the property getter is the change_state function so the current way of setting/reading it should be safe.
2018-05-22docs: Fix typosTim-Philipp Müller1-1/+1
2018-02-14doc: Remove obsolete Since 0.10.X marksNicolas Dufresne1-10/+0
2017-10-03Use proper GtkDoc notation for NULL/FALSE/TRUEReynaldo H. Verdejo Pinochet1-6/+6
2017-07-03uridecodebin: aggregate topology messagesMathieu Duponchelle1-1/+79
This makes it possible for GstDiscoverer to work with sources that have multiple source pads and hence will trigger the creation of multiple decodebin instances such as rtspsrc. Based on the work of Vineeth TM <vineeth.tm@samsung.com> https://bugzilla.gnome.org/show_bug.cgi?id=754178
2017-03-10docs: Convert gtkdoc comments to markdownThibault Saunier1-25/+18
Modernizing the documentation, making it simpler to read an modify and allowing us to possibly switch to hotdoc in the future.
2016-09-12playback: Use new gst_bin_set_suppressed_flags() API instead of worrying ↵Sebastian Dröge1-7/+2
about the flags in multiple places
2016-09-01playbackutils: Move compare_factories_funcWonchul Lee1-4/+2
Move _decode_bin_compare_factories_func function to playbackutils https://bugzilla.gnome.org/show_bug.cgi?id=770692
2016-03-24base: use new gst_element_class_add_static_pad_template()Vineeth TM1-2/+1
https://bugzilla.gnome.org/show_bug.cgi?id=763075
2015-10-19playbin/uridecodebin: Always post async-done immediately if we're a live ↵Sebastian Dröge1-2/+4
pipeline Not only if the base class told us, but also if one of our own elements did. https://bugzilla.gnome.org/show_bug.cgi?id=756611
2015-09-16uridecodebin: Use the correct caps name for MS Smooth Streaming manifestsSebastian Dröge1-1/+1
Thanks to John Chang <r97922153@gmail.com> for reporting. https://bugzilla.gnome.org/show_bug.cgi?id=755098
2015-04-24remove unused enum items PROP_LASTLuis de Bethencourt1-2/+1
This were probably added to the enums due to cargo cult programming and are unused. Removing them.
2015-02-19uridecodebin: Reset the default query return value when the iterator has to ↵Sebastian Dröge1-1/+1
resync
2015-02-19uridecodebin: Let the latency query fail if one of the source queries failsSebastian Dröge1-3/+6
2015-02-17uridecodebin: Pass object, not GValue to debug printOlivier Crête1-1/+1
2015-02-11Improve and fix LATENCY query handlingSebastian Dröge1-10/+12
This now follows the design docs everywhere, especially the maximum latency handling. https://bugzilla.gnome.org/show_bug.cgi?id=744106
2014-12-01Don't compare booleans for equality to TRUE and FALSESebastian Dröge1-3/+3
TRUE is 1, but every other non-zero value is also considered true. Comparing for equality with TRUE would only consider 1 but not the others.
2014-10-02uridecodebin: Removed setting "iradio-mode" property in the source elementAndres Gomez1-11/+0
The "iradio-mode" property used to have a default FALSE value in HTTP source elements but now it should default to TRUE or just do not exist as a property so it is not really needed to set it any more in uridecodebin. Apart from that this code could've never worked as uridecodebin looks for a string-typed iradio-mode property, but it's a boolean in all sources. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=725383
2014-08-25decodebin: Include information from the error messages of tried but failed ↵Sebastian Dröge1-3/+33
elements in the missing plugin errors
2014-07-28uridecodebin: Pass through NO_PREROLL state change returnsSebastian Dröge1-3/+11
Fixes playback of live pipelines.
2014-07-23uridecodebin: Go asynchronously from READY to PAUSEDSebastian Dröge1-4/+18
We now add all our elements to uridecodebin *after* GstBin::change_state(READY->PAUSED), so we need to post async-start and async-done messages ourselves if we want to work async. https://bugzilla.gnome.org/show_bug.cgi?id=733495
2014-07-21uridecodebin: Create new sources after chaining up to the parent classSebastian Dröge1-9/+18
Otherwise we start the new sources already before the parent class got ready to start.
2014-06-05uridecodebin: Also catch CODEC_NOT_FOUND errors and delay them until all ↵Sebastian Dröge1-1/+3
decodebins are done
2014-06-04uridecodebin: Ignore missing-plugin messages unless all decodebins post oneSebastian Dröge1-10/+44
When playing RTSP streams there will be one decodebin per stream. If some of them fail because of a missing plugin we should not fail completely but play the supported streams at least. https://bugzilla.gnome.org/show_bug.cgi?id=730868
2014-05-08uridecodebin: use downloadbuffer for download bufferingWim Taymans1-12/+17
Use the new downloadbuffer element to implement the download buffering feature Fixes https://bugzilla.gnome.org/show_bug.cgi?id=680183
2014-03-07decodebin: Buffer up to 5 seconds in multiqueue buffering modeSebastian Dröge1-1/+1
2 seconds might be too small for some container formats, e.g. MPEGTS with some video codec and AAC/ADTS audio with 700ms long buffers. The video branch of multiqueue can run full while the audio branch is completely empty, especially because there are usually more queues downstream on the audio branch.
2014-02-23uridecodebin: Always use buffering in multiqueue for adaptive streamsSebastian Dröge1-2/+3
2014-02-23uridecodebin: Only add a queue2 for buffering for non-adaptive streaming streamsSebastian Dröge1-39/+45
2014-02-23uridecodebin: pass on the buffering property for adaptive streamsThiago Santos1-1/+25
Adaptive streams should download its data inside the demuxer, so we want to use multiqueue's buffering messages to control the pipeline flow and avoid losing sync if download rates are low; https://bugzilla.gnome.org/show_bug.cgi?id=707636
2014-02-12uridecodebin: Don't leak pad referencesSebastian Dröge1-1/+5
2014-01-28decodebin: make it possible to register multiple handlers for autoplug-selectAlessandro Decina1-3/+12
Change the way autoplug-select is accumulated so that it's possible to have multiple handlers. The handlers keep getting called as long as they keep returning GST_AUTOPLUG_SELECT_TRY. One practical example of when this is needed is when hooking into playbin's uridecodebin, which is perhaps not very elegant but the only way to influence which streams playbin autoplugs/exposes. Fixes https://bugzilla.gnome.org/show_bug.cgi?id=723096
2014-01-24uridecodebin: Drop hardcoded list of media suitable for download bufferingSjoerd Simons1-29/+5
Discussion on IRC indicated that the main reason for this list was to prevent demuxers that can trigger a lot of seeking from using progressive buffering using queue2 (which due to being seekable triggers that behaviour). However given that upstream can indicate seeks are possible but should be avoided via a scheduling query, this extra whitelisting shouldn't be necessary for well-behaved demuxers. https://bugzilla.gnome.org/show_bug.cgi?id=704933
2013-11-29uridecodebin: copy sticky eventsWim Taymans1-0/+13
2013-05-28decodebin: Pass the element in the autoplug-query signal tooSebastian Dröge1-10/+11
2013-05-15playback: Only do a subset filtering for the factories if we have fixed capsSebastian Dröge1-1/+1
Otherwise we're plugging a parser/converter currently and have unfixed caps.
2013-05-14playback: Use subset checks instead of intersectionSebastian Dröge1-1/+1
https://bugzilla.gnome.org/show_bug.cgi?id=700272
2013-05-08uridecodebin: Always store queue2 elements for later removalSebastian Dröge1-0/+1
Otherwise we accumulate more and more queue2 elements, and let each of them start a thread doing nothing but waiting each time uridecodebin goes to PAUSED. https://bugzilla.gnome.org/show_bug.cgi?id=699794
2013-04-21uridecodebin: don't report 'no uri handler found' if the URI was rejected by ↵Tim-Philipp Müller1-10/+18
a source If a source element could be created for a URI, but all elements rejected the URI for some reason, propagate the error from the URI handler instead of reporting a 'no uri handler found for protocol xyz' error, which is confusing. Fixes error reporting with dvb:// URIs when the channel config file could not be found or not be parsed or the channel isn't listed. https://bugzilla.gnome.org/show_bug.cgi?id=678892