Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/GStreamer/gst-plugins-good.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/gst
AgeCommit message (Collapse)Author
2020-10-16rtpbin: Add clear-ssrc actionNicolas Dufresne
This action signal will delegate to clear-ssrc onto the rtpssrcdemux element associated with the session. This allow rtpbin users to clear pads and elements for a specific ssrc that is known to no longer be in use. This happens when a pad is reused in rtpsrc or ristsrc. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/736>
2020-10-16rtpvp8pay: payload temporally scaled bitstreams.John-Mark Bell
Co-Authored-By: Vincent Sanders <vince@pexip.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/728>
2020-10-16rtpvp8pay: Add picture-id-offset propertyStian Selnes
Add property to set the initial value for picture-id. RFC7741 says that picture-id MAY be initialized to a random value, thus it's also valid to simply set it to a fixed initial value. A fixed value is very useful for testing. Default behavior is not changed. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/728>
2020-10-16rtpvp8pay: move duplicate code to separate functionsMikhail Fludkov
Two new functions to modify picture id: gst_rtp_vp8_pay_picture_id_reset - picks random picture id of appropriate bitsize gst_rtp_vp8_pay_picture_id_increment - increments picture id taking care of wrapping Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/728>
2020-10-15meson: update glib minimum version to 2.56Stéphane Cerveau
In order to support the symbol g_enum_to_string in various project using GStreamer ( gst-validate etc.), the glib minimum version should be 2.56.0. Remove compat code as glib requirement is now > 2.56 Version used by Ubuntu 18.04 LTS Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/774>
2020-10-14rtpst2022-1-fecenc: fix input seqnum checkMathieu Duponchelle
We need to cast the incremented last seqnum to guint16 for consistent checks on wraparound Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/770>
2020-10-09flvmux: Correct time typesJan Alexander Steffens (heftig)
- last_dts is in milliseconds, not nanoseconds as expected for GstClockTime. Make it a generic guint64. - Use GstClockTime for the fields that actually contain nanoseconds. None of them should become negative. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/766>
2020-10-09rtpst2022-1-fecenc: Don't unconditionally use GLib 2.60 APIsSebastian Dröge
g_queue_clear_full() in this case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/768>
2020-10-09rtpulpfec: fix potential alignment issue in xor functionMathieu Duponchelle
https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/753#note_646453 for context Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/753>
2020-10-09rtpmanager: implement SMPTE 2022-1 FEC encoderMathieu Duponchelle
+ improve integration of FEC encoders in rtpbin Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/753>
2020-10-09rtpmanager: implement SMPTE 2022-1 FEC decoderMathieu Duponchelle
+ improve integration of FEC decoders in rtpbin Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/753>
2020-10-06rtpfunnel: Also forward custom sticky eventOlivier Crête
This is useful to track metadata about each group of packets Also include a unit test Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/666>
2020-09-30isomp4: Rename GstQTMux to GstBaseQTMux to avoid breaking APIThibault Saunier
Since 52b63de19ada283c1180c8fc00cacb1465fdf10f the qtmux GType was renamed GstQTMuxElement which breaks presets, revert that change. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/755>
2020-09-28rtp: Fix allocations to support source-info propertySebastian Dröge
Use gst_rtp_base_payload_allocate_output_buffer() instead of gst_rtp_buffer_new_allocate() in order to allocate RTP buffer with correct number of CSRCs according to the meta. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/612>
2020-09-28rtpvp8pay: Fix allocation to support source-info propertyStian Selnes
Use gst_rtp_base_payload_allocate_output_buffer() in order to allocate RTP buffer with correct number of CSRCs according to the meta. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/314 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/612>
2020-09-28qtmux: output the correct limits in error messagesMatthew Waters
Having the current bytes being less than the limit was confusing! Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/732>
2020-09-28qtmux: properly support initial caps nego failureMatthew Waters
Scenario: - gap event causes h264parse to push made up caps that may fail checks inside qtmux (e.g missing codec_data). - the caps event has already been marked as received and is sticky on the sink pad - gst_qt_mux_pad_can_renegotiate() will retrieve the failed caps event using gst_pad_get_current_caps() and reject the correct updated caps with codec_data. - Failure! Keep track of the configured caps ourselves instead of relying on the sticky event on the pad. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/732>
2020-09-28qtmux: support non-seekable downstream modeMatthew Waters
Write an mdat per buffer in that case. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/732>
2020-09-24rtpbin: Remove the rtpjitterbuffer with the streamNicolas Dufresne
Since !348, the jitterbuffer was only removed with the session. This restores the original behaviour and removes the jitterbuffer when the stream is removed. This avoid accumulating jitterbuffer objects into the bin when a session is reused. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/735>
2020-09-23rtpbin: Cleanup dead codeNicolas Dufresne
The rtpjitterbuffer is now part of the session elements, we no longer need to do the ref_sink dance when signalling it. It is already owned by the bin when signalled. Also, the code that handles generic session elements already handle the ref_sink() calls since: 03dc22951bacb6fdc3868c8f801e6a52c33a745f Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/735>
2020-09-21rtph26*depay: drop FU's without a corresponding start bitMatthew Waters
If we have not received a FU with a start bit set, any subsequent FU data is not useful at all and would result in an invalid stream. This case is constructed from multiple requirements in RFC 3984 Section 5.8 and RFC 7798 Section 4.4.3. Following are excerpts from RFC 3984 but RFC 7798 contains similar language. The FU in a single FU case is forbidden: A fragmented NAL unit MUST NOT be transmitted in one FU; i.e., the Start bit and End bit MUST NOT both be set to one in the same FU header. and dropping is possible: If a fragmentation unit is lost, the receiver SHOULD discard all following fragmentation units in transmission order corresponding to the same fragmented NAL unit. The jump in seqnum case is supported by this from the specification instead of implementing the forbidden_zero_bit mangling: If a fragmentation unit is lost, the receiver SHOULD discard all following fragmentation units in transmission order corresponding to the same fragmented NAL unit. A receiver in an endpoint or in a MANE MAY aggregate the first n-1 fragments of a NAL unit to an (incomplete) NAL unit, even if fragment n of that NAL unit is not received. In this case, the forbidden_zero_bit of the NAL unit MUST be set to one to indicate a syntax violation. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/730>
2020-09-21imagefreeze: Response caps query from srcpadSeungha Yang
... and chain up to default query handler for unhandled query types. Unhandled query shouldn't be returned with FALSE if there's no special needs. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/731>
2020-09-21qtmux: make documentation happyMatthew Waters
introduce a base qtmux class that we can install documentation snippets on instead of duplicating across alll the isomp4 elements Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/643>
2020-09-21isomp4/mux: add a fragment mode for initial moov with dataMatthew Waters
Used by some proprietary software for their fragmented files. Adds some support for multi-stream fragmented files Flow is as follows. 1. The first 'fragment' is written as a self-contained fragmented mdat+moov complete with an edit list and durations, tags, etc. 2. Subsequent fragments are written with a mdat+moof and each stream is interleaved as data arrives (currently ignoring the interleave-* properties). data-offsets in both the traf and the trun ensure data is read from the correct place on demuxing. Data/chunk offsets are also kept for writing out the final moov. 3. On finalisation, the initial moov is invalidated to a hoov and the size of the first mdat is extended to cover the entire file contents. Then a moov is written as regularly would in moov-at-end mode (the default). This results in a file that is playable throughout while leaving a finalised file on completion for players that do not understand fragmented mp4. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/643>
2020-09-21qtdemux: increase some logging on streams and sample parsingMatthew Waters
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/643>
2020-09-21qtdemux: bail out when encountering an atom with a size of 0Matthew Waters
A size 0 atom means the atom extends to the end of the file. No further valid atoms will ever follow. Avoids a subsequent scan for an atom from one byte earlier after encountering a size 0 atom. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/643>
2020-09-21qtdemux: fix subsequent moof parsing after moov with valid samplesMatthew Waters
reset the moof_offset back to its original value like is done in the error case just before. Fixes subsequent parsing of a moof following a moov that contains valid samples in a non-streaming fragmented mp4. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/643>
2020-09-21qtdemux: extend edit list when fragmentedMatthew Waters
When we are fragmented, the edit list may only refer to the portion of the media that is in the moov. Extend the edit list stop time when we if there is only one qt segment and we are reading a fragmented file. Fixes playback of some fragmented mp4 files generated by proprietary programs. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/643>
2020-09-18splitmuxsrc: Implement segment queryOlivier Crête
Fixes #239 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/713>
2020-09-18rtpmp4gdepay: Allow lower-case "aac-hbr" instead of correct "AAC-hbr"Sebastian Dröge
Various live555 based products are using the wrong "mode" string or seem to assume case-insensitive matching, which is wrong. Examples for this are the Yuan SC6C0N1 mini and the Kiloview E2. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/727>
2020-09-16qtdemux: Add support for AAX encrypted audio streamsStefan Brüns
This is modelled after the DASH Common Encryption scheme, but is somewhat simpler as more parts are fixed, i.e. just one encryption scheme. The output caps are fixed to 'application/x-aavd'. All information required for decryption are part of the 'adrm' atom, which is passed on as a property. The property is attached to the buffer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/577>
2020-09-16qtdemux: Add 'aavd' and related fourcc codes for AAX encrypted audioStefan Brüns
The 'aavd' box is contained in the 'stsd' sample description. The 'aavd' box follows the layout of an 'mp4a' entry, i.e. it contains a single standard 'esds' extension box, and the two proprietary 'adrm' and 'aabd' extension boxes. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/577>
2020-09-14rtp/vrawpay: use alloc_output_buffer from base classCamilo Celis Guzman
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/726>
2020-09-11rtspsrc: Fix push-backchannel-buffer parameter mismatchRicky Tang
When using python, signal parameter must match with function. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/724>
2020-09-10flvmux: Improve logging of gst_flv_mux_buffer_to_tag_internalJan Alexander Steffens (heftig)
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/722>
2020-09-10flvmux: Move stream skipping to GstAggregatorPadClass.skip_bufferJan Alexander Steffens (heftig)
Besides looking like the correct place to put this, it allows us to drop the entire aggregator queue. The old implementation only dropped at most one buffer for each call of aggregate. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/722>
2020-09-09splitmuxsink: fix sink pad release while PLAYINGMathieu Duponchelle
- Release the split mux lock while removing the probes - Flush the sinkpad to unblock other pads - Turn check_completed_gop into a do while statement, when waking up we want to recheck whether the current GOP is ready for sending Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/719>
2020-09-07gst: Update for gst_video_transfer_function_*() function renamingSebastian Dröge
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/715>
2020-08-31flvmux: Avoid crash when best pad gets flushedJan Alexander Steffens (heftig)
The 'best' pad might receive a flush event between us picking it and us popping the buffer. In this case, the buffer will be missing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/711>
2020-08-31flvmux: Correct breaks in gst_flv_mux_find_best_padJan Alexander Steffens (heftig)
The code seems to use `continue` and `break` as if both refer to the surrounding `while` loop. But because `break` breaks out of the `switch`, they actually have the same effect. This may have caused the loop not to terminate when it should. E.g. when `skip_backwards_streams` drops a buffer we should abort the aggregation and wait for all pads to be filled again. Instead, we might have just selected a subsequent pad as our new "best". Replace `break` with `done = TRUE; break`, and `continue` with `break`. Then simplify the code a bit. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/710>
2020-08-24rtpL16depay: unref buffer on errorZeid Bekli
gst_rtp_L16_depay_process to unref buffer on wrong payload size or reorder failure. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/702>
2020-08-18rtputils: Don't call NULL GstMeta transform functionSebastian Dröge
It's optional and if it does not exist then no transformation is possible. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/701>
2020-08-13rtp: Do not register rtpreddec and rtpredenc twiceJulian Bouzas
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/699>
2020-08-13rtpmanager: Improve readability of "stats" docs by making the fields an ↵Sebastian Dröge
actual list Otherwise they end up all in the same line one after another. Also add docs for the "avg-jitter" stats field of the jitterbuffer. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/698>
2020-08-10flvmux: Return NEED_DATA when we drop a bufferVivia Nikolaidou
When we are dropping a buffer in find_best_pad (e.g. waiting for a keyframe, or skipping backwards timestamp), return GST_AGGREGATOR_FLOW_NEED_DATA to make sure we have enough data at the next run. Otherwise, a stream that accidentally fell behind (e.g. relinking race, or just waiting for a keyframe) will never get the opportunity to catch up to the other one, because the other one will always keep advancing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/696>
2020-08-10flvmux: Return NEED_DATA when no best pad is foundVivia Nikolaidou
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/696>
2020-08-10flvmux: Fix possible crash on GST_ITERATOR_RESYNCVivia Nikolaidou
Wrong pointer type Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/696>
2020-08-08rtph26[45]pay: Change default aggregate-mode to "none" for backwards ↵Sebastian Dröge
compatibility We didn't aggregate at all in previous versions and there are apparently various RTP implementations that don't handle aggregation well at all. As part of this also document that for RTSP it is recommended to keep it set to "none" while for WebRTC it should be set to "zero-latency". Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/issues/749 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/692>
2020-08-04splitmuxsink: Make sure flushing doesn't blockJan Alexander Steffens (heftig)
* Trying to disconnect a stream from a running splitmuxsink by flushing it results in the FLUSH_START blocking in the stream queue's gst_pad_pause_task because the flush did not unblock complete_or_wait_on_out, so add a check for ctx->flushing there. * Add a GST_SPLITMUX_BROADCAST_INPUT so check_completed_gop notices flushing changed and the incoming push is unblocked. * Pass the FLUSH_STOP along to the muxer without waiting. Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/687>
2020-08-04imagefreeze: Wait until we have a clockVivia Nikolaidou
Otherwise it can happen that it tries to get the clock in PAUSED state in live mode, which does not exist. Thanks to Sebastian Dröge for helping debugging. Fixes #775 Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/691>