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

Side by Side Diff: webrtc/modules/audio_device/audio_device_impl.cc

Issue 2103863004: UMA log for audio_device Init and Start(Playout|Recording). Make Init return a more specific error … (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rename variable. Created 4 years, 5 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
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/base/checks.h"
11 #include "webrtc/base/logging.h" 12 #include "webrtc/base/logging.h"
12 #include "webrtc/base/refcount.h" 13 #include "webrtc/base/refcount.h"
13 #include "webrtc/base/timeutils.h" 14 #include "webrtc/base/timeutils.h"
14 #include "webrtc/common_audio/signal_processing/include/signal_processing_librar y.h" 15 #include "webrtc/common_audio/signal_processing/include/signal_processing_librar y.h"
15 #include "webrtc/modules/audio_device/audio_device_config.h" 16 #include "webrtc/modules/audio_device/audio_device_config.h"
17 #include "webrtc/modules/audio_device/audio_device_generic.h"
16 #include "webrtc/modules/audio_device/audio_device_impl.h" 18 #include "webrtc/modules/audio_device/audio_device_impl.h"
19 #include "webrtc/system_wrappers/include/metrics.h"
17 20
18 #include <assert.h> 21 #include <assert.h>
19 #include <string.h> 22 #include <string.h>
20 23
21 #if defined(_WIN32) 24 #if defined(_WIN32)
22 #include "audio_device_wave_win.h" 25 #include "audio_device_wave_win.h"
23 #if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD) 26 #if defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
24 #include "audio_device_core_win.h" 27 #include "audio_device_core_win.h"
25 #endif 28 #endif
26 #elif defined(WEBRTC_ANDROID) 29 #elif defined(WEBRTC_ANDROID)
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 // Create the *Linux* implementation of the Audio Device 262 // Create the *Linux* implementation of the Audio Device
260 // 263 //
261 #elif defined(WEBRTC_LINUX) 264 #elif defined(WEBRTC_LINUX)
262 if ((audioLayer == kLinuxPulseAudio) || 265 if ((audioLayer == kLinuxPulseAudio) ||
263 (audioLayer == kPlatformDefaultAudio)) { 266 (audioLayer == kPlatformDefaultAudio)) {
264 #if defined(LINUX_PULSE) 267 #if defined(LINUX_PULSE)
265 LOG(INFO) << "attempting to use the Linux PulseAudio APIs..."; 268 LOG(INFO) << "attempting to use the Linux PulseAudio APIs...";
266 269
267 // create *Linux PulseAudio* implementation 270 // create *Linux PulseAudio* implementation
268 AudioDeviceLinuxPulse* pulseDevice = new AudioDeviceLinuxPulse(Id()); 271 AudioDeviceLinuxPulse* pulseDevice = new AudioDeviceLinuxPulse(Id());
269 if (pulseDevice->Init() != -1) { 272 if (pulseDevice->Init() == AudioDeviceGeneric::InitStatus::OK) {
270 ptrAudioDevice = pulseDevice; 273 ptrAudioDevice = pulseDevice;
271 LOG(INFO) << "Linux PulseAudio APIs will be utilized"; 274 LOG(INFO) << "Linux PulseAudio APIs will be utilized";
272 } else { 275 } else {
273 delete pulseDevice; 276 delete pulseDevice;
274 #endif 277 #endif
275 #if defined(LINUX_ALSA) 278 #if defined(LINUX_ALSA)
276 // create *Linux ALSA Audio* implementation 279 // create *Linux ALSA Audio* implementation
277 ptrAudioDevice = new AudioDeviceLinuxALSA(Id()); 280 ptrAudioDevice = new AudioDeviceLinuxALSA(Id());
278 if (ptrAudioDevice != NULL) { 281 if (ptrAudioDevice != NULL) {
279 // Pulse Audio was not supported => revert to ALSA instead 282 // Pulse Audio was not supported => revert to ALSA instead
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 } 477 }
475 478
476 // ---------------------------------------------------------------------------- 479 // ----------------------------------------------------------------------------
477 // Init 480 // Init
478 // ---------------------------------------------------------------------------- 481 // ----------------------------------------------------------------------------
479 482
480 int32_t AudioDeviceModuleImpl::Init() { 483 int32_t AudioDeviceModuleImpl::Init() {
481 LOG(INFO) << __FUNCTION__; 484 LOG(INFO) << __FUNCTION__;
482 if (_initialized) 485 if (_initialized)
483 return 0; 486 return 0;
487 RTC_CHECK(_ptrAudioDevice);
484 488
485 if (!_ptrAudioDevice) 489 AudioDeviceGeneric::InitStatus status = _ptrAudioDevice->Init();
486 return -1; 490 RTC_HISTOGRAM_ENUMERATION(
487 491 "WebRTC.Audio.InitializationResult", static_cast<int>(status),
488 if (_ptrAudioDevice->Init() == -1) { 492 static_cast<int>(AudioDeviceGeneric::InitStatus::NUM_STATUSES));
493 if (status != AudioDeviceGeneric::InitStatus::OK) {
494 LOG(LS_ERROR) << "Audio device initialization failed.";
489 return -1; 495 return -1;
490 } 496 }
491 497
492 _initialized = true; 498 _initialized = true;
493 return 0; 499 return 0;
494 } 500 }
495 501
496 // ---------------------------------------------------------------------------- 502 // ----------------------------------------------------------------------------
497 // Terminate 503 // Terminate
498 // ---------------------------------------------------------------------------- 504 // ----------------------------------------------------------------------------
(...skipping 928 matching lines...) Expand 10 before | Expand all | Expand 10 after
1427 } 1433 }
1428 1434
1429 // ---------------------------------------------------------------------------- 1435 // ----------------------------------------------------------------------------
1430 // InitPlayout 1436 // InitPlayout
1431 // ---------------------------------------------------------------------------- 1437 // ----------------------------------------------------------------------------
1432 1438
1433 int32_t AudioDeviceModuleImpl::InitPlayout() { 1439 int32_t AudioDeviceModuleImpl::InitPlayout() {
1434 LOG(INFO) << __FUNCTION__; 1440 LOG(INFO) << __FUNCTION__;
1435 CHECK_INITIALIZED(); 1441 CHECK_INITIALIZED();
1436 _audioDeviceBuffer.InitPlayout(); 1442 _audioDeviceBuffer.InitPlayout();
1437 return (_ptrAudioDevice->InitPlayout()); 1443 int32_t result = _ptrAudioDevice->InitPlayout();
1444 LOG(INFO) << "output: " << result;
1445 RTC_HISTOGRAM_BOOLEAN("WebRTC.Audio.InitPlayoutSuccess",
1446 static_cast<int>(result == 0));
1447 return result;
1438 } 1448 }
1439 1449
1440 // ---------------------------------------------------------------------------- 1450 // ----------------------------------------------------------------------------
1441 // InitRecording 1451 // InitRecording
1442 // ---------------------------------------------------------------------------- 1452 // ----------------------------------------------------------------------------
1443 1453
1444 int32_t AudioDeviceModuleImpl::InitRecording() { 1454 int32_t AudioDeviceModuleImpl::InitRecording() {
1445 LOG(INFO) << __FUNCTION__; 1455 LOG(INFO) << __FUNCTION__;
1446 CHECK_INITIALIZED(); 1456 CHECK_INITIALIZED();
1447 _audioDeviceBuffer.InitRecording(); 1457 _audioDeviceBuffer.InitRecording();
1448 return (_ptrAudioDevice->InitRecording()); 1458 int32_t result = _ptrAudioDevice->InitRecording();
1459 LOG(INFO) << "output: " << result;
1460 RTC_HISTOGRAM_BOOLEAN("WebRTC.Audio.InitRecordingSuccess",
1461 static_cast<int>(result == 0));
1462 return result;
1449 } 1463 }
1450 1464
1451 // ---------------------------------------------------------------------------- 1465 // ----------------------------------------------------------------------------
1452 // PlayoutIsInitialized 1466 // PlayoutIsInitialized
1453 // ---------------------------------------------------------------------------- 1467 // ----------------------------------------------------------------------------
1454 1468
1455 bool AudioDeviceModuleImpl::PlayoutIsInitialized() const { 1469 bool AudioDeviceModuleImpl::PlayoutIsInitialized() const {
1456 LOG(INFO) << __FUNCTION__; 1470 LOG(INFO) << __FUNCTION__;
1457 CHECK_INITIALIZED_BOOL(); 1471 CHECK_INITIALIZED_BOOL();
1458 return (_ptrAudioDevice->PlayoutIsInitialized()); 1472 return (_ptrAudioDevice->PlayoutIsInitialized());
1459 } 1473 }
1460 1474
1461 // ---------------------------------------------------------------------------- 1475 // ----------------------------------------------------------------------------
1462 // RecordingIsInitialized 1476 // RecordingIsInitialized
1463 // ---------------------------------------------------------------------------- 1477 // ----------------------------------------------------------------------------
1464 1478
1465 bool AudioDeviceModuleImpl::RecordingIsInitialized() const { 1479 bool AudioDeviceModuleImpl::RecordingIsInitialized() const {
1466 LOG(INFO) << __FUNCTION__; 1480 LOG(INFO) << __FUNCTION__;
1467 CHECK_INITIALIZED_BOOL(); 1481 CHECK_INITIALIZED_BOOL();
1468 return (_ptrAudioDevice->RecordingIsInitialized()); 1482 return (_ptrAudioDevice->RecordingIsInitialized());
1469 } 1483 }
1470 1484
1471 // ---------------------------------------------------------------------------- 1485 // ----------------------------------------------------------------------------
1472 // StartPlayout 1486 // StartPlayout
1473 // ---------------------------------------------------------------------------- 1487 // ----------------------------------------------------------------------------
1474 1488
1475 int32_t AudioDeviceModuleImpl::StartPlayout() { 1489 int32_t AudioDeviceModuleImpl::StartPlayout() {
1476 LOG(INFO) << __FUNCTION__; 1490 LOG(INFO) << __FUNCTION__;
1477 CHECK_INITIALIZED(); 1491 CHECK_INITIALIZED();
1478 return (_ptrAudioDevice->StartPlayout()); 1492 int32_t result = _ptrAudioDevice->StartPlayout();
1493 LOG(INFO) << "output: " << result;
1494 RTC_HISTOGRAM_BOOLEAN("WebRTC.Audio.StartPlayoutSuccess",
1495 static_cast<int>(result == 0));
1496 return result;
1479 } 1497 }
1480 1498
1481 // ---------------------------------------------------------------------------- 1499 // ----------------------------------------------------------------------------
1482 // StopPlayout 1500 // StopPlayout
1483 // ---------------------------------------------------------------------------- 1501 // ----------------------------------------------------------------------------
1484 1502
1485 int32_t AudioDeviceModuleImpl::StopPlayout() { 1503 int32_t AudioDeviceModuleImpl::StopPlayout() {
1486 LOG(INFO) << __FUNCTION__; 1504 LOG(INFO) << __FUNCTION__;
1487 CHECK_INITIALIZED(); 1505 CHECK_INITIALIZED();
1488 return (_ptrAudioDevice->StopPlayout()); 1506 int32_t result = _ptrAudioDevice->StopPlayout();
1507 LOG(INFO) << "output: " << result;
1508 RTC_HISTOGRAM_BOOLEAN("WebRTC.Audio.StopPlayoutSuccess",
1509 static_cast<int>(result == 0));
1510 return result;
1489 } 1511 }
1490 1512
1491 // ---------------------------------------------------------------------------- 1513 // ----------------------------------------------------------------------------
1492 // Playing 1514 // Playing
1493 // ---------------------------------------------------------------------------- 1515 // ----------------------------------------------------------------------------
1494 1516
1495 bool AudioDeviceModuleImpl::Playing() const { 1517 bool AudioDeviceModuleImpl::Playing() const {
1496 LOG(INFO) << __FUNCTION__; 1518 LOG(INFO) << __FUNCTION__;
1497 CHECK_INITIALIZED_BOOL(); 1519 CHECK_INITIALIZED_BOOL();
1498 return (_ptrAudioDevice->Playing()); 1520 return (_ptrAudioDevice->Playing());
1499 } 1521 }
1500 1522
1501 // ---------------------------------------------------------------------------- 1523 // ----------------------------------------------------------------------------
1502 // StartRecording 1524 // StartRecording
1503 // ---------------------------------------------------------------------------- 1525 // ----------------------------------------------------------------------------
1504 1526
1505 int32_t AudioDeviceModuleImpl::StartRecording() { 1527 int32_t AudioDeviceModuleImpl::StartRecording() {
1506 LOG(INFO) << __FUNCTION__; 1528 LOG(INFO) << __FUNCTION__;
1507 CHECK_INITIALIZED(); 1529 CHECK_INITIALIZED();
1508 return (_ptrAudioDevice->StartRecording()); 1530 int32_t result = _ptrAudioDevice->StartRecording();
1531 LOG(INFO) << "output: " << result;
1532 RTC_HISTOGRAM_BOOLEAN("WebRTC.Audio.StartRecordingSuccess",
1533 static_cast<int>(result == 0));
1534 return result;
1509 } 1535 }
1510 // ---------------------------------------------------------------------------- 1536 // ----------------------------------------------------------------------------
1511 // StopRecording 1537 // StopRecording
1512 // ---------------------------------------------------------------------------- 1538 // ----------------------------------------------------------------------------
1513 1539
1514 int32_t AudioDeviceModuleImpl::StopRecording() { 1540 int32_t AudioDeviceModuleImpl::StopRecording() {
1515 LOG(INFO) << __FUNCTION__; 1541 LOG(INFO) << __FUNCTION__;
1516 CHECK_INITIALIZED(); 1542 CHECK_INITIALIZED();
1517 return (_ptrAudioDevice->StopRecording()); 1543 int32_t result = _ptrAudioDevice->StopRecording();
1544 LOG(INFO) << "output: " << result;
1545 RTC_HISTOGRAM_BOOLEAN("WebRTC.Audio.StopRecordingSuccess",
1546 static_cast<int>(result == 0));
1547 return result;
1518 } 1548 }
1519 1549
1520 // ---------------------------------------------------------------------------- 1550 // ----------------------------------------------------------------------------
1521 // Recording 1551 // Recording
1522 // ---------------------------------------------------------------------------- 1552 // ----------------------------------------------------------------------------
1523 1553
1524 bool AudioDeviceModuleImpl::Recording() const { 1554 bool AudioDeviceModuleImpl::Recording() const {
1525 LOG(INFO) << __FUNCTION__; 1555 LOG(INFO) << __FUNCTION__;
1526 CHECK_INITIALIZED_BOOL(); 1556 CHECK_INITIALIZED_BOOL();
1527 return (_ptrAudioDevice->Recording()); 1557 return (_ptrAudioDevice->Recording());
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
1966 // PlatformAudioLayer 1996 // PlatformAudioLayer
1967 // ---------------------------------------------------------------------------- 1997 // ----------------------------------------------------------------------------
1968 1998
1969 AudioDeviceModule::AudioLayer AudioDeviceModuleImpl::PlatformAudioLayer() 1999 AudioDeviceModule::AudioLayer AudioDeviceModuleImpl::PlatformAudioLayer()
1970 const { 2000 const {
1971 LOG(INFO) << __FUNCTION__; 2001 LOG(INFO) << __FUNCTION__;
1972 return _platformAudioLayer; 2002 return _platformAudioLayer;
1973 } 2003 }
1974 2004
1975 } // namespace webrtc 2005 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698