#pragma once #include "stdafx.h" #include #include "../Utilities/AutoResetEvent.h" class IRenderingDevice; class Console; class IVideoRecorder; enum class VideoCodec; class VideoRenderer { private: shared_ptr _console; AutoResetEvent _waitForRender; unique_ptr _renderThread; IRenderingDevice* _renderer = nullptr; atomic _stopFlag; shared_ptr _recorder; void RenderThread(); public: VideoRenderer(shared_ptr console); ~VideoRenderer(); void StartThread(); void StopThread(); void UpdateFrame(void *frameBuffer, uint32_t width, uint32_t height); void RegisterRenderingDevice(IRenderingDevice *renderer); void UnregisterRenderingDevice(IRenderingDevice *renderer); void StartRecording(string filename, VideoCodec codec, uint32_t compressionLevel); void AddRecordingSound(int16_t* soundBuffer, uint32_t sampleCount, uint32_t sampleRate); void StopRecording(); bool IsRecording(); };