summaryrefslogtreecommitdiff
path: root/gst
Commit message (Collapse)AuthorAgeFilesLines
* intervideosrc: fix negotiation of interlaced capsLim Siew Hoon2020-12-131-2/+3
| | | | | | | | In 1.0 the field in caps is called "interlace-mode", not "interlaced". Fixes #1480 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1869>
* basetsmux: Don't send the capsheader if src pad has no capsVivia Nikolaidou2020-12-091-3/+7
| | | | | | | That means we're shutting down, so there's no point in the streamheader being sent Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1864>
* rtmp2/connection: pass the parent cancellable down to the connectionMatthew Waters2020-12-083-6/+12
| | | | | | | | | | | | | | | | Otherwise, when rtpm2src cancels an inflight operation that has a queued message stored, then the rtmp connection operation is not stopped. If the cancellation occurs during rtmp connection start up, then rtpm2src does not have any way of accessing the connection object as it has not been returned yet. As a result, rtpm2src will cancel, the connection will still be processing things and the GMainContext/GMainLoop associated with the outstanding operation will be destroyed. All outstanding operations and the rtmpconnection object will therefore be leaked in this case. Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1425 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1862>
* rtpmanagerbad: allow setting caps on rtpsrcMarc Leeman2020-12-042-0/+44
| | | | | | | rtpsrc tries to do a lookup of the caps based on the encoding-name. For not so standard encodings, the caps can be set, avoiding the lookup. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1406>
* tsparse: Forward incoming timestampsEdward Hervey2020-12-023-22/+52
| | | | | | | | | | | | | | Ensure we properly forward the upstream PTS/DTS on the regular and program source pads. All packets being processed will carry over the latest PTS/DTS (as a reconstructed GstBuffer). Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1419 And properly forward PTS/DTS for program pads (which wasn't the case before) Original patch by Vivia Nikolaidou <vivia@ahiru.eu> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1769>
* transcodebin: Minor error message enhancementThibault Saunier2020-11-301-3/+7
|
* transcodebin: Unlock while setting decodebin capsThibault Saunier2020-11-301-0/+4
| | | | Otherwise it will deadlock recursing up to notify parent object property changes
* transcodebin: Avoid plugin converter if filter handles ANY capsThibault Saunier2020-11-301-5/+31
| | | | | | For example identity or clocksync or this kind of elements can be used with any data flow and we should not enforce decoding to row in that case.
* transcodebin: Add filter as soon as it is setThibault Saunier2020-11-301-1/+3
| | | | | | | | Instead of waiting so that we can simply use a clocksync element as filter, otherwise we won't know the pipeline is live as it won't return NO_PREROLL as one would expect in that case. Adding it right away shouldn't create any issue, both ways are fine.
* uritranscodebin: Add `setup-source` and `element-setup` signalsThibault Saunier2020-11-301-0/+59
| | | | The same way as playbinX does it as it is often quite useful
* transcode: Port to encodebin2Thibault Saunier2020-11-302-64/+182
| | | | This allows supporting muxing sinks like hlssink2 or splitmux
* audio: Use new AudioFormatInfo::fill_silence functionMarijn Suijten2020-11-262-2/+2
| | | | | | | | The function is renamed to be properly associated with AudioFormatInfo (its instance) instead of AudioFormat (an unrelated enum), see [1] for the rename itself. [1]: https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/merge_requests/940
* mpegtsdemux: Fix off by one errorEdward Hervey2020-11-131-1/+1
| | | | | | | Turns out timestamps of zero are valid :) Fixes issues with streams where the PTS/DTS would be equal to the first PCR. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1807>
* h264parse: try harder to update timecodeMathieu Duponchelle2020-11-131-3/+3
| | | | | | | | NumClockTS is the maximum number of timecodes the pic_timing SEI can carry, but it is perfectly OK for it to carry fewer, and have one of the clock_timestamp_flags set to 0. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1804>
* h264parse: fix installing of update-timecode propertyMathieu Duponchelle2020-11-121-2/+2
| | | | | | | Simply fixes a typo that did not have any adverse effect, and avoid hardcoding initializer Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1805>
* mpegdemux: Set duration on seeking query if possibleSeungha Yang2020-11-111-3/+7
| | | | | | | Set duration on seeking query in the same way as duration query handler. Otherwise application might get confused as if the duration is unknown. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1791>
* mpegtspacketizer: Handle PCR issues with adaptive streamsEdward Hervey2020-11-091-3/+15
| | | | | | | | | | | A lot of content producers out there targetting "adaptive streaming" are riddled with non-compliant PCR streams (essentially all the players out there just use PTS/DTS and don't care about the PCR). In order to gracefully cope with these, we detect them appropriately and any small (< 15s) PCR resets get gracefully ignored. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1785>
* aiffparse: Also set a channel mask for 2 channelsyoungh.lee2020-11-041-36/+31
| | | | | | | And only do add debug output at FIXME level when using the fallback channel mask, not for those defined in the AIFF spec. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1756>
* transcodebin: Create the decodebin in _initThibault Saunier2020-10-291-66/+72
| | | | | | This way user can request pads right from the beginning Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1151>
* transcodebin: Accept more than one streamPhilippe Normand2020-10-291-4/+15
| | | | | | | | Look-up the stream matching the given ID also after building the stream list from the received collection. Without this change the transcoder would discard the second incoming stream. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1151>
* transcodebin: Port to decodebin3Thibault Saunier2020-10-292-42/+311
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1151>
* uritranscodebin: Move to using a urisourcebin for our source.Thibault Saunier2020-10-291-31/+60
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1151>
* rtmp2src: Set buffer timestamp on output bufferSeungha Yang2020-10-281-0/+2
| | | | | | | | This timestamp information would be useful for queue2 element when calculating time level and also it makes buffering decision more reliable. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1727>
* jpeg2000parse: sub-sampling parse should take component into accountAaron Boxer2020-10-271-11/+14
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1653>
* jpeg2000parse: no pts interpolation with subframe.Stéphane Cerveau2020-10-271-0/+4
| | | | | | The jpeg2000parser must not interpolate PTS with subframes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1653>
* jpeg2000parse: support frame and stripe alignment in capsAaron Boxer2020-10-271-1/+54
| | | | | | | | | | forward alignment and num-stripes caps properties Use caps height when setting caps for subframe We want downstream to use full frame height, not subframe height Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1653>
* rtpsrc: Cleanup on BYE, timeout or when pad is reusedNicolas Dufresne2020-10-161-0/+24
| | | | | | | | In this patch, we enabled 'autoremove' feature of rtpbin and also call 'clear-ssrc' on the rtpssrcdemux element when a pad is being reused. This ensure that the jitterbuffer is removed and no threads accumulates. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1575>
* rtpsrc: re-use the same src pad for streams that have the same payload typeGeorge Kiagiadakis2020-10-161-5/+18
| | | | | | | | | Also use payload type when naming pads, this will make it easier to identify pads and simplify the code. Fixes #1395 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1575>
* h265parse: Don't enable passthrough by defaultSeungha Yang2020-10-151-0/+6
| | | | | | | SEI messages contain various information which wouldn't be conveyed by using upstream CAPS (HDR, timecode for example). Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1639>
* rtpmanagerbad: remove duplicate parent declarationMarc Leeman2020-10-121-2/+0
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1689>
* rtmp2sink: fix since marker on new "stop-commands" propertyTim-Philipp Müller2020-10-121-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1687>
* h265parse: set interlace-mode=interleaved on interlaced contentGuillaume Desmottes2020-10-091-2/+2
| | | | | | | | | | | | | | interlace-mode=alternate is a special case of interlace-mode=interleaved where the fields are split using two different buffers. We should use the latter instead of the former to no break compat with elements supporting only 'interleaved'. Decoders producing alternate, such as OMX on the Zynq, should change the interlace-mode on their output caps. Fix https://gitlab.freedesktop.org/gstreamer/gst-plugins-base/-/issues/825 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1655>
* mpegtsmux: Restore intervals when creating TsMuxJan Alexander Steffens (heftig)2020-09-231-0/+3
| | | | | | | Otherwise the settings from the properties would be overwritten with the defaults. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1593>
* audiobuffersplit: Add support for specifying output buffer sizeSanchayan Maity2020-09-212-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | Currently for buffer splitting only output duration can be specified. Allow specifying a buffer size in bytes for splitting. Consider a use case of the below pipeline appsrc ! rptL16pay ! capsfilter ! rtpbin ! udpsink Maintaining MTU for RTP transfer is desirable but in a scenario where the buffers being pushed to appsrc do not adhere to this, an audiobuffersplit element placed between appsrc and rtpL16pay with output buffer size specified considering the MTU can help mitigate this. While rtpL16pay already has a MTU setting, in case of where an incoming buffer has a size close to MTU, for eg. with a MTU of 1280, a buffer of size 1276 bytes would be split into two buffers, one of 1268 and other of 8 bytes considering RTP header size of 12 bytes. Putting audiobuffersplit between appsrc and rtpL16pay can take care of this. While buffer duration could still be used being able to specify the size in bytes is helpful here. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1578>
* h265parse: recognize more HEVC extension streamsHaihao Xiang2020-09-161-1/+2
| | | | | | | | | | | | There are streams which have the right general_profile_idc and general_profile_compatibility_flag, but don't have the right extension flags. We may try to use chroma_format_idc and bit_depth to recognize these streams. e.g. https://www.itu.int/wftp3/av-arch/jctvc-site/bitstream_exchange/draft_conformance/SCC/IBF_Disabled_A_MediaTek_2.zip Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1328>
* tsdemux: Parse Audio Preselection Descriptoryychao2020-09-141-0/+26
| | | | | | | | | | For Dolby AC4 audio experience, parsing PMTs/APD from transport stream layer for all available presentations. Refer to ETSI EN 300 468 V1.16.1 (2019-05) 1. 6.4.1 Audio preselection descriptor 2. Table M.1: Mapping of codec specific values to the audio preselection descriptor Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1555>
* tsdemux: Add new API for fetching extended descriptorsyychao2020-09-143-4/+19
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1555>
* videoparsers: Add vp9parse elementSeungha Yang2020-09-104-0/+828
| | | | | | | | | | | | | | | | | | | | Adding vp9parse element to parse various stream information such as resolution, profile, and so on. If upstream does not provide resolution and/or profile, this would be useful for decodebin pipeline for autoplugging suitable decoder element depending on template caps of each decoder element. In addition, vp9parse element supports unpacking superframe into single frame for decoders. The vp9 superframe is a frame which consists of multiple frames (or superframe with one frame is allowed) followed by superframe index block. Then unpacked each frame will be considered as normal frame by decoder. The decision for unpacking will be done by downstream element's "alignment" caps field, which can be "super-frame" or "frame". If downstream specifies the "alignment" as "frame", then vp9parse element will split an incoming superframe into single frames and the superframe index (located at the end of the superframe) data will be discarded by vp9parse element. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1041>
* rtmp2: Replace stats queue with stats lockJan Alexander Steffens (heftig)2020-09-093-46/+38
| | | | | | | | | | Making the thread receiving the stats wait on the loop to respond was not a good idea, as the latter can get blocked on the streaming thread. Have get_stats read the values directly, adding a lock to ensure we don't read garbage. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1550>
* rtmp2sink: add docs section with since marker on new stop-commands propertyNazar Mokrynskyi2020-09-092-0/+16
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1256>
* rtmp2: fix code style, update documentation cacheNazar Mokrynskyi2020-09-091-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1256>
* rtmp2: Clean up (improve) GstRtmpStopCommands typeJan Alexander Steffens (heftig)2020-09-094-43/+44
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1256>
* rtmp2sink: handle EOS event and close streamNazar Mokrynskyi2020-09-093-0/+139
| | | | | | https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1285 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1256>
* mpegtsmux: Make handling of sinkpads thread-safeJan Alexander Steffens (heftig)2020-09-092-42/+66
| | | | | | | | | | Ensure we take the object lock while accessing `GstElement.sinkpads`. Use an iterator when the code isn't simple to avoid deadlock. When we find the best pad, take a reference so a concurrent pad release doesn't destroy the pad before we're done with it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1553>
* mpegtsmux: Don't create streams with reserved PIDEdward Hervey2020-09-081-0/+11
| | | | | | | | | | | | | | There are quite a few reserved PID in the various MPEG-TS (and derivate) specifications which we should definitely not use. Those PID have a certain meaning and purpose. Furthermore, a lot of the code in the muxer implementation also makes assumption on the purpose of streams based on their PID. Therefore, when requesting a pad with a specific PID, make sure it is not a restricted PID. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1561>
* gst: Update for gst_video_transfer_function_*() function renamingSebastian Dröge2020-09-072-2/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1557>
* mpegtsmux: Keep mux usable after stopJan Alexander Steffens (heftig)2020-09-011-1/+1
| | | | | | | | | | Otherwise you cannot request new pads until after it is started again. gst_base_ts_mux_reset with FALSE is still called in the dispose implementation, so the muxer still gets deallocated when we actually clean up. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1552>
* rtmp2: Need to unescape the userinfo before settingNirbheek Chauhan2020-08-301-1/+7
| | | | | | | This regressed in 827afa206d8c9675f2a7af402396552c2ed1df09. The same fix was also committed to the webrtc element, but rtmp2 was missed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1547>
* proxysink: event_function needs to handle the event when it is disconnecetd ↵Jose Quaresma2020-08-131-1/+3
| | | | | | | | | | | from proxysrc without this a disconneted proxysink fail when goes to play with error: Internal data stream error. streaming stopped, reason error (-5) Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1508>
* Correct typos in gsth264parse.cFelix Yan2020-08-121-2/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1511>