0

Use media::ChannelLayoutConfig in RendererWebAudioDeviceImpl constructor

Doing this conversion in the factory method instead of the constructor
body should reduce the chances of errors.

This CL should cause no functional changes.

Change-Id: Ide49e12cda2a259ea17480b6ed4ce73610d4ecad
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5510562
Commit-Queue: Michael Wilson <mjwilson@chromium.org>
Reviewed-by: Olga Sharonova <olka@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1297621}
This commit is contained in:
Michael Wilson
2024-05-07 17:46:08 +00:00
committed by Chromium LUCI CQ
parent c4ad7dcaff
commit a2b2425b8b
3 changed files with 15 additions and 21 deletions

@ -133,15 +133,14 @@ std::unique_ptr<RendererWebAudioDeviceImpl> RendererWebAudioDeviceImpl::Create(
return std::unique_ptr<RendererWebAudioDeviceImpl>(
new RendererWebAudioDeviceImpl(
sink_descriptor, layout, number_of_output_channels, latency_hint,
sink_descriptor, {layout, number_of_output_channels}, latency_hint,
callback, base::BindOnce(&GetOutputDeviceParameters),
base::BindRepeating(&GetNullAudioSink)));
}
RendererWebAudioDeviceImpl::RendererWebAudioDeviceImpl(
const WebAudioSinkDescriptor& sink_descriptor,
media::ChannelLayout layout,
int number_of_output_channels,
media::ChannelLayoutConfig layout_config,
const blink::WebAudioLatencyHint& latency_hint,
media::AudioRendererSink::RenderCallback* callback,
OutputDeviceParamsCallback device_params_cb,
@ -197,9 +196,9 @@ RendererWebAudioDeviceImpl::RendererWebAudioDeviceImpl(
GetOutputBufferSize(latency_hint_, latency, original_sink_params_);
DCHECK_NE(0, output_buffer_size);
current_sink_params_.Reset(
original_sink_params_.format(), {layout, number_of_output_channels},
original_sink_params_.sample_rate(), output_buffer_size);
current_sink_params_.Reset(original_sink_params_.format(), layout_config,
original_sink_params_.sample_rate(),
output_buffer_size);
// Specify the latency info to be passed to the browser side.
current_sink_params_.set_latency_tag(latency);

@ -97,8 +97,7 @@ class CONTENT_EXPORT RendererWebAudioDeviceImpl
RendererWebAudioDeviceImpl(
const blink::WebAudioSinkDescriptor& sink_descriptor,
media::ChannelLayout layout,
int number_of_output_channels,
media::ChannelLayoutConfig layout_config,
const blink::WebAudioLatencyHint& latency_hint,
media::AudioRendererSink::RenderCallback* webaudio_callback,
OutputDeviceParamsCallback device_params_cb,

@ -78,15 +78,13 @@ class RendererWebAudioDeviceImplUnderTest : public RendererWebAudioDeviceImpl {
public:
RendererWebAudioDeviceImplUnderTest(
const blink::WebAudioSinkDescriptor& sink_descriptor,
media::ChannelLayout layout,
int number_of_output_channels,
media::ChannelLayoutConfig layout_config,
const blink::WebAudioLatencyHint& latency_hint,
media::AudioRendererSink::RenderCallback* callback,
CreateSilentSinkCallback silent_sink_callback)
: RendererWebAudioDeviceImpl(
sink_descriptor,
layout,
number_of_output_channels,
layout_config,
latency_hint,
callback,
base::BindOnce(&MockGetOutputDeviceParameters),
@ -124,7 +122,7 @@ class RendererWebAudioDeviceImplTest
blink::WebAudioSinkDescriptor sink_descriptor(
blink::WebString::FromUTF8(std::string()), kFrameToken);
webaudio_device_ = std::make_unique<RendererWebAudioDeviceImplUnderTest>(
sink_descriptor, media::CHANNEL_LAYOUT_MONO, 1, latencyHint, this,
sink_descriptor, media::ChannelLayoutConfig::Mono(), latencyHint, this,
base::BindRepeating(
&RendererWebAudioDeviceImplTest::CreateMockSilentSink,
// Guaranteed to be valid because |this| owns |webaudio_device_| and
@ -134,11 +132,11 @@ class RendererWebAudioDeviceImplTest
blink::scheduler::GetSingleThreadTaskRunnerForTesting());
}
void SetupDevice(media::ChannelLayout layout, int channels) {
void SetupDevice(media::ChannelLayoutConfig layout_config) {
blink::WebAudioSinkDescriptor sink_descriptor(
blink::WebString::FromUTF8(std::string()), kFrameToken);
webaudio_device_ = std::make_unique<RendererWebAudioDeviceImplUnderTest>(
sink_descriptor, layout, channels,
sink_descriptor, layout_config,
blink::WebAudioLatencyHint(
blink::WebAudioLatencyHint::kCategoryInteractive),
this,
@ -153,7 +151,7 @@ class RendererWebAudioDeviceImplTest
void SetupDevice(blink::WebAudioSinkDescriptor sink_descriptor) {
webaudio_device_ = std::make_unique<RendererWebAudioDeviceImplUnderTest>(
sink_descriptor, media::CHANNEL_LAYOUT_MONO, 1,
sink_descriptor, media::ChannelLayoutConfig::Mono(),
blink::WebAudioLatencyHint(
blink::WebAudioLatencyHint::kCategoryInteractive),
this,
@ -188,7 +186,7 @@ TEST_F(RendererWebAudioDeviceImplTest, ChannelLayout) {
if (layout == media::CHANNEL_LAYOUT_UNSUPPORTED)
layout = media::CHANNEL_LAYOUT_DISCRETE;
SetupDevice(layout, ch);
SetupDevice({layout, ch});
media::AudioParameters sink_params =
webaudio_device_->get_sink_params_for_testing();
EXPECT_TRUE(sink_params.IsValid());
@ -434,8 +432,7 @@ TEST_F(RendererWebAudioDeviceImplTest,
EXPECT_CALL(*mock_audio_renderer_sink_, Stop).Times(1);
}
media::ChannelLayout layout = media::GuessChannelLayout(2);
SetupDevice(layout, 2);
SetupDevice(media::ChannelLayoutConfig::Stereo());
// `sink_` should be created after OUTPUT_DEVICE_STATUS_OK status return from
// `CreateAndGetSinkStatus` call.
@ -464,8 +461,7 @@ TEST_F(RendererWebAudioDeviceImplTest,
EXPECT_CALL(*mock_audio_renderer_sink_, Stop).Times(1);
}
media::ChannelLayout layout = media::GuessChannelLayout(2);
SetupDevice(layout, 2);
SetupDevice(media::ChannelLayoutConfig::Stereo());
// `sink_` should be remain as nullptr after
// OUTPUT_DEVICE_STATUS_ERROR_INTERNAL status return from