OLD | NEW |
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 Loading... |
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 Loading... |
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 } | |
OLD | NEW |