Revert of Allow more than 2 input channels in AudioProcessing. (patchset #13 id:240001 of https://codereview.webrtc.org/1226093007/)
Reason for revert:
Breaks Chromium FYI content_browsertest on all platforms. The testcase that fails is WebRtcAecDumpBrowserTest.CallWithAecDump.
https://build.chromium.org/p/chromium.webrtc.fyi/builders/Linux/builds/19388
Sample output:
[ RUN ] WebRtcAecDumpBrowserTest.CallWithAecDump
Xlib: extension "RANDR" missing on display ":9".
[4:14:0722/211548:1282124453:WARNING:webrtcvoiceengine.cc(472)] Unexpected codec: ISAC/48000/1 (105)
[4:14:0722/211548:1282124593:WARNING:webrtcvoiceengine.cc(472)] Unexpected codec: PCMU/8000/2 (110)
[4:14:0722/211548:1282124700:WARNING:webrtcvoiceengine.cc(472)] Unexpected codec: PCMA/8000/2 (118)
[4:14:0722/211548:1282124815:WARNING:webrtcvoiceengine.cc(472)] Unexpected codec: G722/8000/2 (119)
[19745:19745:0722/211548:1282133667:INFO:CONSOLE(64)] "Looking at video in element remote-view-1", source: http://127.0.0.1:48819/media/webrtc_test_utilities.js (64)
[19745:19745:0722/211548:1282136892:INFO:CONSOLE(64)] "Looking at video in element remote-view-2", source: http://127.0.0.1:48819/media/webrtc_test_utilities.js (64)
../../content/test/webrtc_content_browsertest_base.cc:62: Failure
Value of: ExecuteScriptAndExtractString( shell()->web_contents(), javascript, &result)
Actual: false
Expected: true
Failed to execute javascript call({video: true, audio: true});.
From javascript: (nothing)
When executing 'call({video: true, audio: true});'
../../content/test/webrtc_content_browsertest_base.cc:75: Failure
Failed
../../content/browser/media/webrtc_aecdump_browsertest.cc:26: Failure
Expected: (base::kNullProcessId) != (*id), actual: 0 vs 0
../../content/browser/media/webrtc_aecdump_browsertest.cc:95: Failure
Value of: GetRenderProcessHostId(&render_process_id)
Actual: false
Expected: true
../../content/browser/media/webrtc_aecdump_browsertest.cc:99: Failure
Value of: base::PathExists(dump_file)
Actual: false
Expected: true
../../content/browser/media/webrtc_aecdump_browsertest.cc:101: Failure
Value of: base::GetFileSize(dump_file, &file_size)
Actual: false
Expected: true
../../content/browser/media/webrtc_aecdump_browsertest.cc:102: Failure
Expected: (file_size) > (0), actual: 0 vs 0
[ FAILED ] WebRtcAecDumpBrowserTest.CallWithAecDump, where TypeParam = and GetParam() = (361 ms)
Original issue's description:
> Allow more than 2 input channels in AudioProcessing.
>
> The number of output channels is constrained to be equal to either 1 or the
> number of input channels.
>
> R=aluebs@webrtc.org, andrew@webrtc.org, pbos@webrtc.org
>
> Committed: c204754b7a
TBR=andrew@webrtc.org,aluebs@webrtc.org,ajm@chromium.org,pbos@chromium.org,pbos@webrtc.org,mgraczyk@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
Review URL: https://codereview.webrtc.org/1253573005
Cr-Commit-Position: refs/heads/master@{#9621}
This commit is contained in:
@ -13,7 +13,6 @@
|
||||
|
||||
#include <list>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "webrtc/base/scoped_ptr.h"
|
||||
#include "webrtc/base/thread_annotations.h"
|
||||
@ -48,6 +47,42 @@ class Event;
|
||||
} // namespace audioproc
|
||||
#endif
|
||||
|
||||
class AudioRate {
|
||||
public:
|
||||
explicit AudioRate(int sample_rate_hz) { set(sample_rate_hz); }
|
||||
virtual ~AudioRate() {}
|
||||
|
||||
void set(int rate) {
|
||||
rate_ = rate;
|
||||
samples_per_channel_ = AudioProcessing::kChunkSizeMs * rate_ / 1000;
|
||||
}
|
||||
|
||||
int rate() const { return rate_; }
|
||||
int samples_per_channel() const { return samples_per_channel_; }
|
||||
|
||||
private:
|
||||
int rate_;
|
||||
int samples_per_channel_;
|
||||
};
|
||||
|
||||
class AudioFormat : public AudioRate {
|
||||
public:
|
||||
AudioFormat(int sample_rate_hz, int num_channels)
|
||||
: AudioRate(sample_rate_hz),
|
||||
num_channels_(num_channels) {}
|
||||
virtual ~AudioFormat() {}
|
||||
|
||||
void set(int rate, int num_channels) {
|
||||
AudioRate::set(rate);
|
||||
num_channels_ = num_channels;
|
||||
}
|
||||
|
||||
int num_channels() const { return num_channels_; }
|
||||
|
||||
private:
|
||||
int num_channels_;
|
||||
};
|
||||
|
||||
class AudioProcessingImpl : public AudioProcessing {
|
||||
public:
|
||||
explicit AudioProcessingImpl(const Config& config);
|
||||
@ -64,7 +99,6 @@ class AudioProcessingImpl : public AudioProcessing {
|
||||
ChannelLayout input_layout,
|
||||
ChannelLayout output_layout,
|
||||
ChannelLayout reverse_layout) override;
|
||||
int Initialize(const ProcessingConfig& processing_config) override;
|
||||
void SetExtraOptions(const Config& config) override;
|
||||
int set_sample_rate_hz(int rate) override;
|
||||
int input_sample_rate_hz() const override;
|
||||
@ -84,17 +118,11 @@ class AudioProcessingImpl : public AudioProcessing {
|
||||
int output_sample_rate_hz,
|
||||
ChannelLayout output_layout,
|
||||
float* const* dest) override;
|
||||
int ProcessStream(const float* const* src,
|
||||
const StreamConfig& input_config,
|
||||
const StreamConfig& output_config,
|
||||
float* const* dest) override;
|
||||
int AnalyzeReverseStream(AudioFrame* frame) override;
|
||||
int AnalyzeReverseStream(const float* const* data,
|
||||
int samples_per_channel,
|
||||
int sample_rate_hz,
|
||||
ChannelLayout layout) override;
|
||||
int AnalyzeReverseStream(const float* const* data,
|
||||
const StreamConfig& reverse_config) override;
|
||||
int set_stream_delay_ms(int delay) override;
|
||||
int stream_delay_ms() const override;
|
||||
bool was_stream_delay_set() const override;
|
||||
@ -120,9 +148,19 @@ class AudioProcessingImpl : public AudioProcessing {
|
||||
virtual int InitializeLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_);
|
||||
|
||||
private:
|
||||
int InitializeLocked(const ProcessingConfig& config)
|
||||
int InitializeLocked(int input_sample_rate_hz,
|
||||
int output_sample_rate_hz,
|
||||
int reverse_sample_rate_hz,
|
||||
int num_input_channels,
|
||||
int num_output_channels,
|
||||
int num_reverse_channels)
|
||||
EXCLUSIVE_LOCKS_REQUIRED(crit_);
|
||||
int MaybeInitializeLocked(const ProcessingConfig& config)
|
||||
int MaybeInitializeLocked(int input_sample_rate_hz,
|
||||
int output_sample_rate_hz,
|
||||
int reverse_sample_rate_hz,
|
||||
int num_input_channels,
|
||||
int num_output_channels,
|
||||
int num_reverse_channels)
|
||||
EXCLUSIVE_LOCKS_REQUIRED(crit_);
|
||||
int ProcessStreamLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_);
|
||||
int AnalyzeReverseStreamLocked() EXCLUSIVE_LOCKS_REQUIRED(crit_);
|
||||
@ -159,14 +197,13 @@ class AudioProcessingImpl : public AudioProcessing {
|
||||
std::string event_str_; // Memory for protobuf serialization.
|
||||
#endif
|
||||
|
||||
// Format of processing streams at input/output call sites.
|
||||
ProcessingConfig api_format_;
|
||||
|
||||
// Only the rate and samples fields of fwd_proc_format_ are used because the
|
||||
// forward processing number of channels is mutable and is tracked by the
|
||||
// capture_audio_.
|
||||
StreamConfig fwd_proc_format_;
|
||||
StreamConfig rev_proc_format_;
|
||||
AudioFormat fwd_in_format_;
|
||||
// This one is an AudioRate, because the forward processing number of channels
|
||||
// is mutable and is tracked by the capture_audio_.
|
||||
AudioRate fwd_proc_format_;
|
||||
AudioFormat fwd_out_format_;
|
||||
AudioFormat rev_in_format_;
|
||||
AudioFormat rev_proc_format_;
|
||||
int split_rate_;
|
||||
|
||||
int stream_delay_ms_;
|
||||
|
||||
Reference in New Issue
Block a user