win-dshow: Decouple audio from video
If a device produces video and audio timestamps atdifferent rates, this divergence can cause massive buffering on the audio side, leading to a capped audio buffer, and total sound loss. This change allows a hardcoded list of devices to use the existing decoupling logic. For now, only "GV-USB2" has been added. When combined with another fix, 5+ hours of stable audio without any buffering on my GV-USB2 where it used to drop sound completely after an hour or so. Partially fixes https://obsproject.com/mantis/view.php?id=1269
This commit is contained in:
parent
ad233330f3
commit
534c553b23
@ -800,6 +800,11 @@ static inline bool IsEncoded(const VideoConfig &config)
|
||||
wstrstri(config.name.c_str(), L"stream engine") != NULL;
|
||||
}
|
||||
|
||||
static inline bool IsDecoupled(const VideoConfig &config)
|
||||
{
|
||||
return wstrstri(config.name.c_str(), L"GV-USB2") != NULL;
|
||||
}
|
||||
|
||||
inline void DShowInput::SetupBuffering(obs_data_t *settings)
|
||||
{
|
||||
BufferingType bufType;
|
||||
@ -813,6 +818,7 @@ inline void DShowInput::SetupBuffering(obs_data_t *settings)
|
||||
useBuffering = bufType == BufferingType::On;
|
||||
|
||||
obs_source_set_async_unbuffered(source, !useBuffering);
|
||||
obs_source_set_async_decoupled(source, IsDecoupled(videoConfig));
|
||||
}
|
||||
|
||||
static DStr GetVideoFormatName(VideoFormat format);
|
||||
|
Loading…
x
Reference in New Issue
Block a user