Agora Java API Reference for Android
AgoraExtensionVersion.h
1 //
2 // Copyright (c) 2021 Agora.io. All rights reserved
3 
4 // This program is confidential and proprietary to Agora.io.
5 // And may not be copied, reproduced, modified, disclosed to others, published
6 // or used, in whole or in part, without the express prior written permission
7 // of Agora.io.
8 
9 #pragma once
10 
11 namespace agora {
12 namespace rtc {
13 
15  // Extension Framework Version : major.minor.micro
16  int major_v;
17  int minor_v;
18  int micro_v;
19 
21  : major_v(0), minor_v(0), micro_v(0) {}
22  ExtensionVersion(int majorV, int minorV = 0, int microV = 0)
23  : major_v(majorV), minor_v(minorV), micro_v(microV) {}
24 
25  bool operator==(const ExtensionVersion& other) const {
26  return major_v == other.major_v && minor_v == other.minor_v && micro_v == other.micro_v;
27  }
28 
29  bool operator>(const ExtensionVersion& other) const {
30  return major_v > other.major_v || (major_v == other.major_v && minor_v > other.minor_v)
31  || (major_v == other.major_v && minor_v == other.minor_v && micro_v > other.micro_v);
32  }
33 
34  bool operator<(const ExtensionVersion& other) const {
35  return major_v < other.major_v || (major_v == other.major_v && minor_v < other.minor_v)
36  || (major_v == other.major_v && minor_v == other.minor_v && micro_v < other.micro_v);
37  }
38 
39  bool operator<=(const ExtensionVersion& other) const {
40  return !operator>(other);
41  }
42 
43  bool operator>=(const ExtensionVersion& other) const {
44  return !operator<(other);
45  }
46 };
47 
48 #define BUMP_MAJOR_VERSION(VERSION) \
49  ExtensionVersion(VERSION.major_v + 1, 0, 0); \
50 
51 #define BUMP_MINOR_VERSION(VERSION) \
52  ExtensionVersion(VERSION.major_v, VERSION.minor_v + 1, 0); \
53 
54 #define BUMP_MICRO_VERSION(VERSION) \
55  ExtensionVersion(VERSION.major_v, VERSION.minor_v, VERSION.micro_v + 1); \
56 
57 class IExtensionProvider;
59 class IExtensionProviderV3;
60 class IAudioFilter;
61 class IAudioFilterV2;
64 
65 template <class T>
67 
68 template <>
70  static ExtensionVersion Version() {
71  return ExtensionVersion(1, 0, 0);
72  }
73 };
74 
75 template <>
77  static ExtensionVersion Version() {
78  return BUMP_MAJOR_VERSION(ExtensionInterfaceVersion<IExtensionProvider>::Version());
79  }
80 };
81 
82 template <>
84  static ExtensionVersion Version() {
85  return ExtensionVersion(1, 0, 0);
86  }
87 };
88 
89 template <>
91  static ExtensionVersion Version() {
92  return BUMP_MAJOR_VERSION(ExtensionInterfaceVersion<IAudioFilter>::Version());
93  }
94 };
95 
96 template <>
98  static ExtensionVersion Version() {
99  return ExtensionVersion(1, 0, 0);
100  }
101 };
102 
103 template <>
105  static ExtensionVersion Version() {
106  return ExtensionVersion(1, 0, 0);
107  }
108 };
109 
110 } // namespace rtc
111 } // namespace agora
agora::rtc::ExtensionVersion
Definition: AgoraExtensionVersion.h:14
agora::rtc::IExtensionProviderV2
Definition: NGIAgoraExtensionProvider.h:116
agora::rtc::IAudioFilter
Definition: NGIAgoraMediaNode.h:72
agora::rtc::IExtensionProvider
Definition: NGIAgoraExtensionProvider.h:35
agora::rtc::IAudioFilterV2
Definition: NGIAgoraMediaNode.h:143
agora::rtc::IScreenCaptureSource
Definition: NGIAgoraExtensionScreenSource.h:41
agora::rtc::IExtensionVideoFilter
Definition: NGIAgoraMediaNode.h:273
agora::rtc::ExtensionInterfaceVersion
Definition: AgoraExtensionVersion.h:66