| |
| |
| |
|
|
| #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{}; |
| } |
| }; |
| } |
|
|