summaryrefslogtreecommitdiff
path: root/gst
Commit message (Collapse)AuthorAgeFilesLines
* videorate: Drop incoming buffers that are outside of the segmentOlivier Crête2021-09-151-0/+11
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/767>
* videorate: Only "close" the segment if it is discontinousOlivier Crête2021-09-151-40/+54
| | | | | | Otherwise, it will drop valid buffers on a simple segment update Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/767>
* videorate: Update the base time on segment updatesOlivier Crête2021-09-151-3/+9
| | | | | | Dropping it to 0 makes videorate push buffers from timestamp 0 again. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/767>
* decodebin3: fix unblocking on input gap eventsMathieu Duponchelle2021-09-031-1/+6
| | | | | | | Initial gap events should not be discarded on the input streams, but instead cause unblocking just as buffers do. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1239>
* parsebin: Guess subtitle/ caps as text streamsPhilippe Normand2021-09-021-0/+1
| | | | | | The subtitles in ogg/kate are identified using subtitle/ caps names. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1213>
* compositor: Fix crash while drawing background and/or blending for ↵Seungha Yang2021-08-211-10/+10
| | | | | | | | | | subsampled YUV Fix crash caused by out-of-bounds memory accesses when drawing background and/or blending. This fix is conceptually identical to the approach as the commit of 8ff5079e5eef37b9bd5b212350f0cefbd9546b1b Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1229>
* smartencoder: Respect user `stream-format` when specifiedThibault Saunier2021-08-202-8/+16
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1249>
* smartencoder: clean up and extend accepted formatsMathieu Duponchelle2021-08-203-70/+151
| | | | | | | | | | | | | | | | | | | | | | | | * Add support for H265 * Don't overwrite original codec_data / streamheader in the output caps, but instead allow them to change and send them to the combiner at the right moment: encoder caps, reencoded GOP, original caps, original GOP(s), and potentially encoder caps and rencoded last GOP. * For H264 / H265, force usage of a format with inband SPS / PPS (avc3 / hev1), this is cleaner than misadvertising avc1, hvc1 and some muxers like mp4mux will actually advertise both differently. Unfortunately, while mp4 supports updating the codec_data and using avc1 with no in-band SPS / PPS updates, it turns out some decoders (eg chrome / firefox) don't handle this particularly well and stop decoding after the reencoded GOP. We could expose a switch to force usage of avc1 / hvc1 nevertheless, but for now stick to requiring that the parser output SPS / PPS in-band with config-interval=-1 (that has not changed) Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1249>
* compositor: Add "max-threads" propertySeungha Yang2021-08-202-1/+32
| | | | | | | | | Adding new property for user to be able to set expected the maximum number of blend task threads. This can be useful in case that user wants to restrict the number of parallel task runners for system resource management or debugging/development purpose. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1242>
* playbin/uridecodebin: Emit source-setup signal early before doing the ↵Sebastian Dröge2021-08-182-20/+34
| | | | | | | | | 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>
* decodebin3: improve decoder selectionMichael Olbrich2021-07-191-66/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the decoder selection is very naive: The type with the highest rank that matches the current caps is used. This works well for software decoders. The exact supported caps are always known and the static caps are defined accordingly. With hardware decoders, e.g. vaapi, the situation is different. The decoder may reject the caps later during a caps query. At that point, a new decoder is created. However, the same type is chosen an after several tries, decodebin fails. To avoid this, do the caps query while adding the decoder and try again with other decoder types if the query fails: 1. create the decoder from the next matching type 2. add and link the decoder 3. change the decoder state to READY 4. do the caps query if it fails then remove the decoder again and go back to 1. 5. expose the source pad 6. sync the decoder state with the parent. This way, the decoder is already part of the pipeline when the state change to READY happens. So context handling should work as before. Exposing the source pad after the query was successful is important: Otherwise the thread from the decoder source pad may block in a blocked pad downstream in the playsink waiting for other pads to be ready. The thread now blocks trying to set the state back to NULL while holding the SELECTION_LOCK. Other streams may block on the SELECTION_LOCK and the playsink never unblocks the pad. The result is a deadlock. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1201>
* videotestsrc: Add SMPTE75 RP-219 color bars conformantFrancisco Javier Velázquez-García2021-07-014-1/+386
| | | | | | | | | Implement 8-bit values of SMPTE RP 2019-1:2014. The bar widths and heights are the result of fractions as integers. The remainders of widths are distributed in a way that they match the values in Table C.1 (a) in the specification. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1063>
* videotestsrc: Add a start parameter to _blend_lineJan Alexander Steffens (heftig)2021-07-011-14/+15
| | | | | | Makes it easier to paint part of a line. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1063>
* videotestsrc: Keep tmpline unchanged in_convert_tmplineJan Alexander Steffens (heftig)2021-07-011-3/+18
| | | | | | | This will allow us to repeatedly call it to render subsequent lines. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1063>
* compositor: Add scaling policy to support PAR-aware scalingSeungha Yang2021-06-292-25/+182
| | | | | | | | | | Adding "sizing-policy" property for user to be able to specify scaling policy (aspect-ratio for example). At the moment, supported mode is only keep-aspect-ratio, but we might be able to add more policies such as cropping, etc. Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/696 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1156>
* rawbaseparse: check destination format correctlyDaniel Knobe2021-05-311-1/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1181>
* compositor: Consider the converter-config when deciding whether one pad ↵Sebastian Dröge2021-05-241-0/+17
| | | | | | | | | | | | | | obscures another If the converter configuration is set to not fill any borders, or if the border fill color is not full opaque, then the pad has to be handled as potentially transparent and can't be considered to obscure another one. This prevents pads from being wrongly skipped and doing alpha-blending with uninitialized memory. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1172>
* overlaycomposition: fix cut-off example code in docsTim-Philipp Müller2021-05-211-1/+1
| | | | | | Include everything to the end. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1164>
* compositor: Fix NV12 blend operationNicolas Dufresne2021-05-191-2/+2
| | | | | | | | | | The full src_height/width was being used instead of the remaining width/height for the current band. As a side effect, that value would get erroneously reset and would cause overrun. Fixes #887 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1160>
* video: Pass component index not plane indexNicolas Dufresne2021-05-192-6/+11
| | | | | | | | | | | While so far it worked, we are about to introduce a format that break this assuming. We have a format which consist of NV12 with alpha, and this format does not have a direct mapping of the component against their plane indexes. Fix this by using gst_video_format_info_component() introduced in 1.18 for this purpose. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1151>
* compositor: perform conversions in parallelMatthew Waters2021-05-172-125/+112
| | | | | | | | | | Improves throughput of the total convert and blend process and allows for higher performance across slightly more threads. Also make use of video aggregator's task pool for blending as well in order to reduce the number of threads. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1129>
* playback: Handle sources with dynamic pads and pads already presentThibault Saunier2021-05-131-66/+70
| | | | | | | | In case we already have a pad but more might be added later we were ignoring the new pads added later, we should track the element new pads and expose them as they are added. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1120>
* playback: Stop giving "source" as name to sourcesThibault Saunier2021-05-131-1/+1
| | | | | | This makes it very hard to understand what source we are talking about Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1120>
* multihandlesink: Use the monotonic clock for detecting timeouts and ↵Sebastian Dröge2021-05-054-17/+36
| | | | | | | | | | | | | | | connection durations Otherwise real-time clock changes can wrongly trigger timeouts, or not cause timeouts to happen in time. Unfortunately real-time clock times still have to be kept track inside the elements for the statistics. Switching those over to the monotonic clock would cause behaviour changes from the application point of view. The statistics are extended with fields with monotonic times though. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1137>
* Use gst_element_request_pad_simple...François Laignel2021-05-056-10/+13
| | | | Instead of the deprecated gst_element_get_request_pad.
* videotestsrc: Fix a leak when computing alpha capsNirbheek Chauhan2021-04-301-0/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1131>
* tcp: Rework client start error handling.Doug Nazar2021-04-223-35/+52
| | | | | | | Ensure errors are cleaned up properly at the right level. Abort connection attempts if we're cancelled. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1115>
* uridecodebin: Don't force floating reference for future reusable decodebinSeungha Yang2021-04-211-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>
* uridecodebin: Use gst_object_ref instead of g_object_refSeungha Yang2021-04-211-1/+1
| | | | | | It's more debugging friendly (tracer for example) Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1113>
* tcp: Convert tcpclientsink to new helpers.Doug Nazar2021-04-201-39/+29
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1105>
* tcp: Convert tcpclientsrc to new helpers.Doug Nazar2021-04-201-43/+32
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1105>
* tcp: Convert tcpserversink to new helpers.Doug Nazar2021-04-201-35/+14
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1105>
* tcp: Convert tcpserversrc to new helpers.Doug Nazar2021-04-201-36/+14
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1105>
* tcp: Add helper functions to lookup hostnames and create sockets.Doug Nazar2021-04-202-0/+79
| | | | | | | | | Lookup will now maintain the full list of possible IP address(es). We can now iterate over all available addresses in case certain address families (IPv6) are disabled or try connecting to additional addresses for the clients. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1105>
* tcp: cleanup filesDoug Nazar2021-04-2011-42/+5
| | | | | | | consolidate gsttcp.h & gsttcpelements.h rename gsttcpelement.c to match header Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1105>
* Drop `@` documentation references from functions and external typesMarijn Suijten2021-04-151-2/+2
| | | | | | | | | | | | `@` references are used to reference function parameters, struct members or enum variants _within_ the current type/function. It cannot and should not be used to reference to types outside that. Since C has no notion of member functions it makes little sense to prefix these with `@`; most of the documentation here was referencing functions on _different_ types anyway. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1090>
* playbin{2,3}: fix base_time selection when flush seeking liveMathieu Duponchelle2021-04-122-6/+44
| | | | | | | | | | This is a direct translation of <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/429>, as playbin{2,3} insulates its sub groups state changes from the pipeline base class, it needs to track whether the subgroup is live itself, and handle RESET_TIME the same way GstPipeline does. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1104>
* gstgiobasesink: Handle incomplete writes in gst_gio_base_sink_render()Robin Burchell2021-04-091-17/+5
| | | | | | | | | | | | | As the comment asked, yes, incomplete writes can happen. I have encountered this with an sshfs mount, for example. It seems like g_output_stream_write_all() is designed to handle this case, by not returning until the requested buffer has been completely written, or an error occurs, which seems to match up with the desired behaviour. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/885 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1100>
* typefind: use new gst_type_find_suggest_empty_simple()Chris White2021-04-011-20/+20
| | | | | | | | | gst_type_find_suggest_simple() now requires a NULL terminator. Use the new, simpler API for no-parameter calls. https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/774#note_861492 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1092>
* audiotestsrc: allow per feature registrationStéphane Cerveau2021-03-292-5/+7
| | | | | | | | | | | | | 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-base/-/merge_requests/1089>
* audioresample: allow per feature registrationStéphane Cerveau2021-03-292-10/+6
| | | | | | | | | | | | | 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-base/-/merge_requests/1089>
* audiorate: allow per feature registrationStéphane Cerveau2021-03-292-5/+5
| | | | | | | | | | | | | 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-base/-/merge_requests/1089>
* playback: Don't special-case G_SIGNAL_RUN_CLEANUP stage in signal accumulatorsSebastian Dröge2021-03-265-34/+17
| | | | | | 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>
* decodebin3: Don't insert duplicated streams in collectionEdward Hervey2021-03-251-1/+3
| | | | | | | Filter out the ones which are already present. Can happen with several input stream which have identical collections Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1083>
* parsebin: Put stream flags in GstStreamEdward Hervey2021-03-251-1/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1082>
* decodebin3: Make input activation "atomic"Edward Hervey2021-03-251-1/+9
| | | | | | | | | | | | | | When adding inputs dynamically, we need to make sure the new parsebin are added *and* activated by the same thread (by taking the state change lock). The rationale for this is that the calling thread might be an upstream streaming thread and when activating parsebin it might call back upstream. If we don't use the same thread (ex: when the application does a state change on decodebin3 between the moment we add parsebin to decodebin3 and we synchronize the state of parsebin) then we would end up in different threads trying to take upstream recursive locks. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/932>
* gstgiosrc: Don't leak scheme string in gst_gio_src_query()Jan Schmidt2021-03-211-0/+1
| | | | | | | Add a g_free() in the code path that forwards the query to the parent handler. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1078>
* encodebin: handle video encoder preset fail.Bing Song2021-03-191-12/+16
| | | | | | | Check video encoder preset before request muxer pad as MOV/MP4 don't support addition/removal of tracks at random times. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1064>
* gst: don't use volatile to mean atomicMatthew Waters2021-03-195-7/+7
| | | | | | | | | | | | volatile is not sufficient to provide atomic guarantees and real atomics should be used instead. GCC 11 has started warning about using volatile with atomic operations. https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1719 Discovered in https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/868 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1073>
* audioconvert: update doc for mix-matrixStéphane Cerveau2021-03-171-1/+1
| | | | | | | No need for specific cast in mix-matrix syntax. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/1072>