2021-05-10 22:48:41 +00:00
|
|
|
#pragma once
|
2021-05-10 23:54:48 +00:00
|
|
|
|
|
|
|
#include <obs.hpp>
|
|
|
|
#include <obs-frontend-api.h>
|
|
|
|
#include <util/platform.h>
|
|
|
|
|
2021-07-22 10:24:53 +00:00
|
|
|
#include "types/EventSubscription.h"
|
2021-05-10 23:54:48 +00:00
|
|
|
#include "../obs-websocket.h"
|
|
|
|
#include "../WebSocketServer.h"
|
2021-08-27 11:34:06 +00:00
|
|
|
#include "../utils/Obs.h"
|
2021-05-10 23:54:48 +00:00
|
|
|
|
2021-05-14 02:11:19 +00:00
|
|
|
template <typename T> T* GetCalldataPointer(const calldata_t *data, const char* name) {
|
2021-06-13 11:50:04 +00:00
|
|
|
void *ptr = nullptr;
|
2021-05-14 02:11:19 +00:00
|
|
|
calldata_get_ptr(data, name, &ptr);
|
|
|
|
return reinterpret_cast<T*>(ptr);
|
|
|
|
}
|
|
|
|
|
2021-05-10 23:54:48 +00:00
|
|
|
class EventHandler
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
EventHandler(WebSocketServerPtr webSocketServer);
|
|
|
|
~EventHandler();
|
|
|
|
|
|
|
|
private:
|
|
|
|
WebSocketServerPtr _webSocketServer;
|
|
|
|
|
2021-05-14 08:13:27 +00:00
|
|
|
std::atomic<bool> _obsLoaded;
|
|
|
|
|
2021-05-11 05:46:53 +00:00
|
|
|
void ConnectSourceSignals(obs_source_t *source);
|
|
|
|
void DisconnectSourceSignals(obs_source_t *source);
|
|
|
|
|
2021-05-14 02:11:19 +00:00
|
|
|
// Signal handler: frontend
|
2021-05-10 23:54:48 +00:00
|
|
|
static void OnFrontendEvent(enum obs_frontend_event event, void *private_data);
|
2021-05-14 02:11:19 +00:00
|
|
|
|
|
|
|
// Signal handler: libobs
|
|
|
|
static void SourceCreatedMultiHandler(void *param, calldata_t *data);
|
2021-05-14 08:13:27 +00:00
|
|
|
static void SourceDestroyedMultiHandler(void *param, calldata_t *data);
|
2021-05-14 02:11:19 +00:00
|
|
|
static void SourceRemovedMultiHandler(void *param, calldata_t *data);
|
|
|
|
|
|
|
|
// Signal handler: source
|
|
|
|
static void SourceRenamedMultiHandler(void *param, calldata_t *data);
|
2021-06-01 04:44:03 +00:00
|
|
|
static void SourceMediaPauseMultiHandler(void *param, calldata_t *data);
|
|
|
|
static void SourceMediaPlayMultiHandler(void *param, calldata_t *data);
|
|
|
|
static void SourceMediaRestartMultiHandler(void *param, calldata_t *data);
|
|
|
|
static void SourceMediaStopMultiHandler(void *param, calldata_t *data);
|
|
|
|
static void SourceMediaNextMultiHandler(void *param, calldata_t *data);
|
|
|
|
static void SourceMediaPreviousMultiHandler(void *param, calldata_t *data);
|
2021-05-14 02:11:19 +00:00
|
|
|
|
2021-05-14 08:13:27 +00:00
|
|
|
|
2021-05-14 02:11:19 +00:00
|
|
|
// General
|
|
|
|
void HandleExitStarted();
|
|
|
|
void HandleStudioModeStateChanged(bool enabled);
|
|
|
|
|
|
|
|
// Config
|
|
|
|
void HandleCurrentSceneCollectionChanged();
|
|
|
|
void HandleSceneCollectionListChanged();
|
|
|
|
void HandleCurrentProfileChanged();
|
|
|
|
void HandleProfileListChanged();
|
|
|
|
|
|
|
|
// Scenes
|
|
|
|
void HandleSceneCreated(obs_source_t *source);
|
|
|
|
void HandleSceneRemoved(obs_source_t *source);
|
|
|
|
void HandleSceneNameChanged(obs_source_t *source, std::string oldSceneName, std::string sceneName);
|
|
|
|
void HandleCurrentSceneChanged();
|
|
|
|
void HandleCurrentPreviewSceneChanged();
|
2021-06-13 09:11:14 +00:00
|
|
|
void HandleSceneListChanged();
|
2021-05-14 08:13:27 +00:00
|
|
|
|
|
|
|
// Inputs
|
|
|
|
void HandleInputCreated(obs_source_t *source);
|
|
|
|
void HandleInputRemoved(obs_source_t *source);
|
|
|
|
void HandleInputNameChanged(obs_source_t *source, std::string oldInputName, std::string inputName);
|
|
|
|
static void HandleInputActiveStateChanged(void *param, calldata_t *data); // Direct callback
|
|
|
|
static void HandleInputShowStateChanged(void *param, calldata_t *data); // Direct callback
|
|
|
|
static void HandleInputMuteStateChanged(void *param, calldata_t *data); // Direct callback
|
|
|
|
static void HandleInputVolumeChanged(void *param, calldata_t *data); // Direct callback
|
|
|
|
static void HandleInputAudioSyncOffsetChanged(void *param, calldata_t *data); // Direct callback
|
|
|
|
static void HandleInputAudioTracksChanged(void *param, calldata_t *data); // Direct callback
|
2021-05-14 10:59:00 +00:00
|
|
|
|
|
|
|
// Transitions
|
|
|
|
void HandleTransitionCreated(obs_source_t *source);
|
|
|
|
void HandleTransitionRemoved(obs_source_t *source);
|
|
|
|
void HandleTransitionNameChanged(obs_source_t *source, std::string oldTransitionName, std::string transitionName);
|
2021-06-01 01:51:32 +00:00
|
|
|
|
|
|
|
// Outputs
|
|
|
|
void HandleStreamStateChanged(ObsOutputState state);
|
|
|
|
void HandleRecordStateChanged(ObsOutputState state);
|
|
|
|
void HandleReplayBufferStateChanged(ObsOutputState state);
|
|
|
|
void HandleVirtualcamStateChanged(ObsOutputState state);
|
2021-06-13 03:34:24 +00:00
|
|
|
void HandleReplayBufferSaved();
|
2021-06-01 04:44:03 +00:00
|
|
|
|
2021-06-13 07:46:42 +00:00
|
|
|
// Scene Items
|
|
|
|
static void HandleSceneItemCreated(void *param, calldata_t *data); // Direct callback
|
|
|
|
static void HandleSceneItemRemoved(void *param, calldata_t *data); // Direct callback
|
|
|
|
static void HandleSceneItemListReindexed(void *param, calldata_t *data); // Direct callback
|
|
|
|
static void HandleSceneItemEnableStateChanged(void *param, calldata_t *data); // Direct callback
|
|
|
|
static void HandleSceneItemLockStateChanged(void *param, calldata_t *data); // Direct callback
|
|
|
|
static void HandleSceneItemTransformChanged(void *param, calldata_t *data); // Direct callback
|
|
|
|
|
2021-06-01 04:44:03 +00:00
|
|
|
// Media Inputs
|
|
|
|
static void HandleMediaInputPlaybackStarted(void *param, calldata_t *data); // Direct callback
|
|
|
|
static void HandleMediaInputPlaybackEnded(void *param, calldata_t *data); // Direct callback
|
|
|
|
void HandleMediaInputActionTriggered(obs_source_t *source, ObsMediaInputAction action);
|
2021-05-10 23:54:48 +00:00
|
|
|
};
|