Defer source failures and end calls that cannot reserve audio capture
This commit is contained in:
1 parent
50fad4ceff
commit
ce461521e4
2 files changed
+17
-5
No files matched your search
@@ -151,7 +151,7 @@ bool StreamPublishEngine::openSource(const StreamPublishConfig& config) {
|
||||
}
|
||||
if (best.isNull()) { DEBUG_ERROR(DEBUG_CATEGORY_VIDEO, "desktop camera lacks requested fps=%d", config.video.fps); return false; }
|
||||
m->camera->setCameraFormat(best); m->session->setCamera(m->camera.get());
|
||||
connect(m->camera.get(), &QCamera::errorOccurred, this, [failed](QCamera::Error, const QString& error) { failed(error); });
|
||||
connect(m->camera.get(), &QCamera::errorOccurred, this, [failed](QCamera::Error, const QString& error) { failed(error); }, Qt::QueuedConnection);
|
||||
m->camera->start();
|
||||
} else if (config.source.kind == StreamVideoSource::Screen) {
|
||||
m->screen = std::make_unique<QScreenCapture>();
|
||||
@@ -162,13 +162,13 @@ bool StreamPublishEngine::openSource(const StreamPublishConfig& config) {
|
||||
m->screen->setScreen(selected);
|
||||
}
|
||||
m->session->setScreenCapture(m->screen.get());
|
||||
connect(m->screen.get(), &QScreenCapture::errorOccurred, this, [failed](QScreenCapture::Error, const QString& error) { failed(error); });
|
||||
connect(m->screen.get(), &QScreenCapture::errorOccurred, this, [failed](QScreenCapture::Error, const QString& error) { failed(error); }, Qt::QueuedConnection);
|
||||
m->screen->start();
|
||||
} else {
|
||||
auto window = config.source.window.value<QCapturableWindow>();
|
||||
if (!window.isValid()) { DEBUG_ERROR(DEBUG_CATEGORY_VIDEO, "desktop window is unavailable"); return false; }
|
||||
m->window = std::make_unique<QWindowCapture>(); m->window->setWindow(window); m->session->setWindowCapture(m->window.get());
|
||||
connect(m->window.get(), &QWindowCapture::errorOccurred, this, [failed](QWindowCapture::Error, const QString& error) { failed(error); });
|
||||
connect(m->window.get(), &QWindowCapture::errorOccurred, this, [failed](QWindowCapture::Error, const QString& error) { failed(error); }, Qt::QueuedConnection);
|
||||
m->window->start();
|
||||
}
|
||||
DEBUG_INFO(DEBUG_CATEGORY_VIDEO, "desktop capture started generation=%llu kind=%d source=%s target=%dx%d/%dfps",
|
||||
|
||||
Reference in new issue
Block a user