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

Side by Side Diff: content/renderer/renderer_blink_platform_impl.cc

Issue 2708933005: Fix WebAudio support for discrete channel layouts. (Closed)
Patch Set: Zero session_id. Created 3 years, 9 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 unified diff | Download patch
« no previous file with comments | « content/renderer/media/renderer_webaudiodevice_impl_unittest.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/renderer/renderer_blink_platform_impl.h" 5 #include "content/renderer/renderer_blink_platform_impl.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include <utility> 8 #include <utility>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 657 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 const blink::WebSecurityOrigin& security_origin) { 668 const blink::WebSecurityOrigin& security_origin) {
669 // Use a mock for testing. 669 // Use a mock for testing.
670 blink::WebAudioDevice* mock_device = 670 blink::WebAudioDevice* mock_device =
671 GetContentClient()->renderer()->OverrideCreateAudioDevice(); 671 GetContentClient()->renderer()->OverrideCreateAudioDevice();
672 if (mock_device) 672 if (mock_device)
673 return mock_device; 673 return mock_device;
674 674
675 // The |channels| does not exactly identify the channel layout of the 675 // The |channels| does not exactly identify the channel layout of the
676 // device. The switch statement below assigns a best guess to the channel 676 // device. The switch statement below assigns a best guess to the channel
677 // layout based on number of channels. 677 // layout based on number of channels.
678 media::ChannelLayout layout = media::CHANNEL_LAYOUT_UNSUPPORTED; 678 media::ChannelLayout layout = media::GuessChannelLayout(channels);
679 switch (channels) { 679 if (layout == media::CHANNEL_LAYOUT_UNSUPPORTED)
680 case 1: 680 layout = media::CHANNEL_LAYOUT_DISCRETE;
681 layout = media::CHANNEL_LAYOUT_MONO;
682 break;
683 case 2:
684 layout = media::CHANNEL_LAYOUT_STEREO;
685 break;
686 case 3:
687 layout = media::CHANNEL_LAYOUT_2_1;
688 break;
689 case 4:
690 layout = media::CHANNEL_LAYOUT_4_0;
691 break;
692 case 5:
693 layout = media::CHANNEL_LAYOUT_5_0;
694 break;
695 case 6:
696 layout = media::CHANNEL_LAYOUT_5_1;
697 break;
698 case 7:
699 layout = media::CHANNEL_LAYOUT_7_0;
700 break;
701 case 8:
702 layout = media::CHANNEL_LAYOUT_7_1;
703 break;
704 default:
705 // TODO need to also pass 'channels' into RendererWebAudioDeviceImpl for
706 // CHANNEL_LAYOUT_DISCRETE
707 NOTREACHED();
708 }
709 681
710 int session_id = 0; 682 int session_id = 0;
711 if (input_device_id.isNull() || 683 if (input_device_id.isNull() ||
712 !base::StringToInt(input_device_id.utf8(), &session_id)) { 684 !base::StringToInt(input_device_id.utf8(), &session_id)) {
713 if (input_channels > 0) 685 session_id = 0;
714 DLOG(WARNING) << "createAudioDevice(): request for audio input ignored";
715
716 input_channels = 0;
717 } 686 }
718 687
719 return RendererWebAudioDeviceImpl::Create( 688 return RendererWebAudioDeviceImpl::Create(
720 layout, latency_hint, callback, session_id, 689 layout, channels, latency_hint, callback, session_id,
721 static_cast<url::Origin>(security_origin)); 690 static_cast<url::Origin>(security_origin));
722 } 691 }
723 692
724 bool RendererBlinkPlatformImpl::loadAudioResource( 693 bool RendererBlinkPlatformImpl::loadAudioResource(
725 blink::WebAudioBus* destination_bus, 694 blink::WebAudioBus* destination_bus,
726 const char* audio_file_data, 695 const char* audio_file_data,
727 size_t data_size) { 696 size_t data_size) {
728 return DecodeAudioFileData( 697 return DecodeAudioFileData(
729 destination_bus, audio_file_data, data_size); 698 destination_bus, audio_file_data, data_size);
730 } 699 }
(...skipping 563 matching lines...) Expand 10 before | Expand all | Expand 10 after
1294 //------------------------------------------------------------------------------ 1263 //------------------------------------------------------------------------------
1295 void RendererBlinkPlatformImpl::requestPurgeMemory() { 1264 void RendererBlinkPlatformImpl::requestPurgeMemory() {
1296 // TODO(tasak|bashi): We should use ChildMemoryCoordinator here, but 1265 // TODO(tasak|bashi): We should use ChildMemoryCoordinator here, but
1297 // ChildMemoryCoordinator isn't always available as it's only initialized 1266 // ChildMemoryCoordinator isn't always available as it's only initialized
1298 // when kMemoryCoordinatorV0 is enabled. 1267 // when kMemoryCoordinatorV0 is enabled.
1299 // Use ChildMemoryCoordinator when memory coordinator is always enabled. 1268 // Use ChildMemoryCoordinator when memory coordinator is always enabled.
1300 base::MemoryCoordinatorClientRegistry::GetInstance()->PurgeMemory(); 1269 base::MemoryCoordinatorClientRegistry::GetInstance()->PurgeMemory();
1301 } 1270 }
1302 1271
1303 } // namespace content 1272 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/renderer_webaudiodevice_impl_unittest.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698