summaryrefslogtreecommitdiff
path: root/gst/codecalpha
Commit message (Collapse)AuthorAgeFilesLines
* alphadecodebin: Fix stall due to QoSNicolas Dufresne2021-06-141-0/+5
| | | | | | | | | alphacombine element is a simple element that assumes buffers are always paired, or at least that missing buffers are signalled with a GAP. The QoS implementation in the GstVideoDecoder base class allow decoders dropping frames independently and that could lead to stall in alphacombine. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2326>
* 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>
* 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>
* 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-114-0/+199
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>