kodi
DeltaPairMemoryStream.h
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 "LinearMemoryStream.h"
12 
13 #include <deque>
14 #include <vector>
15 
16 namespace KODI
17 {
18 namespace RETRO
19 {
24 {
25 public:
26  CDeltaPairMemoryStream() = default;
27 
28  ~CDeltaPairMemoryStream() override = default;
29 
30  // implementation of IMemoryStream via CLinearMemoryStream
31  void Reset() override;
32  uint64_t PastFramesAvailable() const override;
33  uint64_t RewindFrames(uint64_t frameCount) override;
34 
35 protected:
36  // implementation of CLinearMemoryStream
37  void SubmitFrameInternal() override;
38  void CullPastFrames(uint64_t frameCount) override;
39 
50  struct DeltaPair
51  {
52  size_t pos;
53  uint32_t delta;
54  };
55 
56  using DeltaPairVector = std::vector<DeltaPair>;
57 
58  struct MemoryFrame
59  {
60  DeltaPairVector buffer;
61  uint64_t frameHistoryCount;
62  };
63 
64  std::deque<MemoryFrame> m_rewindBuffer;
65 };
66 } // namespace RETRO
67 } // namespace KODI
void Reset() override
Free any resources used by this stream.
Definition: DeltaPairMemoryStream.cpp:16
Definition: DeltaPairMemoryStream.h:58
Definition: DeltaPairMemoryStream.h:50
Definition: AudioDecoder.h:18
uint64_t RewindFrames(uint64_t frameCount) override
Seek backwards the specified number of frames.
Definition: DeltaPairMemoryStream.cpp:58
Implementation of a linear memory stream using XOR deltas.
Definition: DeltaPairMemoryStream.h:23
Definition: LibInputPointer.h:13
Definition: LinearMemoryStream.h:20
uint64_t PastFramesAvailable() const override
Return the number of frames behind the current frame.
Definition: DeltaPairMemoryStream.cpp:53