nx_metadata_sdk  1.0
Metadata SDK
i_device.h
1 // Copyright 2018-present Network Optix, Inc. Licensed under MPL 2.0: www.mozilla.org/MPL/2.0/
2 
3 #pragma once
4 
5 #include <nx/sdk/interface.h>
6 #include <nx/sdk/i_device_info.h>
7 #include <nx/sdk/i_plugin.h>
8 #include <nx/sdk/result.h>
9 #include <nx/sdk/i_list.h>
10 #include <camera/camera_plugin.h>
11 
12 #include <nx/sdk/archive/i_stream_writer.h>
13 #include <nx/sdk/archive/i_codec_info.h>
14 
15 namespace nx {
16 namespace sdk {
17 namespace archive {
18 
23 class IDevice: public Interface<IDevice>
24 {
25 public:
26  static constexpr auto interfaceId() { return makeId("nx::sdk::archive::IDevice"); }
27 
29  protected: virtual void doDeviceInfo(Result<const IDeviceInfo*>* outResult) const = 0;
30  public: virtual Result<const IDeviceInfo*> deviceInfo() const
31  {
33  doDeviceInfo(&result);
34  return result;
35  }
36 
37  protected: virtual void doCreateStreamWriter(
38  nxcip::MediaStreamQuality quality,
39  int64_t startTimeUs,
40  const IList<ICodecInfo>* codecList,
41  Result<IStreamWriter*>* outResult) = 0;
42 
48  nxcip::MediaStreamQuality quality,
49  int64_t startTimeUs,
50  const IList<ICodecInfo>* codecList)
51  {
53  doCreateStreamWriter(quality, startTimeUs, codecList, &result);
54  return result;
55  }
56 
57  protected: virtual void doCreateArchiveReader(
58  nxcip::MediaStreamQuality quality,
59  int64_t startTimeUs,
60  int64_t durationUs,
61  Result<nxcip::DtsArchiveReader*>* outResult) = 0;
62 
63  public: Result<nxcip::DtsArchiveReader*> createArchiveReader(
64  nxcip::MediaStreamQuality quality,
65  int64_t startTimeUs,
66  int64_t durationUs)
67  {
69  doCreateArchiveReader(quality, startTimeUs, durationUs, &result);
70  return result;
71  }
72 };
73 
74 } // namespace archive
75 } // namespace sdk
76 } // namespace nx
Result< IStreamWriter * > createStreamWriter(nxcip::MediaStreamQuality quality, int64_t startTimeUs, const IList< ICodecInfo > *codecList)
Definition: i_device.h:47
Definition: interface.h:49
Definition: result.h:47
Definition: apple_utils.h:6
virtual void doDeviceInfo(Result< const IDeviceInfo *> *outResult) const =0
static constexpr const InterfaceId * makeId(const char(&charArray)[len])
Definition: i_ref_countable.h:77
Definition: i_list.h:9
Definition: i_device.h:23