mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-07-04 10:33:30 +00:00
Normally, paired encoders are unpaired when they stop. However, if the pairing occurs before the encoders actually start, and the encoders never actually end up starting, they are never unpaired, and that pairing stays with them until the next time an output is started up again. That in turn can cause an output that uses one of the encoders but not the other to not function correctly, and neither properly "start" nor stop because the data is queued continually in the interleaved packet array. For example, let's say there are two outputs, two video encoders, and one audio encoder. This can be reproduced by using advanced output mode and making the two outputs use separate video encoders while sharing track 1's audio encoder. If you start up the stream output first and it fails to fully connect for whatever reason (bad server, bad stream key, etc), then you start up the recording output, the recording output will appear to be running, but will not stop when you hit "stop recording". It will stay perpetually on "stopping recording" and will get stuck that way. This is because when the streaming output started, the streaming output would initially pair video encoder A with audio encoder A before the encoders actually fully started up (as the encoders do not fully start up until a connection is successfully made), and when the recording output starts up after that disconnection, audio encoder A will wait for video encoder A rather than video encoder B because that pairing was never actually cleared. So, instead of pairing encoders when the output starts, wait until the encoders themselves are being started and then pair the encoders at that point in time. This ensures that the encoders start up and will clear their pairing when no longer in use. |
||
---|---|---|
.. | ||
audio-monitoring | ||
callback | ||
data | ||
graphics | ||
media-io | ||
util | ||
CMakeLists.txt | ||
libobs.pc.in | ||
LibObsConfig.cmake.in | ||
LibObsConfigVersion.cmake.in | ||
obs-audio-controls.c | ||
obs-audio-controls.h | ||
obs-audio.c | ||
obs-avc.c | ||
obs-avc.h | ||
obs-cocoa.c | ||
obs-config.h | ||
obs-data.c | ||
obs-data.h | ||
obs-defs.h | ||
obs-display.c | ||
obs-encoder.c | ||
obs-encoder.h | ||
obs-ffmpeg-compat.h | ||
obs-hotkey-name-map.c | ||
obs-hotkey.c | ||
obs-hotkey.h | ||
obs-hotkeys.h | ||
obs-interaction.h | ||
obs-internal.h | ||
obs-module.c | ||
obs-module.h | ||
obs-nix.c | ||
obs-output-delay.c | ||
obs-output.c | ||
obs-output.h | ||
obs-properties.c | ||
obs-properties.h | ||
obs-scene.c | ||
obs-scene.h | ||
obs-service.c | ||
obs-service.h | ||
obs-source-deinterlace.c | ||
obs-source-transition.c | ||
obs-source.c | ||
obs-source.h | ||
obs-ui.h | ||
obs-video-gpu-encode.c | ||
obs-video.c | ||
obs-view.c | ||
obs-win-crash-handler.c | ||
obs-windows.c | ||
obs.c | ||
obs.h | ||
obs.hpp | ||
obsconfig.h.in |