3 #include "audinate/dal/DAL.hpp"
4 #include "audinate/dal/Audio.hpp"
5 #include "audinate/dal/InstanceConfig.hpp"
9 namespace Audinate {
namespace DAL {
14 enum class InstanceState
33 std::string toString(InstanceState state);
49 ComponentStatusChanged,
53 DeviceActivationStatusChanged
69 void set(
Type type, Component component) { mType = type; mComponent = component; }
72 void set(
Type type) { mType = type; }
89 typedef std::function<void(
const InstanceEvent &)> InstanceEventFn;
100 Timestamp(Uint32 seconds, Uint32 nanoseconds) : mSeconds(seconds), mNanoseconds(nanoseconds) {}
102 bool operator==(
const Timestamp & t)
const {
return mSeconds == t.mSeconds && mNanoseconds == t.mNanoseconds; }
103 bool operator!=(
const Timestamp & t)
const {
return ! operator==(t); }
108 MaxControlThreadInterval,
109 MaxAudioThreadInterval,
111 NonSequentialPacketCount,
116 MonitoringEvent(Timestamp timestamp) : mTimestamp(timestamp), mTypes(), mMaxControlThreadIntervalUs(), mMaxAudioThreadIntervalUs(), mLatePacketCount(), mNonSequentialPacketCount() { mTypes.resize(
static_cast<size_t>(Type::NumTypes)); }
117 ~MonitoringEvent() {}
119 Timestamp getTimestamp()
const {
return mTimestamp; }
121 bool hasType(Type type)
const {
size_t index =
static_cast<size_t>(type);
return mTypes[index]; }
122 void setType(Type type) {
size_t index =
static_cast<size_t>(type); mTypes[index] =
true; }
125 Uint32 getMaxControlThreadIntervalUs()
const {
return mMaxControlThreadIntervalUs; }
126 void setMaxControlThreadIntervalUs(Uint32 interval) { setType(Type::MaxControlThreadInterval); mMaxControlThreadIntervalUs = interval; }
128 Uint32 getMaxAudioThreadIntervalUs()
const {
return mMaxAudioThreadIntervalUs; }
129 void setMaxAudioThreadIntervalUs(Uint32 interval) { setType(Type::MaxAudioThreadInterval); mMaxAudioThreadIntervalUs = interval; }
131 Uint32 getLatePacketCount()
const {
return mLatePacketCount; }
132 void setLatePacketCount(Uint32 count) { setType(Type::LatePacketCount); mLatePacketCount = count; }
134 Uint32 getNonSequentialPacketCount()
const {
return mNonSequentialPacketCount; }
135 void setNonSequentialPacketCount(Uint32 count) { setType(Type::NonSequentialPacketCount); mNonSequentialPacketCount = count; }
139 Timestamp mTimestamp;
140 std::vector<bool> mTypes;
141 Uint32 mMaxControlThreadIntervalUs;
142 Uint32 mMaxAudioThreadIntervalUs;
143 Uint32 mLatePacketCount;
144 Uint32 mNonSequentialPacketCount;
148 typedef std::function<void(
const MonitoringEvent &)> MonitoringEventFn;
180 virtual void setEventFn(InstanceEventFn fn) = 0;
186 virtual void start() = 0;
191 virtual void stop() = 0;
227 virtual std::shared_ptr<Audio>
getAudio() = 0;
255 std::shared_ptr<Instance> createInstance(std::shared_ptr<DAL> dal,
const InstanceConfig & config);