Intial somewhat working version
This commit is contained in:
84
src/main.cpp
Normal file
84
src/main.cpp
Normal file
@@ -0,0 +1,84 @@
|
||||
#include "AppState.h"
|
||||
#include "AppConfig.h"
|
||||
#include "D3DProcessor.h"
|
||||
#include "DeckLinkPipeline.h"
|
||||
#include "ShaderLibrary.h"
|
||||
#include "WebServer.h"
|
||||
|
||||
#include <combaseapi.h>
|
||||
|
||||
#include <atomic>
|
||||
#include <chrono>
|
||||
#include <csignal>
|
||||
#include <iostream>
|
||||
#include <thread>
|
||||
|
||||
namespace
|
||||
{
|
||||
std::atomic<bool> g_running = true;
|
||||
|
||||
void signalHandler(int)
|
||||
{
|
||||
g_running = false;
|
||||
}
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
std::signal(SIGINT, signalHandler);
|
||||
std::signal(SIGTERM, signalHandler);
|
||||
|
||||
HRESULT hr = CoInitializeEx(nullptr, COINIT_MULTITHREADED);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
std::cerr << "CoInitializeEx failed: 0x" << std::hex << static_cast<unsigned long>(hr) << "\n";
|
||||
return 1;
|
||||
}
|
||||
|
||||
AppState appState;
|
||||
D3DProcessor processor;
|
||||
|
||||
try
|
||||
{
|
||||
auto shaders = loadShaders(APP_SHADER_DIR);
|
||||
appState.setShaders(shaders);
|
||||
std::string error;
|
||||
if (!processor.initialize(shaders.front(), error))
|
||||
{
|
||||
std::cerr << "Shader/D3D initialization failed:\n" << error << "\n";
|
||||
CoUninitialize();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
catch (const std::exception& ex)
|
||||
{
|
||||
std::cerr << ex.what() << "\n";
|
||||
CoUninitialize();
|
||||
return 1;
|
||||
}
|
||||
|
||||
DeckLinkPipeline pipeline(appState, processor);
|
||||
std::string error;
|
||||
if (!pipeline.initialize(error))
|
||||
{
|
||||
appState.setError(error);
|
||||
std::cerr << error << "\n";
|
||||
}
|
||||
|
||||
WebServer webServer(appState, pipeline, APP_CONTENT_DIR);
|
||||
if (!webServer.start(8080, error))
|
||||
{
|
||||
std::cerr << error << "\n";
|
||||
CoUninitialize();
|
||||
return 1;
|
||||
}
|
||||
|
||||
std::cout << "video-shader is running at http://127.0.0.1:8080\n";
|
||||
while (g_running)
|
||||
std::this_thread::sleep_for(std::chrono::milliseconds(200));
|
||||
|
||||
webServer.stop();
|
||||
pipeline.stop();
|
||||
CoUninitialize();
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user