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