summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* webrtc: advertise end-of-candidate with an empty candidate stringMatthew Waters2023-05-122-16/+138
| | | | | | | | Just like what is done in the browsers. When this is sent to the peer, they will be able to know that no more candidates are coming and can complete ICE. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4598>
* macos: Set activation policy in osxvideosink and glimagesinkPiotr Brzeziński2023-05-122-8/+17
| | | | | | | | Upon creating a window, glimagesink and osxvideosink now set the policy to NSApplicationActivationPolicyRegular, which lets us show an icon in the Dock for convenience and appear in the top menu bar like other apps. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4573>
* macos: Set activation policy in `gst_macos_main`Lukas Geiger2023-05-121-0/+3
| | | | | | | | | | Setting the policy to NSApplicationActivationPolicyAccessory by default makes sure that we can activate windows programmatically or by clicking on them. Without that, windows would disappear if you clicked outside them and there would be no way to bring them to front again. This change also allows osxvideosink to receive navigation events correctly. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4573>
* macos: Remove old NSApp workaround related codePiotr Brzeziński2023-05-116-531/+15
| | | | | | | | | | | | | This is no longer needed since the introduction of `gst_macos_main()` in 1.22. Before that existed, we had a patch for GLib in Cerbero, which did work but made it impossible to update GLib at all. The code being removed was a fail-safe in case of running without said patch being applied. It's no longer needed, since for macOS we just wrap our GStreamer with an NSApplication using `gst_macos_main()`. Warnings will be displayed if no NSApp/NSRunLoop is found wherever needed, pointing the user towards using the new API. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4366>
* qtdemux: add unit test for edit list regressionTim-Philipp Müller2023-05-112-1/+125
| | | | | | | | | | | File is the mp4 file from #2549 with the mdat atom zeroed out and compressed. We compress twice because apparently compressing 5MB of zeroes effectively in one run is too difficult for gzip. https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2549 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4560>
* Revert "qtdemux: fix conditions for end of segment in reverse playback"Mathieu Duponchelle2023-05-111-9/+1
| | | | | | | | | | | | | | | This reverts commit 9deb3c27acd4161f810cd782f03bcdaccf2643c7. The test case that was described in the associated MR (https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/262) remains adequately fixed by a related MR that was merged later (https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/merge_requests/275). It introduced incorrect logic that broke edit lists as described in https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2549 Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2549 Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4560>
* osxvideosink: fix deadlock upon closing output windowPiotr Brzeziński2023-05-111-2/+3
| | | | | | | | | Invoking gst_osx_video_sink_osxwindow_destroy() can currently cause a deadlock because showFrame() keeps trying to get the same lock as well. Moving the lock closer to where it's actually needed seems to be enough to fix the issue for now. Reported-by: Alexande B <abobrikovich@gmail.com> Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4559>
* vkshaderspv: fix exampleVíctor Manuel Jáquez Leal2023-05-101-1/+1
| | | | | | Use the correct element names. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4594>
* d3d11videosink: Don't clear prepared buffer on unlock_stop()Seungha Yang2023-05-101-2/+2
| | | | | | | That can be called between prepare() and render() which results in unexpected error flow return Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4583>
* msdk: fix a not referenced build errorTong Wu2023-05-101-0/+1
| | | | | | Error Type: error C4189: ‘dma_caps’: local variable is initialized but not referenced Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4587>
* mpeg2dec: Fix conflicting type declarationEdward Hervey2023-05-101-1/+1
| | | | | | It was always a GstFlowReturn Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4588>
* closedcaption: write 0x00 padding instead of 0x80 in cc_data/cdpMatthew Waters2023-05-107-42/+48
| | | | | | | | | Depending on the exact output format, 0x00 may be a better default for padding than 0x80. 0x00 is the recommended padding value when used in CDP (and cc_data) but is not when used in s334-1a. See CTA-708-E 4.3.5 amd SMPTE 334-1-2007 5.3.2. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4578>
* ges: discoverer-manager: Don't mark signals as action signalsSebastian Dröge2023-05-092-4/+4
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4579>
* ges: discoverer-manager: Mark `discovered` signal error parameter as nullableSebastian Dröge2023-05-092-2/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4579>
* h264decoder: Drop nonexisting picture silently without errorSeungha Yang2023-05-091-4/+10
| | | | | | | | If end_picture() was not successful, we do drop corresponding GstVideoCodecFrame and therefore gst_video_decoder_get_frame() will return nullptr which is expected behavior. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4561>
* rtpmanager/rtsession: data race leading to critical warningsFrançois Laignel2023-05-091-7/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a fix for a data race leading to: > GLib-CRITICAL: g_hash_table_foreach: > assertion 'version == hash_table->version' failed Identified sequence: * `rtp_session_on_timeout` acquires the lock on `session` and proceeds with its processing. * `rtp_session_process_rtcp` is called (debug log : received RTCP packet) and attempts to acquire the lock on `session`, which is still held by `rtp_session_on_timeout`. * as part of an hash table iterator, `rtp_session_on_timeout` transitively invokes `source_caps` which releases the lock on `session` so as to call `session->callbacks.caps`. * Since `rtp_session_process_rtcp` was waiting for the lock to be released, it succeeds in acquiring it and proceeds with `rtp_session_process_rr` which transitively calls `g_hash_table_insert` via `add_source`. * After `source_caps` re-acquires the lock and gives the control flow back to `rtp_session_on_timeout`, the hash table iterator is changed, resulting in the assertion failure. This commits copies `sess->ssrcs[sess->mask_idx]` and iterates on the copy so the iterator is not affected by a concurrent change due to the lock being released in the `source_caps` callback. Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4555>
* rtpdtmfdepay: Classify as RTP elementPhilippe Normand2023-05-092-2/+2
| | | | Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4582>
* 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-082-2/+2
| | | | | | 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>