Call Center SDK  1.11.3
intervals.h
1 /* Copyright 2019 ID R&D Inc. All Rights Reserved. */
2 
3 #pragma once
4 #include <iostream>
5 #include <stdexcept>
6 #include <voicesdk/core/config.h>
7 
8 namespace voicesdk {
9 
13  struct TimeInterval {
14 
15  size_t startTime = 0;
16  size_t endTime = 0;
18  TimeInterval() = default;
19 
20  TimeInterval(size_t startTime, size_t endTime)
22  {
23  if (startTime > endTime) {
24  throw std::runtime_error("TimeInterval: startTime > endTime");
25  }
26  }
27 
28  friend std::ostream &operator<<(std::ostream& os, const TimeInterval& obj) {
29  os << "TimeInterval["
30  << "startTime: " << obj.startTime << ", "
31  << "endTime: " << obj.endTime << "]";
32  return os;
33  }
34 
35  bool operator== (const TimeInterval& other) const {
36  return startTime == other.startTime
37  && endTime == other.endTime;
38  }
39 
40  bool operator< (const TimeInterval& other) const {
41 
42  if (startTime < other.startTime)
43  return true;
44 
45  if (startTime == other.startTime)
46  return endTime < other.endTime;
47 
48  return false;
49  }
50  };
51 
52 
57  struct VOICE_SDK_API AudioInterval {
58 
59  size_t startSample = 0;
60  size_t endSample = 0;
62  size_t startTime = 0;
63  size_t endTime = 0;
65  int sampleRate = 0;
67  AudioInterval() = default;
68 
69  AudioInterval(size_t startSample, size_t endSample, int sampleRate);
70 
71  AudioInterval(const TimeInterval& timeInterval, int sampleRate);
72 
73  friend std::ostream &operator<<(std::ostream& os, const AudioInterval& obj) {
74  os << "Interval["
75  << "startSample: " << obj.startSample << ", "
76  << "endSample: " << obj.endSample << ", "
77  << "startTime: " << obj.startTime << ", "
78  << "endTime: " << obj.endTime << ", "
79  << "sampleRate: " << obj.sampleRate << "]";
80  return os;
81  }
82 
83  bool operator== (const AudioInterval& other) const {
84  return startSample == other.startSample
85  && endSample == other.endSample
86  && startTime == other.startTime
87  && endTime == other.endTime
88  && sampleRate == other.sampleRate;
89  }
90  };
91 }
Structure representing interval of audio data.
Definition: intervals.h:57
size_t startSample
Definition: intervals.h:59
size_t endTime
Definition: intervals.h:63
size_t endSample
Definition: intervals.h:60
size_t startTime
Definition: intervals.h:62
int sampleRate
Definition: intervals.h:65
Structure representing time interval.
Definition: intervals.h:13
size_t startTime
Definition: intervals.h:15
size_t endTime
Definition: intervals.h:16