gstreamer/subprojects/gst-plugins-bad/sys/applemedia
Piotr Brzeziński 9cbe9a52fe vtenc: Fix deadlock after GST_FLOW_ERROR is received on frame push
This was easy to trigger when testing with e.g. vtenc ! vtdec ! glimagesink and closing the sink via window button,
causing GST_FLOW_ERROR to be received by the output loop, stopping it with the queue still full. This made the
enqueue_buffer() callback to lock waiting for space in our queue, while handle_frame() was waiting for the internal
VideoToolbox queue to free up, so that VTCompressionSessionEncodeFrame could finish. As the output loop was not
running, both functions waited forever.

Fixed by 1) immediately emptying our queue when GST_FLOW_ERROR is received (like we already did with _FLUSHING)
and 2) unconditionally setting the flushing flag in finish_encoding() when it sees the output loop stopped because
of GST_FLOW_ERROR, so that enqueue_buffer() will immediately discard any new frames coming out of VideoToolbox.
Both of those make sure we never run into the both-queues-full scenario.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5303>
2023-09-20 13:10:02 +00:00
..
atdec.c Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
atdec.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
avfassetsrc.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
avfassetsrc.m avfassetsrc: fix unused-but-set warning 2022-03-28 10:30:23 +00:00
avfdeviceprovider.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
avfdeviceprovider.m applemedia: silence some deprecation warnings from ios 12.0 2023-07-27 13:05:37 +00:00
avfvideosrc.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
avfvideosrc.m applemedia: silence some deprecation warnings from ios 12.0 2023-07-27 13:05:37 +00:00
avsamplevideosink.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
avsamplevideosink.m applemedia: Also fix inconsistent pixel format definition for NV12 2023-08-16 14:15:52 +00:00
coremediabuffer.c applemedia: Fix pixel format for I420 2023-08-16 14:15:52 +00:00
coremediabuffer.h applemedia: Add ProRes support to vtenc and vtdec 2021-11-01 09:24:52 +00:00
corevideobuffer.c applemedia: Fix pixel format for I420 2023-08-16 14:15:52 +00:00
corevideobuffer.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
corevideomemory.c Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
corevideomemory.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
glcontexthelper.c Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
glcontexthelper.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
helpers.c applemedia: Also fix inconsistent pixel format definition for NV12 2023-08-16 14:15:52 +00:00
helpers.h applemedia: Consolidate GstVideoFormat <-> CVPixelFormat conversion 2023-03-14 23:35:16 +00:00
iosassetsrc.h applemedia: silence some deprecation warnings from ios 12.0 2023-07-27 13:05:37 +00:00
iosassetsrc.m applemedia: silence some deprecation warnings from ios 12.0 2023-07-27 13:05:37 +00:00
iosglmemory.c Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
iosglmemory.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
iosurfaceglmemory.c applemedia/iosgl: remove unused variable 2022-03-28 10:30:23 +00:00
iosurfaceglmemory.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
iosurfacevulkanmemory.c vulkan: use gst_vulkan_format_get_aspect() 2023-05-19 04:26:29 +00:00
iosurfacevulkanmemory.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
meson.build vtenc: apply DTS offset to ensure DTS <= PTS 2023-06-19 08:37:54 +00:00
metal-helpers.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
plugin.m docs: Rename "OS X" to "macOS" in some documentation 2022-01-30 19:17:18 +05:30
videotexturecache-gl.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
videotexturecache-gl.m applemedia: silence some deprecation warnings from ios 12.0 2023-07-27 13:05:37 +00:00
videotexturecache-vulkan.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
videotexturecache-vulkan.mm Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
videotexturecache.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
videotexturecache.m applemeida/texturecache: remove unused variable 2022-03-28 10:30:23 +00:00
vtdec.c applemedia: Consolidate GstVideoFormat <-> CVPixelFormat conversion 2023-03-14 23:35:16 +00:00
vtdec.h vtenc: apply DTS offset to ensure DTS <= PTS 2023-06-19 08:37:54 +00:00
vtenc.c vtenc: Fix deadlock after GST_FLOW_ERROR is received on frame push 2023-09-20 13:10:02 +00:00
vtenc.h vtenc: Move output loop to a separate thread 2023-07-21 13:05:26 +00:00
vtutil.c applemedia: Disable 64RGBALE support on older macOS 2022-02-01 16:57:04 +00:00
vtutil.h applemedia: Consolidate GstVideoFormat <-> CVPixelFormat conversion 2023-03-14 23:35:16 +00:00