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

Side by Side Diff: webrtc/modules/audio_device/test/audio_device_test_api.cc

Issue 2466613002: Adds thread safety annotations to the AudioDeviceBuffer class (Closed)
Patch Set: improved comment Created 4 years, 1 month 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
(...skipping 615 matching lines...) Expand 10 before | Expand all | Expand 10 after
626 // kDefaultCommunicationDevice 626 // kDefaultCommunicationDevice
627 EXPECT_TRUE(audio_device_->SetPlayoutDevice( 627 EXPECT_TRUE(audio_device_->SetPlayoutDevice(
628 AudioDeviceModule::kDefaultCommunicationDevice) == 0); 628 AudioDeviceModule::kDefaultCommunicationDevice) == 0);
629 EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available)); 629 EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
630 if (available) 630 if (available)
631 { 631 {
632 EXPECT_FALSE(audio_device_->PlayoutIsInitialized()); 632 EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
633 EXPECT_EQ(0, audio_device_->InitPlayout()); 633 EXPECT_EQ(0, audio_device_->InitPlayout());
634 EXPECT_EQ(0, audio_device_->StartPlayout()); 634 EXPECT_EQ(0, audio_device_->StartPlayout());
635 EXPECT_TRUE(audio_device_->Playing()); 635 EXPECT_TRUE(audio_device_->Playing());
636 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(audio_transport_)); 636 EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
637 EXPECT_EQ(0, audio_device_->StopPlayout()); 637 EXPECT_EQ(0, audio_device_->StopPlayout());
638 EXPECT_FALSE(audio_device_->Playing()); 638 EXPECT_FALSE(audio_device_->Playing());
639 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL)); 639 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
640 } 640 }
641 #endif 641 #endif
642 642
643 // repeat test but for kDefaultDevice 643 // repeat test but for kDefaultDevice
644 EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE)); 644 EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
645 EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available)); 645 EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
646 if (available) { 646 if (available) {
647 EXPECT_FALSE(audio_device_->PlayoutIsInitialized()); 647 EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
648 EXPECT_EQ(0, audio_device_->InitPlayout()); 648 EXPECT_EQ(0, audio_device_->InitPlayout());
649 EXPECT_EQ(0, audio_device_->StartPlayout()); 649 EXPECT_EQ(0, audio_device_->StartPlayout());
650 EXPECT_TRUE(audio_device_->Playing()); 650 EXPECT_TRUE(audio_device_->Playing());
651 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(audio_transport_)); 651 EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
652 EXPECT_EQ(0, audio_device_->StopPlayout()); 652 EXPECT_EQ(0, audio_device_->StopPlayout());
653 EXPECT_FALSE(audio_device_->Playing()); 653 EXPECT_FALSE(audio_device_->Playing());
654 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
654 } 655 }
655 656
656 // repeat test for all devices 657 // repeat test for all devices
657 int16_t no_devices = audio_device_->PlayoutDevices(); 658 int16_t no_devices = audio_device_->PlayoutDevices();
658 for (int i = 0; i < no_devices; i++) { 659 for (int i = 0; i < no_devices; i++) {
659 EXPECT_EQ(0, audio_device_->SetPlayoutDevice(i)); 660 EXPECT_EQ(0, audio_device_->SetPlayoutDevice(i));
660 EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available)); 661 EXPECT_EQ(0, audio_device_->PlayoutIsAvailable(&available));
661 if (available) { 662 if (available) {
662 EXPECT_FALSE(audio_device_->PlayoutIsInitialized()); 663 EXPECT_FALSE(audio_device_->PlayoutIsInitialized());
663 EXPECT_EQ(0, audio_device_->InitPlayout()); 664 EXPECT_EQ(0, audio_device_->InitPlayout());
664 EXPECT_EQ(0, audio_device_->StartPlayout()); 665 EXPECT_EQ(0, audio_device_->StartPlayout());
665 EXPECT_TRUE(audio_device_->Playing()); 666 EXPECT_TRUE(audio_device_->Playing());
666 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(audio_transport_)); 667 EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
667 EXPECT_EQ(0, audio_device_->StopPlayout()); 668 EXPECT_EQ(0, audio_device_->StopPlayout());
668 EXPECT_FALSE(audio_device_->Playing()); 669 EXPECT_FALSE(audio_device_->Playing());
670 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
669 } 671 }
670 } 672 }
671 } 673 }
672 674
673 TEST_F(AudioDeviceAPITest, StartAndStopRecording) { 675 TEST_F(AudioDeviceAPITest, StartAndStopRecording) {
674 bool available; 676 bool available;
675 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL)); 677 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
676 678
677 CheckInitialRecordingStates(); 679 CheckInitialRecordingStates();
678 680
679 EXPECT_EQ(-1, audio_device_->StartRecording()); 681 EXPECT_EQ(-1, audio_device_->StartRecording());
680 EXPECT_EQ(0, audio_device_->StopRecording()); 682 EXPECT_EQ(0, audio_device_->StopRecording());
681 683
682 #ifdef _WIN32 684 #ifdef _WIN32
683 // kDefaultCommunicationDevice 685 // kDefaultCommunicationDevice
684 EXPECT_TRUE(audio_device_->SetRecordingDevice( 686 EXPECT_TRUE(audio_device_->SetRecordingDevice(
685 AudioDeviceModule::kDefaultCommunicationDevice) == 0); 687 AudioDeviceModule::kDefaultCommunicationDevice) == 0);
686 EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available)); 688 EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
687 if (available) 689 if (available)
688 { 690 {
689 EXPECT_FALSE(audio_device_->RecordingIsInitialized()); 691 EXPECT_FALSE(audio_device_->RecordingIsInitialized());
690 EXPECT_EQ(0, audio_device_->InitRecording()); 692 EXPECT_EQ(0, audio_device_->InitRecording());
691 EXPECT_EQ(0, audio_device_->StartRecording()); 693 EXPECT_EQ(0, audio_device_->StartRecording());
692 EXPECT_TRUE(audio_device_->Recording()); 694 EXPECT_TRUE(audio_device_->Recording());
693 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(audio_transport_)); 695 EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
694 EXPECT_EQ(0, audio_device_->StopRecording()); 696 EXPECT_EQ(0, audio_device_->StopRecording());
695 EXPECT_FALSE(audio_device_->Recording()); 697 EXPECT_FALSE(audio_device_->Recording());
696 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL)); 698 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
697 } 699 }
698 #endif 700 #endif
699 701
700 // repeat test but for kDefaultDevice 702 // repeat test but for kDefaultDevice
701 EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE)); 703 EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
702 EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available)); 704 EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
703 if (available) { 705 if (available) {
704 EXPECT_FALSE(audio_device_->RecordingIsInitialized()); 706 EXPECT_FALSE(audio_device_->RecordingIsInitialized());
705 EXPECT_EQ(0, audio_device_->InitRecording()); 707 EXPECT_EQ(0, audio_device_->InitRecording());
706 EXPECT_EQ(0, audio_device_->StartRecording()); 708 EXPECT_EQ(0, audio_device_->StartRecording());
707 EXPECT_TRUE(audio_device_->Recording()); 709 EXPECT_TRUE(audio_device_->Recording());
708 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(audio_transport_)); 710 EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
709 EXPECT_EQ(0, audio_device_->StopRecording()); 711 EXPECT_EQ(0, audio_device_->StopRecording());
710 EXPECT_FALSE(audio_device_->Recording()); 712 EXPECT_FALSE(audio_device_->Recording());
713 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
711 } 714 }
712 715
713 // repeat test for all devices 716 // repeat test for all devices
714 int16_t no_devices = audio_device_->RecordingDevices(); 717 int16_t no_devices = audio_device_->RecordingDevices();
715 for (int i = 0; i < no_devices; i++) { 718 for (int i = 0; i < no_devices; i++) {
716 EXPECT_EQ(0, audio_device_->SetRecordingDevice(i)); 719 EXPECT_EQ(0, audio_device_->SetRecordingDevice(i));
717 EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available)); 720 EXPECT_EQ(0, audio_device_->RecordingIsAvailable(&available));
718 if (available) { 721 if (available) {
719 EXPECT_FALSE(audio_device_->RecordingIsInitialized()); 722 EXPECT_FALSE(audio_device_->RecordingIsInitialized());
720 EXPECT_EQ(0, audio_device_->InitRecording()); 723 EXPECT_EQ(0, audio_device_->InitRecording());
721 EXPECT_EQ(0, audio_device_->StartRecording()); 724 EXPECT_EQ(0, audio_device_->StartRecording());
722 EXPECT_TRUE(audio_device_->Recording()); 725 EXPECT_TRUE(audio_device_->Recording());
723 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(audio_transport_)); 726 EXPECT_EQ(-1, audio_device_->RegisterAudioCallback(audio_transport_));
724 EXPECT_EQ(0, audio_device_->StopRecording()); 727 EXPECT_EQ(0, audio_device_->StopRecording());
725 EXPECT_FALSE(audio_device_->Recording()); 728 EXPECT_FALSE(audio_device_->Recording());
729 EXPECT_EQ(0, audio_device_->RegisterAudioCallback(NULL));
726 } 730 }
727 } 731 }
728 } 732 }
729 733
730 #if defined(_WIN32) && !defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD) 734 #if defined(_WIN32) && !defined(WEBRTC_WINDOWS_CORE_AUDIO_BUILD)
731 TEST_F(AudioDeviceAPITest, SetAndGetWaveOutVolume) { 735 TEST_F(AudioDeviceAPITest, SetAndGetWaveOutVolume) {
732 uint32_t vol(0); 736 uint32_t vol(0);
733 // NOTE 1: Windows Wave only! 737 // NOTE 1: Windows Wave only!
734 // NOTE 2: It seems like the waveOutSetVolume API returns 738 // NOTE 2: It seems like the waveOutSetVolume API returns
735 // MMSYSERR_NOTSUPPORTED on some Vista machines! 739 // MMSYSERR_NOTSUPPORTED on some Vista machines!
(...skipping 964 matching lines...) Expand 10 before | Expand all | Expand 10 after
1700 EXPECT_EQ(48000, sampleRate); 1704 EXPECT_EQ(48000, sampleRate);
1701 #elif defined(ANDROID) 1705 #elif defined(ANDROID)
1702 TEST_LOG("Playout sample rate is %u\n\n", sampleRate); 1706 TEST_LOG("Playout sample rate is %u\n\n", sampleRate);
1703 EXPECT_TRUE((sampleRate == 44000) || (sampleRate == 16000)); 1707 EXPECT_TRUE((sampleRate == 44000) || (sampleRate == 16000));
1704 #elif defined(WEBRTC_IOS) 1708 #elif defined(WEBRTC_IOS)
1705 TEST_LOG("Playout sample rate is %u\n\n", sampleRate); 1709 TEST_LOG("Playout sample rate is %u\n\n", sampleRate);
1706 EXPECT_TRUE((sampleRate == 44000) || (sampleRate == 16000) || 1710 EXPECT_TRUE((sampleRate == 44000) || (sampleRate == 16000) ||
1707 (sampleRate == 8000)); 1711 (sampleRate == 8000));
1708 #endif 1712 #endif
1709 } 1713 }
1710
1711 TEST_F(AudioDeviceAPITest, ResetAudioDevice) {
1712 CheckInitialPlayoutStates();
1713 CheckInitialRecordingStates();
1714 EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
1715 EXPECT_EQ(0, audio_device_->SetRecordingDevice(MACRO_DEFAULT_DEVICE));
1716
1717 #if defined(WEBRTC_IOS)
1718 // Not playing or recording, should just return 0
1719 EXPECT_EQ(0, audio_device_->ResetAudioDevice());
1720
1721 EXPECT_EQ(0, audio_device_->InitRecording());
1722 EXPECT_EQ(0, audio_device_->StartRecording());
1723 EXPECT_EQ(0, audio_device_->InitPlayout());
1724 EXPECT_EQ(0, audio_device_->StartPlayout());
1725 for (int l=0; l<20; ++l)
1726 {
1727 TEST_LOG("Resetting sound device several time with pause %d ms\n", l);
1728 EXPECT_EQ(0, audio_device_->ResetAudioDevice());
1729 SleepMs(l);
1730 }
1731 #else
1732 // Fail tests
1733 EXPECT_EQ(-1, audio_device_->ResetAudioDevice());
1734
1735 // TODO(kjellander): Fix so these tests pass on Mac.
1736 #if !defined(WEBRTC_MAC)
1737 EXPECT_EQ(0, audio_device_->InitRecording());
1738 EXPECT_EQ(0, audio_device_->StartRecording());
1739 EXPECT_EQ(0, audio_device_->InitPlayout());
1740 EXPECT_EQ(0, audio_device_->StartPlayout());
1741 #endif
1742 EXPECT_EQ(-1, audio_device_->ResetAudioDevice());
1743 #endif
1744 EXPECT_EQ(0, audio_device_->StopRecording());
1745 EXPECT_EQ(0, audio_device_->StopPlayout());
1746 }
1747
1748 TEST_F(AudioDeviceAPITest, SetPlayoutSpeaker) {
1749 CheckInitialPlayoutStates();
1750 EXPECT_EQ(0, audio_device_->SetPlayoutDevice(MACRO_DEFAULT_DEVICE));
1751
1752 bool loudspeakerOn(false);
1753 #if defined(WEBRTC_IOS)
1754 // Not playing or recording, should just return a success
1755 EXPECT_EQ(0, audio_device_->SetLoudspeakerStatus(true));
1756 EXPECT_EQ(0, audio_device_->GetLoudspeakerStatus(&loudspeakerOn));
1757 EXPECT_TRUE(loudspeakerOn);
1758 EXPECT_EQ(0, audio_device_->SetLoudspeakerStatus(false));
1759 EXPECT_EQ(0, audio_device_->GetLoudspeakerStatus(&loudspeakerOn));
1760 EXPECT_FALSE(loudspeakerOn);
1761
1762 EXPECT_EQ(0, audio_device_->InitPlayout());
1763 EXPECT_EQ(0, audio_device_->StartPlayout());
1764 EXPECT_EQ(0, audio_device_->SetLoudspeakerStatus(true));
1765 EXPECT_EQ(0, audio_device_->GetLoudspeakerStatus(&loudspeakerOn));
1766 EXPECT_TRUE(loudspeakerOn);
1767 EXPECT_EQ(0, audio_device_->SetLoudspeakerStatus(false));
1768 EXPECT_EQ(0, audio_device_->GetLoudspeakerStatus(&loudspeakerOn));
1769 EXPECT_FALSE(loudspeakerOn);
1770
1771 #else
1772 // Fail tests
1773 EXPECT_EQ(-1, audio_device_->SetLoudspeakerStatus(true));
1774 EXPECT_EQ(-1, audio_device_->SetLoudspeakerStatus(false));
1775 EXPECT_EQ(-1, audio_device_->SetLoudspeakerStatus(true));
1776 EXPECT_EQ(-1, audio_device_->SetLoudspeakerStatus(false));
1777
1778 // TODO(kjellander): Fix so these tests pass on Mac.
1779 #if !defined(WEBRTC_MAC)
1780 EXPECT_EQ(0, audio_device_->InitPlayout());
1781 EXPECT_EQ(0, audio_device_->StartPlayout());
1782 #endif
1783
1784 EXPECT_EQ(-1, audio_device_->GetLoudspeakerStatus(&loudspeakerOn));
1785 #endif
1786 EXPECT_EQ(0, audio_device_->StopPlayout());
1787 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698