| | |
| | |
| | |
| |
|
| | #pragma once |
| |
|
| | #include <string> |
| | #include <vector> |
| | #include "audio_core/audio_types.h" |
| | #include "common/common_types.h" |
| | #include "core/frontend/framebuffer_layout.h" |
| |
|
| | namespace VideoDumper { |
| | |
| | |
| | |
| | |
| | class VideoFrame { |
| | public: |
| | std::size_t width; |
| | std::size_t height; |
| | u32 stride; |
| | std::vector<u8> data; |
| |
|
| | VideoFrame(std::size_t width_ = 0, std::size_t height_ = 0, u8* data_ = nullptr); |
| | }; |
| |
|
| | class Backend { |
| | public: |
| | virtual ~Backend(); |
| | virtual bool StartDumping(const std::string& path, const Layout::FramebufferLayout& layout) = 0; |
| | virtual void AddVideoFrame(VideoFrame frame) = 0; |
| | virtual void AddAudioFrame(AudioCore::StereoFrame16 frame) = 0; |
| | virtual void AddAudioSample(const std::array<s16, 2>& sample) = 0; |
| | virtual void StopDumping() = 0; |
| | virtual bool IsDumping() const = 0; |
| | virtual Layout::FramebufferLayout GetLayout() const = 0; |
| | }; |
| |
|
| | class NullBackend : public Backend { |
| | public: |
| | ~NullBackend() override; |
| | bool StartDumping(const std::string& , |
| | const Layout::FramebufferLayout& ) override { |
| | return false; |
| | } |
| | void AddVideoFrame(VideoFrame ) override {} |
| | void AddAudioFrame(AudioCore::StereoFrame16 ) override {} |
| | void AddAudioSample(const std::array<s16, 2>& ) override {} |
| | void StopDumping() override {} |
| | bool IsDumping() const override { |
| | return false; |
| | } |
| | Layout::FramebufferLayout GetLayout() const override { |
| | return Layout::FramebufferLayout{}; |
| | } |
| | }; |
| | } |
| |
|