blob: 1772ad55493fcf42f1bc133186f3e82e3651a29e [file] [log] [blame]
solenberg13725082015-11-25 08:16:52 -08001/*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 *
4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree.
9 */
10
11#include "webrtc/voice_engine/channel_proxy.h"
12
13#include "webrtc/base/checks.h"
14#include "webrtc/voice_engine/channel.h"
15
16namespace webrtc {
17namespace voe {
18ChannelProxy::ChannelProxy() : channel_owner_(nullptr) {}
19
20ChannelProxy::ChannelProxy(const ChannelOwner& channel_owner) :
21 channel_owner_(channel_owner) {
22 RTC_CHECK(channel_owner_.channel());
23}
24
25void ChannelProxy::SetRTCPStatus(bool enable) {
solenberg358057b2015-11-27 10:46:42 -080026 channel()->SetRTCPStatus(enable);
solenberg13725082015-11-25 08:16:52 -080027}
28
29void ChannelProxy::SetLocalSSRC(uint32_t ssrc) {
solenberg358057b2015-11-27 10:46:42 -080030 RTC_DCHECK(thread_checker_.CalledOnValidThread());
31 int error = channel()->SetLocalSSRC(ssrc);
solenberg13725082015-11-25 08:16:52 -080032 RTC_DCHECK_EQ(0, error);
33}
34
35void ChannelProxy::SetRTCP_CNAME(const std::string& c_name) {
solenberg358057b2015-11-27 10:46:42 -080036 RTC_DCHECK(thread_checker_.CalledOnValidThread());
solenberg13725082015-11-25 08:16:52 -080037 // Note: VoERTP_RTCP::SetRTCP_CNAME() accepts a char[256] array.
38 std::string c_name_limited = c_name.substr(0, 255);
solenberg358057b2015-11-27 10:46:42 -080039 int error = channel()->SetRTCP_CNAME(c_name_limited.c_str());
solenberg13725082015-11-25 08:16:52 -080040 RTC_DCHECK_EQ(0, error);
41}
solenberg358057b2015-11-27 10:46:42 -080042
43void ChannelProxy::SetSendAbsoluteSenderTimeStatus(bool enable, int id) {
44 RTC_DCHECK(thread_checker_.CalledOnValidThread());
45 int error = channel()->SetSendAbsoluteSenderTimeStatus(enable, id);
46 RTC_DCHECK_EQ(0, error);
47}
48
49void ChannelProxy::SetSendAudioLevelIndicationStatus(bool enable, int id) {
50 RTC_DCHECK(thread_checker_.CalledOnValidThread());
51 int error = channel()->SetSendAudioLevelIndicationStatus(enable, id);
52 RTC_DCHECK_EQ(0, error);
53}
54
55void ChannelProxy::SetReceiveAbsoluteSenderTimeStatus(bool enable, int id) {
56 RTC_DCHECK(thread_checker_.CalledOnValidThread());
57 int error = channel()->SetReceiveAbsoluteSenderTimeStatus(enable, id);
58 RTC_DCHECK_EQ(0, error);
59}
60
61void ChannelProxy::SetReceiveAudioLevelIndicationStatus(bool enable, int id) {
62 RTC_DCHECK(thread_checker_.CalledOnValidThread());
63 int error = channel()->SetReceiveAudioLevelIndicationStatus(enable, id);
64 RTC_DCHECK_EQ(0, error);
65}
66
67CallStatistics ChannelProxy::GetRTCPStatistics() const {
68 RTC_DCHECK(thread_checker_.CalledOnValidThread());
69 CallStatistics stats = {0};
70 int error = channel()->GetRTPStatistics(stats);
71 RTC_DCHECK_EQ(0, error);
72 return stats;
73}
74
75std::vector<ReportBlock> ChannelProxy::GetRemoteRTCPReportBlocks() const {
76 RTC_DCHECK(thread_checker_.CalledOnValidThread());
77 std::vector<webrtc::ReportBlock> blocks;
78 int error = channel()->GetRemoteRTCPReportBlocks(&blocks);
79 RTC_DCHECK_EQ(0, error);
80 return blocks;
81}
82
83NetworkStatistics ChannelProxy::GetNetworkStatistics() const {
84 RTC_DCHECK(thread_checker_.CalledOnValidThread());
85 NetworkStatistics stats = {0};
86 int error = channel()->GetNetworkStatistics(stats);
87 RTC_DCHECK_EQ(0, error);
88 return stats;
89}
90
91AudioDecodingCallStats ChannelProxy::GetDecodingCallStatistics() const {
92 RTC_DCHECK(thread_checker_.CalledOnValidThread());
93 AudioDecodingCallStats stats;
94 channel()->GetDecodingCallStatistics(&stats);
95 return stats;
96}
97
98int32_t ChannelProxy::GetSpeechOutputLevelFullRange() const {
99 RTC_DCHECK(thread_checker_.CalledOnValidThread());
100 uint32_t level = 0;
101 int error = channel()->GetSpeechOutputLevelFullRange(level);
102 RTC_DCHECK_EQ(0, error);
103 return static_cast<int32_t>(level);
104}
105
106uint32_t ChannelProxy::GetDelayEstimate() const {
107 RTC_DCHECK(thread_checker_.CalledOnValidThread());
108 return channel()->GetDelayEstimate();
109}
110
Fredrik Solenbergb5727682015-12-04 15:22:19 +0100111bool ChannelProxy::SetSendTelephoneEventPayloadType(int payload_type) {
112 RTC_DCHECK(thread_checker_.CalledOnValidThread());
113 return channel()->SetSendTelephoneEventPayloadType(payload_type) == 0;
114}
115
116bool ChannelProxy::SendTelephoneEventOutband(uint8_t event,
117 uint32_t duration_ms) {
118 RTC_DCHECK(thread_checker_.CalledOnValidThread());
119 return
120 channel()->SendTelephoneEventOutband(event, duration_ms, 10, false) == 0;
121}
122
solenberg358057b2015-11-27 10:46:42 -0800123Channel* ChannelProxy::channel() const {
124 RTC_DCHECK(channel_owner_.channel());
125 return channel_owner_.channel();
126}
solenberg13725082015-11-25 08:16:52 -0800127} // namespace voe
128} // namespace webrtc