summaryrefslogtreecommitdiff
path: root/gst
Commit message (Collapse)AuthorAgeFilesLines
* codecalpha: alphacombine: add support for NV12/AV12Daniel Almeida2021-05-271-9/+45
| | | | | | | | | | Alpha combine works by appending the GstMemory for the alpha channel to the GstBuffer containing I420, thereby pushing A420 on its src pad. Add support for the same workflow for NV12, thereby producing the recently introduced AV12 format (NV12 + Alpha). Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2277>
* interlace: Don't set field-order field for progressive capsSeungha Yang2021-05-271-0/+4
| | | | | | That would cause negotiation issue Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2282>
* interlace: Drop framerate from query caps of sinkpadSeungha Yang2021-05-271-7/+14
| | | | | | | | | | Query caps should return caps which represent the element can accept, not resulting format. Fixing negotiation error with gst-launch-1.0 videotestsrc ! video/x-raw,framerate=25/1 ! interlace field-pattern=0 ! fakesink Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2282>
* Use gst_buffer_new_memdup()Tim-Philipp Müller2021-05-242-5/+5
| | | | | | | | Update for function rename in core. https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/827 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2281>
* Use new gst_buffer_new_copy()Tim-Philipp Müller2021-05-232-5/+5
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2279>
* mpegtsmux: Fixup program array indices after stream removalJan Alexander Steffens (heftig)2021-05-201-10/+31
| | | | | | | | | | | | Each stream stores the `program_array_index` of its position in its program's `streams` array. When we remove a stream from this array, we need to correct the `program_array_index` of all streams that were backshifted by the removal. Also extract the removal into a new function and add some more safety checks. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2266>
* audiolatency: Drop incoming downstream stick eventsSeungha Yang2021-05-201-0/+22
| | | | | | | stream-start, caps, and segment events will be pushed by internal audiotestsrc element. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2265>
* audiolatency: Use live mode audiotestsrcSeungha Yang2021-05-201-1/+2
| | | | | | | | Expected use case of audiolatency element is that mimic audio capture device which is most likely live source. So audiolatency element should use live mode as well. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2265>
* interlace: Fix too small buffer size errorSeungha Yang2021-05-171-5/+34
| | | | | | | | | Even though input/output resolutions are identical there, default buffer size of progressive and interleaved formats could be different because we are rounding up height of all plane of interlaced frame to be multiple of two. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2244>
* alphacombine: Ignore all events coming from the alpha_padNicolas Dufresne2021-05-141-16/+5
| | | | | | | | | | | | As per usage of this element, everything from this pad is a duplicate. Instead of implemented needless aggregation, simply drop all events from this pad and let the one from the main stream passthrough. Also stop proxying some queries from the alpha pad_too. This fixes racy test failure: - validate.file.playback.scrub_forward_seeking.opus_vp9-alpha_webm Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2247>
* codecalphademux: Do not set a GstFlowReturn from a booleanNicolas Dufresne2021-05-141-2/+2
| | | | | | | | | This was a small overlook, gst_pad_send_event() returns a boolean, so setting it into ret could confuse the flow combiner. Though, it didn't bug, since both 0 and 1 are success (though 1 being undefined). Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2247>
* codecalphademux: Remove eos flow return workaroundNicolas Dufresne2021-05-141-28/+6
| | | | | | | | | It turns out that downstream returning OK after EOS is a bug in multiqueue. As we moved to queue, we no longer have this issue. Let's keep the code clean and just assuming that downstream will keep returning EOS and allow convergence of flow. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2247>
* alphadecodebin: Use normal queues instead of multiqueueNicolas Dufresne2021-05-131-28/+18
| | | | | | | | The multiqueue was too flexible for our need, allowing to queue passed the configured threshold. It also didn't work well when trying to propagate EOS flow return. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2238>
* alphacombine: Implement flow return propagationNicolas Dufresne2021-05-131-18/+25
| | | | | | | The EOS handling was not the problem way. Instead of this, implement proper prorogation of the flow return for the alpha chain function. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2238>
* codecalphademux: Fix handling of flow combineNicolas Dufresne2021-05-131-7/+28
| | | | | | | | | | | | As the alphacombine is simplified to received matching pair of buffers, we can't just stop streaming when we receive EOS from downstream. Due to usage of queue, the moment we get this return value may differ. Though, by continuing pushing, we override the last_flowret on the pad which can make us miss that we effectively can combine all flow into EOS. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2238>
* testbinsrc: Handle setting URI on the flyThibault Saunier2021-05-131-20/+86
| | | | | | Reusing existing streams when possible Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2210>
* vp9parse: Manually fixate codec-alpha fieldNicolas Dufresne2021-05-111-0/+8
| | | | | | | | This is a newly introduced field, and we interpret it as false when missing in the caps. Otherwise, a simple capsfilter will just add the missing field and keep going, despite the upstream caps being a superset. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199>
* doc: codecalpha: Add plugin documentationNicolas Dufresne2021-05-111-0/+19
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199>
* alphadecodebin: Add wrappers to decode VP8/VP9 alphaNicolas Dufresne2021-05-118-1/+499
| | | | | | | | This includes base class with wrappers bin that will create a static pipeline capable of handling the VP8/VP9 alpha channel decoding using two instances of vp8/vp9dec element each. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199>
* codecalpha: Implement alphacombine elementNicolas Dufresne2021-05-114-0/+637
| | | | | | | | | This element will merge video buffers in order to use the alpha stream luma plane as the alpha of the video stream. The implementation is zero-copy and currently only support merging I420 stream with an I420, NV12 or GRAY8 alpha stream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199>
* alphacodecdemux: Implement meta demuxingNicolas Dufresne2021-05-111-6/+217
| | | | | | | Produce two streams from a buffer that has GstVideoCodecAlphaMeta attached. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199>
* Introduce CODEC Alpha pluginNicolas Dufresne2021-05-115-1/+200
| | | | | | | This plugin contains a set of utility elements allowing to extract, decode and combine CODEC (typically VP8/VP9) alpha stream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2199>
* rtpsrc: Plug leak of rtcp_send_addrJan Alexander Steffens (heftig)2021-05-071-0/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2226>
* rtpsink: Return proper pad from _request_new_padJan Alexander Steffens (heftig)2021-05-071-2/+7
| | | | | | | | Bizarrely, it returned a pad from the child rtpbin. I noticed because our application leaked the implicitly created ghost pad. Make an explicit ghost pad so this works properly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2227>
* rist: Plug leak of rtcp_send_addrJan Alexander Steffens (heftig)2021-05-071-0/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2225>
* h265parse: don't invalidate the last PPS when parsing a new SPSNirbheek Chauhan2021-05-051-1/+1
| | | | | | | | | | | | | This is a port of https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2019 to h265parse. When a SPS is received then any previous PPS remains valid. So don't clear the PPS flag from the parser state. This is important because there are encoders that don't generated a PPS after every SPS. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2217>
* Use gst_element_request_pad_simple...François Laignel2021-05-056-10/+12
| | | | | | Instead of the deprecated gst_element_get_request_pad. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2180>
* mxf: check EOS cond with any segment's flagStéphane Cerveau2021-05-041-2/+1
| | | | | | | | | | | The previous test was preventing the pad to be in EOS when the segment position was greater than segment stop. It ended up consuming all the data before getting in EOS. Regarding GST_SEEK_FLAG_SEGMENT it seems to be correctly handled later in the method. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2173>
* mxfdemux: fix keyframe detection in indexStéphane Cerveau2021-05-041-2/+7
| | | | | | | An index entry should be considered as a keyframe if the flags allow a random access only. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2173>
* jpegparse: Don't generate timestamp for 0/1 frameratesOlivier Crête2021-04-231-1/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2194>
* rtpsrc: Fix wrong/NULL URI handlingThibault Saunier2021-04-231-3/+16
| | | | | | | We can reset the URI to NULL and this fix a deadlock in that case or when the URI was invalid. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2132>
* tsdemux: fix truncated output segment when seeking with a stopMathieu Duponchelle2021-04-211-2/+1
| | | | | | | | | In disabling the stop adjustment for negative rates in 03031037fafd2d535bbefb1fdf6024b5d1159043 , two instructions were inverted resulting in the stop always being adjusted by 0 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2182>
* switchbin: When collecting srcpad caps, don't intersect with path caps.Jan Schmidt2021-04-121-5/+14
| | | | | | | | | The path caps describe the input caps that will select each path, don't intersect those with the srcpad caps, which could be completely different. Instead, when querying allowed caps for the srcpad, just construct the union of all possible output caps from all path srcpads. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2018>
* switchbin: Don't report sink pad caps for src pad queries.Jan Schmidt2021-04-121-8/+12
| | | | | | | | | When handling a caps query on the src pad, don't return the union of input caps. Even when not active, a path element can be queried for srcpad template caps, or for dropping paths the allowed downstream caps is anything - as data will be dropped anyway. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2018>
* gst-plugins: allow per feature registrationStéphane Cerveau2021-04-11322-1200/+1584
| | | | | | | | | | | | | 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/2110>
* allow NetStream.Play.PublishNotify MessageHelmut Januschka2021-04-101-0/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2154>
* debugutils: Add fakeaudiosink elementPhilippe Normand2021-04-094-1/+330
| | | | | | | This element can be useful for CI purposes on machines not running any system audio daemon. The element implements the GstStreamVolume interface. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2125>
* jpeg2000parse: fix critical log when play one gray colorspace videoHaihua Hu2021-04-081-1/+3
| | | | | | | Need guess color space based on number of components when cannot got it from sink caps Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1955>
* rtmp2: Use correct size of write macro for param2.Doug Nazar2021-04-071-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2146>
* mpegtsmux: Respect the start-time-selection property.Jan Schmidt2021-03-312-1/+31
| | | | | | | Use the start time provided by the aggregator base class for output times. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2105>
* avwait: Don't reset time tracking when receiving the same segment againSebastian Dröge2021-03-301-13/+29
| | | | | | | | This causes avwait to go back into "dropping" mode until audio and video are synced again, which is unnecessary when the segment didn't actually change. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2121>
* rtmp2/connection: Separate inner from outer cancellingJan Alexander Steffens (heftig)2021-03-281-4/+26
| | | | | | | | | | | The connection cancels itself when it is closed. To avoid the cancellable passed to `gst_rtmp_connection_new` from being unexpectedly cancelled, separate inner from outer cancellation by holding two cancellables. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1558 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2111>
* mpegpsdemux: fix accurate seekStéphane Cerveau2021-03-222-25/+7
| | | | | | | | | In an accurate seek, the segment start should be the same as the one requested in the seek. The start should be kept as the one from the segment if its inferior. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2048>
* mpegpsdemux: Keep seqnum eventsStéphane Cerveau2021-03-222-5/+31
| | | | | | | | | Keep the same seqnum of the new segment events for each of the streams. Keep the segment to send the EOS event. Keep the seek seqnum for segment and flush event. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2048>
* mpegpsdemux: avoid early EOSStéphane Cerveau2021-03-221-1/+3
| | | | | | | | | | In a case of a scr different from 0, after a seek, the src_segment.stop has been updated with the duration not including the base_time (scr). The segment position needs to be tested upon segment.stop + base_time (scr) to check for an EOS. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2048>
* gst: don't use volatile to mean atomicMatthew Waters2021-03-2210-16/+16
| | | | | | | | | | | | 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-bad/-/merge_requests/2098>
* mpegtsmux: Add PMT_%d support to prog-map.Jan Schmidt2021-03-183-5/+45
| | | | | | | Support a PMT_%d field in the prog-map, that's optionally used to set the PMT for each program in the mux. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2039>
* mpegtsmux: Don't write PCR until PAT/PMT are output.Jan Schmidt2021-03-182-28/+41
| | | | | | | Make sure streams start cleanly with a PAT/PMT and defer the first PCR output until after that. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2073>
* tsmux: finalize PCR timing for complete accuracyMathieu Duponchelle2021-03-181-0/+43
| | | | | | | | | | In order to always insert a PCR packet right on time, we need to check whether one is needed when outputting any packet, not only a packet for the PCR stream. Most of the PCR packets will remain data-carrying packets, but as a last resort we may insert stuffing packets on the PCR stream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2073>
* mpegtsmux: Improve PCR/SI scheduling.Jan Schmidt2021-03-181-69/+105
| | | | | | | | | | | | Change PCR / SI scheduling so that instead of checking if the current PCR is larger than the next target time, instead check if the PCR of the next packet would be too late, so PCR and SI are always scheduled earlier than the target, not later. There are still cases where PCR can be written too late though, because we don't check before each output packet. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2073>