12 #ifndef ROC_AUDIO_FEEDBACK_MONITOR_H_
13 #define ROC_AUDIO_FEEDBACK_MONITOR_H_
106 bool init_scaling_();
107 bool update_scaling_();
113 bool use_packetizer_;
123 const bool enable_scaling_;
void process_feedback(packet::stream_source_t source_id, const LatencyMetrics &latency_metrics, const packet::LinkMetrics &link_metrics)
Process feedback from receiver.
bool is_started() const
Check if feedback monitoring is started.
void start()
Enable feedback monitoring.
bool is_valid() const
Check if the object was initialized successfully.
virtual void write(Frame &frame)
Write audio frame. Passes frame to underlying writer. If feedback monitoring is started,...
size_t num_participants() const
Get number of remote participants from which there is feedback.
FeedbackMonitor(IFrameWriter &writer, Packetizer &packetizer, ResamplerWriter *resampler, const FeedbackConfig &feedback_config, const LatencyConfig &latency_config, const SampleSpec &sample_spec)
Constructor.
const LatencyMetrics & latency_metrics(size_t party_index) const
Get latest latency metrics for session. party_index should be in range [0; num_participants()-1].
const packet::LinkMetrics & link_metrics(size_t party_index) const
Get latest link metrics for session. party_index should be in range [0; num_participants()-1].
Resampler element for writing pipeline.
Sample specification. Describes sample rate and channels.
Base class for non-copyable objects.
const nanoseconds_t Millisecond
One millisecond represented in nanoseconds.
int64_t nanoseconds_t
Nanoseconds.
uint32_t stream_source_t
Packet stream identifier.
uint32_t stream_timestamp_t
Packet stream timestamp.
Feedback monitor configuration.
core::nanoseconds_t source_cooldown
Cooldown period between source changes. After source is change, another source change is now allowed ...
core::nanoseconds_t source_timeout
Timeout for source feedback. If there is no new feedback during timeout, feedback monitor resets stat...