mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
gst: sink: Manage buffer pool memory manually
Let's make sure we own the memory in buffers, so that we can be resilient to the PW link going away. This currently maintains the status quo of copying data into the pipewirepool for sending to the remote end, but moves the allocation of buffers so that ownership is maintained by the sink in all cases. There are some tricky corners, especially with bufferpool vs. buffers param negotiation -- bufferpool parameters can be negotiated in GStreamer before the link even comes up, so we try to adapt the buffers param to use the negotiated value. For now, that is more brittle than tying those two aspects together. We can revisit this if we can find a way to tie pipeline state and link state more closely. Co-authored-by: Arun Raghavan <arun@asymptotic.io>
This commit is contained in:
parent
1b258f4ecc
commit
ee2c6eb41e
4 changed files with 151 additions and 37 deletions
|
|
@ -410,6 +410,7 @@ gst_deps_def = {
|
|||
|
||||
gst_dep = []
|
||||
gst_dma_drm_found = false
|
||||
gst_shm_allocator_found = false
|
||||
foreach depname, kwargs: gst_deps_def
|
||||
dep = dependency(depname, required: gst_option, kwargs: kwargs)
|
||||
summary({depname: dep.found()}, bool_yn: true, section: 'GStreamer modules')
|
||||
|
|
@ -425,9 +426,13 @@ foreach depname, kwargs: gst_deps_def
|
|||
|
||||
if depname == 'gstreamer-allocators-1.0' and dep.version().version_compare('>= 1.23.1')
|
||||
gst_dma_drm_found = true
|
||||
gst_shm_allocator_found = true
|
||||
endif
|
||||
endforeach
|
||||
|
||||
summary({'gstreamer SHM allocator': gst_shm_allocator_found}, bool_yn: true, section: 'Backend')
|
||||
cdata.set('HAVE_GSTREAMER_SHM_ALLOCATOR', gst_shm_allocator_found)
|
||||
|
||||
# This code relies on the array being empty if any dependency was not found
|
||||
gst_dp_found = gst_dep.length() > 0
|
||||
summary({'gstreamer-device-provider': gst_dp_found}, bool_yn: true, section: 'Backend')
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue