nx_cloud_storage_sdk  1.0
Cloud Storage SDK
stream_reader.h
1 #pragma once
2 
3 #include <string>
4 
5 #include <camera/camera_plugin.h>
6 #include <nx/sdk/cloud_storage/i_codec_info.h>
7 #include <nx/sdk/cloud_storage/i_stream_reader.h>
8 #include <nx/sdk/helpers/list.h>
9 #include <nx/sdk/helpers/ref_countable.h>
10 #include <nx/sdk/result.h>
11 #include <plugins/plugin_tools.h>
12 
13 #include "data_manager.h"
14 
16 
17 class StreamReader: public nx::sdk::RefCountable<nx::sdk::cloud_storage::IStreamReader>
18 {
19 public:
21  const std::shared_ptr<DataManager>& dataManager,
22  const std::string& deviceId,
23  int streamIndex,
24  int64_t startTimeMs,
25  int64_t durationMs);
26 
27  virtual nx::sdk::ErrorCode getNextData(nx::sdk::cloud_storage::IMediaDataPacket** packet) override;
28  virtual int64_t startTimeUs() const override;
29  virtual int64_t endTimeUs() const override;
30  virtual nx::sdk::ErrorCode seek(
31  int64_t timestampUs, bool findKeyFrame, int64_t* selectedPositionUs) override;
32 
33 protected:
34  virtual void getOpaqueMetadata(
35  nx::sdk::Result<const nx::sdk::IString*>* outResult) const override;
36  virtual const nx::sdk::IList<nx::sdk::cloud_storage::ICodecInfo>* getCodecInfoList() const override;
37 
38 private:
39  std::shared_ptr<DataManager> m_dataManager;
40  std::string m_deviceId;
41  int m_streamIndex = -1;
42  const int64_t m_timestampUs;
43  const int64_t m_durationUs;
45  std::unique_ptr<ReadableMediaFile> m_file;
46  std::string m_opaqueMetadata;
47  int m_packetCount = 0;
48 
49 };
50 
51 } // namespace nx::vms_server_plugins::cloud_storage::stub
virtual nx::sdk::ErrorCode getNextData(nx::sdk::cloud_storage::IMediaDataPacket **packet) override
Definition: stream_reader.cpp:51
Definition: i_media_data_packet.h:16
Definition: data_manager.cpp:33
Definition: ptr.h:18
Definition: result.h:48
virtual nx::sdk::ErrorCode seek(int64_t timestampUs, bool findKeyFrame, int64_t *selectedPositionUs) override
Definition: stream_reader.cpp:72
Definition: ref_countable.h:83