mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-07-02 12:45:51 +00:00
Our context is non-persistent, and we propagate it throughout the pipeline. This means that if we try to reuse any gstmsdk element by removing it from the pipeline and then re-adding it, we'll clone the mfxSession and create a new gstmsdk context as a child of the old one inside `gst_msdk_context_new_with_parent()`. Normally this only allocates a few KB inside the driver, but on Windows it seems to allocate tens of MBs which leads to linearly increasing memory usage for each PLAYING->NULL->PLAYING state cycle for the process. The contexts will only be freed when the pipeline itself goes to `NULL`, which would defeat the purpose of dynamic pipelines. Essentially, we need to optimize the case in which the element is removed from the pipeline and re-added and the same context is re-set on it. To detect that case, we set the context on `old_context`, and compare it to the new one when preparing the context. If they're the same, we don't need to do anything. Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/946 |
||
---|---|---|
.. | ||
androidmedia | ||
applemedia | ||
bluez | ||
d3d11 | ||
d3dvideosink | ||
decklink | ||
directsound | ||
dshowdecwrapper | ||
dshowsrcwrapper | ||
dshowvideosink | ||
dvb | ||
fbdev | ||
ipcpipeline | ||
kms | ||
magicleap | ||
msdk | ||
nvcodec | ||
opensles | ||
shm | ||
tinyalsa | ||
uvch264 | ||
wasapi | ||
winks | ||
winscreencap | ||
meson.build |