1 /* 2 * Copyright (C) 2016-2018 Team Kodi 3 * This file is part of Kodi - https://kodi.tv 4 * 5 * SPDX-License-Identifier: GPL-2.0-or-later 6 * See LICENSES/README.md for more information. 7 */ 8 9 #pragma once 10 11 #include "IMemoryStream.h" 12 13 #include <memory> 14 15 namespace KODI 16 { 17 namespace RETRO 18 { 19 class CBasicMemoryStream : public IMemoryStream 20 { 21 public: 22 CBasicMemoryStream(); 23 24 ~CBasicMemoryStream() override = default; 25 26 // implementation of IMemoryStream 27 void Init(size_t frameSize, uint64_t maxFrameCount) override; 28 void Reset() override; FrameSize()29 size_t FrameSize() const override { return m_frameSize; } MaxFrameCount()30 uint64_t MaxFrameCount() const override { return 1; } SetMaxFrameCount(uint64_t maxFrameCount)31 void SetMaxFrameCount(uint64_t maxFrameCount) override {} 32 uint8_t* BeginFrame() override; 33 void SubmitFrame() override; 34 const uint8_t* CurrentFrame() const override; FutureFramesAvailable()35 uint64_t FutureFramesAvailable() const override { return 0; } AdvanceFrames(uint64_t frameCount)36 uint64_t AdvanceFrames(uint64_t frameCount) override { return 0; } PastFramesAvailable()37 uint64_t PastFramesAvailable() const override { return 0; } RewindFrames(uint64_t frameCount)38 uint64_t RewindFrames(uint64_t frameCount) override { return 0; } GetFrameCounter()39 uint64_t GetFrameCounter() const override { return 0; } SetFrameCounter(uint64_t frameCount)40 void SetFrameCounter(uint64_t frameCount) override{}; 41 42 private: 43 size_t m_frameSize; 44 std::unique_ptr<uint8_t[]> m_frameBuffer; 45 bool m_bHasFrame; 46 }; 47 } // namespace RETRO 48 } // namespace KODI 49