summaryrefslogtreecommitdiff
path: root/subprojects
Commit message (Collapse)AuthorAgeFilesLines
...
* rtpdtmfsrc: Classify as RTP sourcePhilippe Normand2023-05-092-2/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4582>
* meson: Add more qt options and eliminate all automagicNirbheek Chauhan2023-05-093-102/+139
| | | | | | | | | The qt5 and qt6 plugins will now correctly error out if you enable the option, and you can also now explicitly ensure that wayland, x11, eglfs support is actually functional by enabling the options. It was too easy to build non-functional support for these. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4537>
* msdk: Remove unreachable statementYinhang Liu2023-05-091-2/+0
| | | | | | | The execution cannot reach the statement: "gst_caps_unref(dma_caps);", so remove it. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4449>
* jack: tone down log ERRORs in case no JACK server is runningTim-Philipp Müller2023-05-081-10/+40
| | | | | | | | | | | | | | jackaudiosink and jackaudiosrc have a rank and might be plugged as part of auto-plugging inside playbin and playsink or the autoaudiosink/autoaudiosrc elements, so we don't really want to spew ERROR log messages in that case, which is consistent with what alsasink and pulseaudiosink do. This is less noticable on Linux because pulseaudiosink has a higher and alsasink which has the same rank comes before jack in the alphabet. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4545>
* webrtcdatachannel: Bind to parent webrtcbin using a weak referencePhilippe Normand2023-05-083-5/+30
| | | | | | | | | | The previous approach of using a simple pointer could lead to a use-after-free in case a data-channel was created and its parent webrtcbin was disposed soon after. Fixes #2103 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4160>
* plugin ext dep INFO: Adding var name and value part numberMaxim P. DEMENTYEV2023-05-081-2/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4570>
* webrtc/nice: support consent-freshness RFC7675Matthew Waters2023-05-081-0/+1
| | | | | | | | As is supported by libwebrtc already. This allows ICE components to transition to failed if consent to send from the peer is revoked or if multiple consent packets are lost. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4542>
* pbutils: discoverer: Mark gst_discoverer_stream_info_get_stream_id() as nullableSebastian Dröge2023-05-081-1/+1
| | | | | | It can return NULL in certain situations. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4572>
* pluginloader-win32: Use UWP compatible Windows APISeungha Yang2023-05-062-10/+31
| | | | | | CreateFile2 API should be used in case of UWP Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4556>
* d3d11: Add support for IPCSeungha Yang2023-05-0612-0/+4020
| | | | | | | Adding d3d11ipcsrc and d3d11ipcsink elements so that Direct3D11 textures can be shared between processes Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4514>
* d3d11memory: Don't clear wrapped texture memorySeungha Yang2023-05-051-0/+7
| | | | | | | The external texture may hold already rendered scene and therefore it should not be cleared in alloc method Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4554>
* onnx: Fix typo in documented pipelineRuben Gonzalez2023-05-051-1/+1
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4552>
* vkdebug: fix type compilation warningVíctor Manuel Jáquez Leal2023-05-051-1/+1
| | | | | | | | | Since VkMemoryHeapFlagBits is an enum, while VkMemoryHeapFlags is the expected alias of VkFlags. This issue is spotted by warning of gcc 13.1.1 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4547>
* videoflip: fix setting of method property at construction timeMathieu Duponchelle2023-05-052-2/+20
| | | | | | | | | | | | | | | | | | | | | | | | | Since c2f890ab, element properties are gathered from the parse-launch line and passed at object construction. This caused the following issue to happen in videoflip: * videoflip installed a CONSTRUCT property named method, now deprecated * videoflip now also overrides that property with a video-direction property GObject construction causes method to be set first at construct time, with the user-provided value, then video-direction with the default value. The user-provided value was thus overridden, causing a regression. Fix by not installing the properties as CONSTRUCT, and explicitly implementing constructed() instead in order to ensure that we do still call gst_video_flip_set_method() at least once during construction. Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2529 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4536>
* rtpvp8pay: rtpvp9pay: access picture_id property atomicallyCamilo Celis Guzman2023-05-054-37/+46
| | | | | | | | | | | Atomically set and get the picture_id. This changeset only atomically gets the picture-id when such property is queried on the element, on every other place where it is accessed internally it is accessed directly. This is because there is no MT scenario where we would be modifying this value and reading it internally in parallel. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>
* rtpvp8pay, rtpvp9pay: increment PictureID on FLUSH_STARTCamilo Celis Guzman2023-05-053-7/+71
| | | | | | | | | | | | | | | In recent versions of Chrome (M106) a change on their jitter buffer means that they are very susceptible to PictureID discontinuities. Then avoid at all cost resetting the PictureID. Moreover, according to the RFCs for VP8 and VP9 payloads; the PictureID can start off at any random value. So there is no logical problem of incrementing it here rather than resetting it, as long as it is a different PictureID. WebRTC's recent corruption issue: https://bugs.chromium.org/p/webrtc/issues/detail?id=15101 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>
* rtpvp8pay, rtpvp9pay: expose picture-id as a propertyCamilo Celis Guzman2023-05-053-0/+61
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>
* rtpvp9pay: tests: remove unused struct and argument on testCamilo Celis Guzman2023-05-051-14/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>
* rtpvp9pay: add picture-id-offset propertyCamilo Celis Guzman2023-05-053-2/+48
| | | | | | | | Bring the VP9 payloader in sync in this regard to the VP8 payloader Allowing setting the picture id to a known value is useful when testing. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>
* rtpvp9pay: minor refactor of PictureID logicCamilo Celis Guzman2023-05-051-12/+45
| | | | | | This brings the logic inline with the vp8pay Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>
* rtpvp8pay: avoid reseting PictureID if NO_PICTURE_ID mode is setCamilo Celis Guzman2023-05-051-6/+10
| | | | | | | | There is no logical change here, as `& (1 << nbits) - 1` would produce also 0 when NO_PICTURE_ID mode is choosen. However, this avoid computing a random integer that is actually unused. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>
* rtpvp8pay, rtpvp9pay: use GType like name for PictureIDModeCamilo Celis Guzman2023-05-053-7/+7
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4530>
* gst-libav: add avvideocompare elementU. Artie Eoff2023-05-045-0/+802
| | | | | | | | | | The avvideocompare element compares two incoming video buffers using the specified comparison method (e.g. ssim or psnr). The first video buffer is passthrough, unchanged. The comparison is calculated by using libav's ssim or psnr filters. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3366>
* mfvideoenc: Allow only even resolution numbersSeungha Yang2023-05-041-6/+11
| | | | | | | | | | Some H/W vendors support odd resolution if D3D11 texture is used or via IMF2DBuffer, but not all vendors support it. Also software MFT does not allow odd resolution. Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1165 Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2537 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4540>
* gstreamer: pluginloader: Remove unnecessary Windows special casesSebastian Dröge2023-05-041-54/+22
| | | | | | The Windows plugin loader is in a separate file. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4541>
* gstreamer: #undef a few local #defines after usageSebastian Dröge2023-05-043-0/+6
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4541>
* gstreamer: ptpclock: Remove unnecessary empty lineSebastian Dröge2023-05-041-1/+0
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4541>
* gstreamer: Fix minor memory leak in error path for internal path depth ↵Sebastian Dröge2023-05-042-0/+2
| | | | | | helper function Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4541>
* ptp: Allow relocation of GStreamer installation for finding PTP helper processSebastian Dröge2023-05-033-4/+208
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4538>
* gst: pluginloader: De-duplicate count_directories() private functionSebastian Dröge2023-05-034-147/+71
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4538>
* qtdemux: emit no-more-pads after pruning old padsXabier Rodriguez Calvar2023-05-031-2/+2
| | | | | | | | If we don't do that, clients can rely on this signal to see the final pad topology but it won't be the real one as some of them will disappear after emitting that signal. This can happen after injecting a different init segment. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4535>
* v4l2: device provider: Fix GMainLoop leakNicolas Dufresne2023-05-031-3/+10
| | | | | | | | | On very quick start/stop, the mainloop may never be run. As a side effect, our idle stop function is not really being ran, so we can't rely on that to free the main loop. Simply unref the mainloop when the thread have completely stop. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4521>
* qtdemux: Only set appsink sync property and check for async state changesCarlos Rafael Giani2023-05-031-25/+24
| | | | | | | | | | | | | | | | | By keeping async to TRUE, a deadlock is avoided where the appsink is filled with data after a flushing seek but before its PAUSED->PLAYING state change finishes. If that happens, the appsink is stuck, because its internal condition variable waits for the appsink to have more room for data. The basesink's preroll lock is held during this, and it also tries to acquire that lock during the state change -> deadlock. By keeping async to TRUE, this flood of data does not happen. Also, setting the max-buffers property to 1 is unnecessary - the test runner will anyway detect excess memory usage if it happens. Other property adjustments turned out to just be redundant. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4200>
* qtdemux: Add audio clipping meta when playing gapless m4a contentCarlos Rafael Giani2023-05-037-3/+775
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4200>
* qtdemux: use qtdemux debug category instead of default in qtdemux_tags.cCarlos Rafael Giani2023-05-031-0/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4200>
* webrtcbin: Fix potential deadlock when closing before any data was sentPhilippe Normand2023-05-031-0/+5
| | | | | | | | | A blocking pad probe is added on new sink pads, it's usually removed after the caps have been negotiated or the signaling state switched to stable, but if that never happens and the pad is released we kept the pad probe active, leaving the pad blocked, preventing clean disposal. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4529>
* amrnb, amrwbdec: move AMR-NB and AMR-WB plugins to -goodTim-Philipp Müller2023-05-0225-403/+211
| | | | | | | | Fedora ships these libraries as part of the main distribution now, and they are decades old anyway so don't implement any of the newer features. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4512>
* glvideomixer: Implement force-live and min-upstream-latency propertiesJan Schmidt2023-05-024-1/+119
| | | | | | | | | | | Proxy the force-live and min-upstream-latency propertyies to the internal glvideomixerelement at construction time. force-live has to be set during construction of the glvideomixerelement, so that has to be deferred until the _constructed() call. Make sure that all other existing proxied properties will still get set once the element is created. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4494>
* rtpmanager/rtsession: race conditions leading to critical warningsFrançois Laignel2023-05-021-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | While testing the [implementation for insertable streams] in `webrtcsink` & `webrtcsrc`, I encountered critical warnings, which turned out to result from two race conditions in `rtpsession`. Both race conditions produce: > GLib-CRITICAL: g_hash_table_foreach: > assertion 'version == hash_table->version' failed This commit fixes one of the race conditions observed. In its simplest form, the test consists in 2 pipelines and a Signalling server: * pipelines_sink: audiotestsrc ! webrtcsink * pipelines_src: webrtcsrc ! appsrc 1. Set `pipelines_sink` to `Playing`. 2. The Signalling server delivers the `producer_id`. 3. Initialize `pipelines_src` to establish a session with `producer_id`. 4. Set `pipelines_src` to `Playing`. 5. Wait for a buffer to be received by the `appsrc`. 6. Set `pipelines_src` to `Null`. 7. Set `pipelines_sink` to `Null`. The race condition happens in the following sequence: * `webrtcsink` runs a task to periodically retrieve statistics from `webrtcbin`. This transitively ends up executing `rtp_session_create_stats`. * `pipelines_sink` is set to `Null`. * In `Paused` to `Ready`, `gst_rtp_session_change_state()` calls `rtp_session_reset()`. * The assertion failure occurs when `rtp_session_reset` is called while `rtp_session_create_stats` is executing. This is because `rtp_session_create_stats` acquires the lock on `session` prior to calling `g_hash_table_foreach`, but `rtp_session_reset` doesn't acquire the lock before calling `g_hash_table_remove_all`. Acquiring the lock in `rtp_session_reset` fixes the issue. [implementing insertable streams support]: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1176 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4528>
* srt: assert instead of segfault when passing no error to ERROR_TO_WARNINGGuillaume Desmottes2023-05-021-1/+3
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4524>
* srt: fix segfault if send_headers() failedGuillaume Desmottes2023-05-021-1/+1
| | | | | | | | The error handling code was assuming that 'internal_error' was set, while we were passing the caller GError. The internal error is already propagated to the caller later on. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4524>
* pluginfeature: fix unexpected version check behaviour for git versionsTim-Philipp Müller2023-05-022-17/+10
| | | | | | | | | | check_version(1.23.1) would return TRUE for a git development version like 1.23.0.1, which is quite confusing and somewhat unexpected. We fixed this up in the version check macros already in !2501, so this updates the run-time check accordingly as well. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4513>
* qtdemux: Fix segfault in cenc sample groupingXabier Rodriguez Calvar2023-05-021-1/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4523>
* dtlstransport: Keep strong ref of dtls encoder/decoderPhilippe Normand2023-05-021-2/+30
| | | | | | | | Otherwise get_property() calls for the client, certificate and/or remote-certificate properties might access moved objects, since the encoder and decoder are added to the transportsendbin. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4519>
* v4l2: pool: Flush events on capture queueNicolas Dufresne2023-05-013-8/+60
| | | | | | | | | | | Unfortunately streamoff does not flush the events, and this can cause all sort of issues. Flush events on capture queue. We also return GST_V4L2_FLOW_RESOLUTION_CHANGE in case a resolution change was seen. This allow skipping streamon(capture) on flush, which could lead to a configuration miss-match, or failure if the buffers aren't of the right size. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>
* v4l2: videodec: Detect flushes while setting up the captureNicolas Dufresne2023-05-011-1/+9
| | | | | | | | As we missed the fact we were flushing, we could create and activate that buffer pool, and wait on it, causing a hang. We detect that we are flushing by checking the related pad state. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>
* v4l2: bufferpool: Don't copy buffer when flushingNicolas Dufresne2023-05-011-2/+4
| | | | | | | Threshold handling can race with flushing operation. This can lead to avoidable buffer copies. Simply check and return the flushing status. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>
* v4l2: videodec: Don't forcibly drain on resolution changesNicolas Dufresne2023-05-012-21/+32
| | | | | | | | | | Let the driver detects the change and reconfigure the capture side transparently from there. This avoid reallocation of the output buffers, and eliminates the need to stop and restart the capture task. This is only happening if the driver have support for this, otherwise the old behaviour is maintained. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>
* v4l2: videodec: Remove the spurious srccaps probeNicolas Dufresne2023-05-011-14/+0
| | | | | | | | We don't need to probe the srccaps in set_format() anymore, this handled already in the capture thread while setting up the capture queue. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>
* v4l2: videodec: Improve few logsNicolas Dufresne2023-05-011-1/+5
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4437>