Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1189)

Unified Diff: voice_engine/channel.cc

Issue 3015553002: Remove voe::OutputMixer and AudioConferenceMixer. (Closed)
Patch Set: remove conference mixer from presubmit.py Created 3 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « voice_engine/channel.h ('k') | voice_engine/channel_proxy.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: voice_engine/channel.cc
diff --git a/voice_engine/channel.cc b/voice_engine/channel.cc
index 85b14fd1f266bd0b9cee833a81b66e5e631147bf..aaca65a36dd65a63384d8e93e32c21af4fd1637d 100644
--- a/voice_engine/channel.cc
+++ b/voice_engine/channel.cc
@@ -39,7 +39,6 @@
#include "rtc_base/timeutils.h"
#include "system_wrappers/include/field_trial.h"
#include "system_wrappers/include/trace.h"
-#include "voice_engine/output_mixer.h"
#include "voice_engine/statistics.h"
#include "voice_engine/utility.h"
@@ -619,15 +618,17 @@ bool Channel::OnRecoveredPacket(const uint8_t* rtp_packet,
return ReceivePacket(rtp_packet, rtp_packet_length, header, false);
}
-MixerParticipant::AudioFrameInfo Channel::GetAudioFrameWithMuted(
- int32_t id,
- AudioFrame* audioFrame) {
+AudioMixer::Source::AudioFrameInfo Channel::GetAudioFrameWithInfo(
+ int sample_rate_hz,
+ AudioFrame* audio_frame) {
+ audio_frame->sample_rate_hz_ = sample_rate_hz;
+
unsigned int ssrc;
RTC_CHECK_EQ(GetRemoteSSRC(ssrc), 0);
event_log_proxy_->LogAudioPlayout(ssrc);
// Get 10ms raw PCM data from the ACM (mixer limits output frequency)
bool muted;
- if (audio_coding_->PlayoutData10Ms(audioFrame->sample_rate_hz_, audioFrame,
+ if (audio_coding_->PlayoutData10Ms(audio_frame->sample_rate_hz_, audio_frame,
&muted) == -1) {
WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId, _channelId),
"Channel::GetAudioFrame() PlayoutData10Ms() failed!");
@@ -635,20 +636,20 @@ MixerParticipant::AudioFrameInfo Channel::GetAudioFrameWithMuted(
// error so that the audio mixer module doesn't add it to the mix. As
// a result, it won't be played out and the actions skipped here are
// irrelevant.
- return MixerParticipant::AudioFrameInfo::kError;
+ return AudioMixer::Source::AudioFrameInfo::kError;
}
if (muted) {
// TODO(henrik.lundin): We should be able to do better than this. But we
// will have to go through all the cases below where the audio samples may
// be used, and handle the muted case in some way.
- AudioFrameOperations::Mute(audioFrame);
+ AudioFrameOperations::Mute(audio_frame);
}
// Convert module ID to internal VoE channel ID
- audioFrame->id_ = VoEChannelId(audioFrame->id_);
+ audio_frame->id_ = VoEChannelId(audio_frame->id_);
// Store speech type for dead-or-alive detection
- _outputSpeechType = audioFrame->speech_type_;
+ _outputSpeechType = audio_frame->speech_type_;
{
// Pass the audio buffers to an optional sink callback, before applying
@@ -658,9 +659,9 @@ MixerParticipant::AudioFrameInfo Channel::GetAudioFrameWithMuted(
rtc::CritScope cs(&_callbackCritSect);
if (audio_sink_) {
AudioSinkInterface::Data data(
- audioFrame->data(), audioFrame->samples_per_channel_,
- audioFrame->sample_rate_hz_, audioFrame->num_channels_,
- audioFrame->timestamp_);
+ audio_frame->data(), audio_frame->samples_per_channel_,
+ audio_frame->sample_rate_hz_, audio_frame->num_channels_,
+ audio_frame->timestamp_);
audio_sink_->OnData(data);
}
}
@@ -674,89 +675,53 @@ MixerParticipant::AudioFrameInfo Channel::GetAudioFrameWithMuted(
// Output volume scaling
if (output_gain < 0.99f || output_gain > 1.01f) {
// TODO(solenberg): Combine with mute state - this can cause clicks!
- AudioFrameOperations::ScaleWithSat(output_gain, audioFrame);
+ AudioFrameOperations::ScaleWithSat(output_gain, audio_frame);
}
// Measure audio level (0-9)
// TODO(henrik.lundin) Use the |muted| information here too.
// TODO(deadbeef): Use RmsLevel for |_outputAudioLevel| (see
// https://crbug.com/webrtc/7517).
- _outputAudioLevel.ComputeLevel(*audioFrame, kAudioSampleDurationSeconds);
+ _outputAudioLevel.ComputeLevel(*audio_frame, kAudioSampleDurationSeconds);
- if (capture_start_rtp_time_stamp_ < 0 && audioFrame->timestamp_ != 0) {
+ if (capture_start_rtp_time_stamp_ < 0 && audio_frame->timestamp_ != 0) {
// The first frame with a valid rtp timestamp.
- capture_start_rtp_time_stamp_ = audioFrame->timestamp_;
+ capture_start_rtp_time_stamp_ = audio_frame->timestamp_;
}
if (capture_start_rtp_time_stamp_ >= 0) {
- // audioFrame.timestamp_ should be valid from now on.
+ // audio_frame.timestamp_ should be valid from now on.
// Compute elapsed time.
int64_t unwrap_timestamp =
- rtp_ts_wraparound_handler_->Unwrap(audioFrame->timestamp_);
- audioFrame->elapsed_time_ms_ =
+ rtp_ts_wraparound_handler_->Unwrap(audio_frame->timestamp_);
+ audio_frame->elapsed_time_ms_ =
(unwrap_timestamp - capture_start_rtp_time_stamp_) /
(GetRtpTimestampRateHz() / 1000);
{
rtc::CritScope lock(&ts_stats_lock_);
// Compute ntp time.
- audioFrame->ntp_time_ms_ =
- ntp_estimator_.Estimate(audioFrame->timestamp_);
+ audio_frame->ntp_time_ms_ =
+ ntp_estimator_.Estimate(audio_frame->timestamp_);
// |ntp_time_ms_| won't be valid until at least 2 RTCP SRs are received.
- if (audioFrame->ntp_time_ms_ > 0) {
+ if (audio_frame->ntp_time_ms_ > 0) {
// Compute |capture_start_ntp_time_ms_| so that
// |capture_start_ntp_time_ms_| + |elapsed_time_ms_| == |ntp_time_ms_|
capture_start_ntp_time_ms_ =
- audioFrame->ntp_time_ms_ - audioFrame->elapsed_time_ms_;
+ audio_frame->ntp_time_ms_ - audio_frame->elapsed_time_ms_;
}
}
}
- return muted ? MixerParticipant::AudioFrameInfo::kMuted
- : MixerParticipant::AudioFrameInfo::kNormal;
-}
-
-AudioMixer::Source::AudioFrameInfo Channel::GetAudioFrameWithInfo(
- int sample_rate_hz,
- AudioFrame* audio_frame) {
- audio_frame->sample_rate_hz_ = sample_rate_hz;
-
- const auto frame_info = GetAudioFrameWithMuted(-1, audio_frame);
-
- using FrameInfo = AudioMixer::Source::AudioFrameInfo;
- FrameInfo new_audio_frame_info = FrameInfo::kError;
- switch (frame_info) {
- case MixerParticipant::AudioFrameInfo::kNormal:
- new_audio_frame_info = FrameInfo::kNormal;
- break;
- case MixerParticipant::AudioFrameInfo::kMuted:
- new_audio_frame_info = FrameInfo::kMuted;
- break;
- case MixerParticipant::AudioFrameInfo::kError:
- new_audio_frame_info = FrameInfo::kError;
- break;
- }
- return new_audio_frame_info;
+ return muted ? AudioMixer::Source::AudioFrameInfo::kMuted
+ : AudioMixer::Source::AudioFrameInfo::kNormal;
}
-int32_t Channel::NeededFrequency(int32_t id) const {
- WEBRTC_TRACE(kTraceStream, kTraceVoice, VoEId(_instanceId, _channelId),
- "Channel::NeededFrequency(id=%d)", id);
-
- int highestNeeded = 0;
-
- // Determine highest needed receive frequency
- int32_t receiveFrequency = audio_coding_->ReceiveFrequency();
-
+int Channel::PreferredSampleRate() const {
// Return the bigger of playout and receive frequency in the ACM.
- if (audio_coding_->PlayoutFrequency() > receiveFrequency) {
- highestNeeded = audio_coding_->PlayoutFrequency();
- } else {
- highestNeeded = receiveFrequency;
- }
-
- return highestNeeded;
+ return std::max(audio_coding_->ReceiveFrequency(),
+ audio_coding_->PlayoutFrequency());
}
int32_t Channel::CreateChannel(Channel*& channel,
@@ -806,7 +771,6 @@ Channel::Channel(int32_t channelId,
capture_start_rtp_time_stamp_(-1),
capture_start_ntp_time_ms_(-1),
_engineStatisticsPtr(NULL),
- _outputMixerPtr(NULL),
_moduleProcessThreadPtr(NULL),
_audioDeviceModulePtr(NULL),
_voiceEngineObserverPtr(NULL),
@@ -983,7 +947,6 @@ void Channel::Terminate() {
}
int32_t Channel::SetEngineInformation(Statistics& engineStatistics,
- OutputMixer& outputMixer,
ProcessThread& moduleProcessThread,
AudioDeviceModule& audioDeviceModule,
VoiceEngineObserver* voiceEngineObserver,
@@ -994,7 +957,6 @@ int32_t Channel::SetEngineInformation(Statistics& engineStatistics,
WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId),
"Channel::SetEngineInformation()");
_engineStatisticsPtr = &engineStatistics;
- _outputMixerPtr = &outputMixer;
_moduleProcessThreadPtr = &moduleProcessThread;
_audioDeviceModulePtr = &audioDeviceModule;
_voiceEngineObserverPtr = voiceEngineObserver;
@@ -1020,14 +982,6 @@ int32_t Channel::StartPlayout() {
return 0;
}
- // Add participant as candidates for mixing.
- if (_outputMixerPtr->SetMixabilityStatus(*this, true) != 0) {
- _engineStatisticsPtr->SetLastError(
- VE_AUDIO_CONF_MIX_MODULE_ERROR, kTraceError,
- "StartPlayout() failed to add participant to mixer");
- return -1;
- }
-
channel_state_.SetPlaying(true);
return 0;
@@ -1040,14 +994,6 @@ int32_t Channel::StopPlayout() {
return 0;
}
- // Remove participant as candidates for mixing
- if (_outputMixerPtr->SetMixabilityStatus(*this, false) != 0) {
- _engineStatisticsPtr->SetLastError(
- VE_AUDIO_CONF_MIX_MODULE_ERROR, kTraceError,
- "StopPlayout() failed to remove participant from mixer");
- return -1;
- }
-
channel_state_.SetPlaying(false);
_outputAudioLevel.Clear();
« no previous file with comments | « voice_engine/channel.h ('k') | voice_engine/channel_proxy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698