Add scene trigger to control virtual camera (#162)

This commit is contained in:
WarmUpTill
2021-06-13 10:25:02 -07:00
committed by GitHub
parent c9769a799d
commit edd9f18de0
4 changed files with 26 additions and 1 deletions

View File

@@ -284,6 +284,8 @@ AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource="Audio Quelle stu
AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="Audio Quelle aktiv schalten" AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="Audio Quelle aktiv schalten"
AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="Szenenwechsler starten" AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="Szenenwechsler starten"
AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="Szenenwechsler stoppen" AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="Szenenwechsler stoppen"
AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera="Virtuelle Kamera starten"
AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera="Virtuelle Kamera stoppen"
AdvSceneSwitcher.sceneTriggerTab.entry="Wenn {{scenes}} {{triggers}} {{actions}} {{audioSources}} nach {{duration}} " AdvSceneSwitcher.sceneTriggerTab.entry="Wenn {{scenes}} {{triggers}} {{actions}} {{audioSources}} nach {{duration}} "
AdvSceneSwitcher.sceneTriggerTab.help="Dieser Tab ermöglicht es automatisiert Handlungen, wie etwa das Stoppen von einer Aufnahme oder des Streamens, bei einem Szenenwechsel auszuführen." AdvSceneSwitcher.sceneTriggerTab.help="Dieser Tab ermöglicht es automatisiert Handlungen, wie etwa das Stoppen von einer Aufnahme oder des Streamens, bei einem Szenenwechsel auszuführen."

View File

@@ -439,6 +439,8 @@ AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.muteSource="mute source"
AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="unmute source" AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.unmuteSource="unmute source"
AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="start the scene switcher" AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher="start the scene switcher"
AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="stop the scene switcher" AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher="stop the scene switcher"
AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera="start virtual camera"
AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera="stop virtual camera"
AdvSceneSwitcher.sceneTriggerTab.entry="When {{scenes}} {{triggers}} {{actions}} {{audioSources}} after {{duration}}" AdvSceneSwitcher.sceneTriggerTab.entry="When {{scenes}} {{triggers}} {{actions}} {{audioSources}} after {{duration}}"
AdvSceneSwitcher.sceneTriggerTab.help="This tab allows you to trigger actions on scene changes, like stopping recording or streaming." AdvSceneSwitcher.sceneTriggerTab.help="This tab allows you to trigger actions on scene changes, like stopping recording or streaming."

View File

@@ -27,6 +27,9 @@ enum class sceneTriggerAction {
START_SWITCHER, START_SWITCHER,
STOP_SWITCHER, STOP_SWITCHER,
START_VCAM,
STOP_VCAM,
}; };
struct SceneTrigger : SceneSwitcherEntry { struct SceneTrigger : SceneSwitcherEntry {

View File

@@ -142,6 +142,12 @@ void SceneTrigger::logMatch()
case sceneTriggerAction::STOP_SWITCHER: case sceneTriggerAction::STOP_SWITCHER:
actionName = "STOP SCENE SWITCHER"; actionName = "STOP SCENE SWITCHER";
break; break;
case sceneTriggerAction::START_VCAM:
actionName = "START VIRTUAL CAMERA";
break;
case sceneTriggerAction::STOP_VCAM:
actionName = "STOP VIRTUAL CAMERA";
break;
default: default:
actionName = "UNKOWN"; actionName = "UNKOWN";
break; break;
@@ -185,6 +191,12 @@ void frontEndActionThread(sceneTriggerAction action, double delay)
case sceneTriggerAction::STOP_REPLAY_BUFFER: case sceneTriggerAction::STOP_REPLAY_BUFFER:
obs_frontend_replay_buffer_stop(); obs_frontend_replay_buffer_stop();
break; break;
case sceneTriggerAction::START_VCAM:
obs_frontend_start_virtualcam();
break;
case sceneTriggerAction::STOP_VCAM:
obs_frontend_stop_virtualcam();
break;
default: default:
blog(LOG_WARNING, "ignoring unexpected frontend action '%d'", blog(LOG_WARNING, "ignoring unexpected frontend action '%d'",
static_cast<int>(action)); static_cast<int>(action));
@@ -223,7 +235,9 @@ bool isFrontendAction(sceneTriggerAction triggerAction)
triggerAction == sceneTriggerAction::START_STREAMING || triggerAction == sceneTriggerAction::START_STREAMING ||
triggerAction == sceneTriggerAction::STOP_STREAMING || triggerAction == sceneTriggerAction::STOP_STREAMING ||
triggerAction == sceneTriggerAction::START_REPLAY_BUFFER || triggerAction == sceneTriggerAction::START_REPLAY_BUFFER ||
triggerAction == sceneTriggerAction::STOP_REPLAY_BUFFER; triggerAction == sceneTriggerAction::STOP_REPLAY_BUFFER ||
triggerAction == sceneTriggerAction::START_VCAM ||
triggerAction == sceneTriggerAction::STOP_VCAM;
} }
bool isAudioAction(sceneTriggerAction t) bool isAudioAction(sceneTriggerAction t)
@@ -428,6 +442,10 @@ inline void populateActions(QComboBox *list)
"AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher")); "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startSwitcher"));
list->addItem(obs_module_text( list->addItem(obs_module_text(
"AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher")); "AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopSwitcher"));
list->addItem(obs_module_text(
"AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.startVirtualCamera"));
list->addItem(obs_module_text(
"AdvSceneSwitcher.sceneTriggerTab.sceneTriggerAction.stopVirtualCamera"));
} }
SceneTriggerWidget::SceneTriggerWidget(QWidget *parent, SceneTrigger *s) SceneTriggerWidget::SceneTriggerWidget(QWidget *parent, SceneTrigger *s)