gstreamer/subprojects/gst-plugins-bad/sys/applemedia
Piotr Brzeziński 00eb9ad62e vtenc: Restart encoding session when certain errors are detected
Sometimes under certain loads, VT can error out with kVTVideoEncoderMalfunctionErr or kVTVideoEncoderNotAvailableNowErr.
These have been reported to happen more often than usual if CopyProperty/SetProperty() is used close to the encode call.
Both can be worked around by restarting the encoding session.

These errors can be returned either directly from VTCompressionSessionEncodeFrame() or later in the encoding callback.
This patch handles both scenarios the same way - a session restart is be attempted on the next encode_frame() call.

If the error is returned immediately by the encode call, it's possible that some correct frames will still be given to
the output callback, but for simplicity (+ because I wasn't able to verify this scenario) let's just discard those.

In addition, this commit also simplifies the beach/drop logic in enqueue_buffer.

Related bug reports in other projects:
http://www.openradar.me/45889262
https://github.com/aws/amazon-chime-sdk-ios/issues/170#issuecomment-741908622

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7173>
2024-09-04 06:46:07 +00:00
..
avfassetsrc.h
avfassetsrc.m avfassetsrc: fix unused-but-set warning 2022-03-28 10:30:23 +00:00
avfdeviceprovider.h
avfdeviceprovider.m avfdeviceprovider: Fix debug category initialization 2024-07-18 07:20:06 +00:00
avfvideosrc.h avfdeviceprovider: Fix debug category initialization 2024-07-18 07:20:06 +00:00
avfvideosrc.m avfdeviceprovider: Fix debug category initialization 2024-07-18 07:20:06 +00:00
avsamplevideosink.h
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
corevideomemory.c
corevideomemory.h
glcontexthelper.c
glcontexthelper.h
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
iosglmemory.h
iosurfaceglmemory.c applemedia/iosgl: remove unused variable 2022-03-28 10:30:23 +00:00
iosurfaceglmemory.h
iosurfacevulkanmemory.c vkimagebufferpool: allow specifying initial image layout 2024-01-13 05:54:00 +00:00
iosurfacevulkanmemory.h
meson.build meson: Find MoltenVK with the objc++ compiler everywhere 2024-07-07 13:20:12 +00:00
metal-helpers.h
plugin.m macos: Move atdec from applemedia (-bad) to osxaudio (-good) 2024-03-12 09:55:10 +00:00
videotexturecache-gl.h
videotexturecache-gl.m applemedia: silence some deprecation warnings from ios 12.0 2023-07-27 13:05:37 +00:00
videotexturecache-vulkan.h
videotexturecache-vulkan.mm applemedia: Disable some deprecation errors 2024-07-07 13:20:12 +00:00
videotexturecache.h
videotexturecache.m applemeida/texturecache: remove unused variable 2022-03-28 10:30:23 +00:00
vtdec.c vtdec: Use GST_VIDEO_DECODER_ERROR instead of aborting when frame has an ERROR flag 2024-06-17 12:42:53 +00:00
vtdec.h gst: Move GstQueueArray as GstVecDeque to core 2024-05-06 18:25:42 +00:00
vtenc.c vtenc: Restart encoding session when certain errors are detected 2024-09-04 06:46:07 +00:00
vtenc.h vtenc: Restart encoding session when certain errors are detected 2024-09-04 06:46:07 +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