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 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
670 _channelId, kPlaybackPerChannel, (int16_t*)audioFrame->data_, | 670 _channelId, kPlaybackPerChannel, (int16_t*)audioFrame->data_, |
671 audioFrame->samples_per_channel_, audioFrame->sample_rate_hz_, | 671 audioFrame->samples_per_channel_, audioFrame->sample_rate_hz_, |
672 isStereo); | 672 isStereo); |
673 } | 673 } |
674 } | 674 } |
675 | 675 |
676 // Record playout if enabled | 676 // Record playout if enabled |
677 { | 677 { |
678 rtc::CritScope cs(&_fileCritSect); | 678 rtc::CritScope cs(&_fileCritSect); |
679 | 679 |
680 if (_outputFileRecording && _outputFileRecorderPtr) { | 680 if (_outputFileRecording && output_file_recorder_) { |
681 _outputFileRecorderPtr->RecordAudioToFile(*audioFrame); | 681 output_file_recorder_->RecordAudioToFile(*audioFrame); |
682 } | 682 } |
683 } | 683 } |
684 | 684 |
685 // Measure audio level (0-9) | 685 // Measure audio level (0-9) |
686 // TODO(henrik.lundin) Use the |muted| information here too. | 686 // TODO(henrik.lundin) Use the |muted| information here too. |
687 _outputAudioLevel.ComputeLevel(*audioFrame); | 687 _outputAudioLevel.ComputeLevel(*audioFrame); |
688 | 688 |
689 if (capture_start_rtp_time_stamp_ < 0 && audioFrame->timestamp_ != 0) { | 689 if (capture_start_rtp_time_stamp_ < 0 && audioFrame->timestamp_ != 0) { |
690 // The first frame with a valid rtp timestamp. | 690 // The first frame with a valid rtp timestamp. |
691 capture_start_rtp_time_stamp_ = audioFrame->timestamp_; | 691 capture_start_rtp_time_stamp_ = audioFrame->timestamp_; |
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
735 } else { | 735 } else { |
736 highestNeeded = receiveFrequency; | 736 highestNeeded = receiveFrequency; |
737 } | 737 } |
738 | 738 |
739 // Special case, if we're playing a file on the playout side | 739 // Special case, if we're playing a file on the playout side |
740 // we take that frequency into consideration as well | 740 // we take that frequency into consideration as well |
741 // This is not needed on sending side, since the codec will | 741 // This is not needed on sending side, since the codec will |
742 // limit the spectrum anyway. | 742 // limit the spectrum anyway. |
743 if (channel_state_.Get().output_file_playing) { | 743 if (channel_state_.Get().output_file_playing) { |
744 rtc::CritScope cs(&_fileCritSect); | 744 rtc::CritScope cs(&_fileCritSect); |
745 if (_outputFilePlayerPtr) { | 745 if (output_file_player_) { |
746 if (_outputFilePlayerPtr->Frequency() > highestNeeded) { | 746 if (output_file_player_->Frequency() > highestNeeded) { |
747 highestNeeded = _outputFilePlayerPtr->Frequency(); | 747 highestNeeded = output_file_player_->Frequency(); |
748 } | 748 } |
749 } | 749 } |
750 } | 750 } |
751 | 751 |
752 return (highestNeeded); | 752 return (highestNeeded); |
753 } | 753 } |
754 | 754 |
755 int32_t Channel::CreateChannel(Channel*& channel, | 755 int32_t Channel::CreateChannel(Channel*& channel, |
756 int32_t channelId, | 756 int32_t channelId, |
757 uint32_t instanceId, | 757 uint32_t instanceId, |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
840 rtp_receive_statistics_( | 840 rtp_receive_statistics_( |
841 ReceiveStatistics::Create(Clock::GetRealTimeClock())), | 841 ReceiveStatistics::Create(Clock::GetRealTimeClock())), |
842 rtp_receiver_( | 842 rtp_receiver_( |
843 RtpReceiver::CreateAudioReceiver(Clock::GetRealTimeClock(), | 843 RtpReceiver::CreateAudioReceiver(Clock::GetRealTimeClock(), |
844 this, | 844 this, |
845 this, | 845 this, |
846 rtp_payload_registry_.get())), | 846 rtp_payload_registry_.get())), |
847 telephone_event_handler_(rtp_receiver_->GetTelephoneEventHandler()), | 847 telephone_event_handler_(rtp_receiver_->GetTelephoneEventHandler()), |
848 _outputAudioLevel(), | 848 _outputAudioLevel(), |
849 _externalTransport(false), | 849 _externalTransport(false), |
850 _inputFilePlayerPtr(NULL), | |
851 _outputFilePlayerPtr(NULL), | |
852 _outputFileRecorderPtr(NULL), | |
853 // Avoid conflict with other channels by adding 1024 - 1026, | 850 // Avoid conflict with other channels by adding 1024 - 1026, |
854 // won't use as much as 1024 channels. | 851 // won't use as much as 1024 channels. |
855 _inputFilePlayerId(VoEModuleId(instanceId, channelId) + 1024), | 852 _inputFilePlayerId(VoEModuleId(instanceId, channelId) + 1024), |
856 _outputFilePlayerId(VoEModuleId(instanceId, channelId) + 1025), | 853 _outputFilePlayerId(VoEModuleId(instanceId, channelId) + 1025), |
857 _outputFileRecorderId(VoEModuleId(instanceId, channelId) + 1026), | 854 _outputFileRecorderId(VoEModuleId(instanceId, channelId) + 1026), |
858 _outputFileRecording(false), | 855 _outputFileRecording(false), |
859 _outputExternalMedia(false), | 856 _outputExternalMedia(false), |
860 _inputExternalMediaCallbackPtr(NULL), | 857 _inputExternalMediaCallbackPtr(NULL), |
861 _outputExternalMediaCallbackPtr(NULL), | 858 _outputExternalMediaCallbackPtr(NULL), |
862 _timeStamp(0), // This is just an offset, RTP module will add it's own | 859 _timeStamp(0), // This is just an offset, RTP module will add it's own |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
963 DeRegisterExternalMediaProcessing(kPlaybackPerChannel); | 960 DeRegisterExternalMediaProcessing(kPlaybackPerChannel); |
964 } | 961 } |
965 if (channel_state_.Get().input_external_media) { | 962 if (channel_state_.Get().input_external_media) { |
966 DeRegisterExternalMediaProcessing(kRecordingPerChannel); | 963 DeRegisterExternalMediaProcessing(kRecordingPerChannel); |
967 } | 964 } |
968 StopSend(); | 965 StopSend(); |
969 StopPlayout(); | 966 StopPlayout(); |
970 | 967 |
971 { | 968 { |
972 rtc::CritScope cs(&_fileCritSect); | 969 rtc::CritScope cs(&_fileCritSect); |
973 if (_inputFilePlayerPtr) { | 970 if (input_file_player_) { |
974 _inputFilePlayerPtr->RegisterModuleFileCallback(NULL); | 971 input_file_player_->RegisterModuleFileCallback(NULL); |
975 _inputFilePlayerPtr->StopPlayingFile(); | 972 input_file_player_->StopPlayingFile(); |
976 FilePlayer::DestroyFilePlayer(_inputFilePlayerPtr); | |
977 _inputFilePlayerPtr = NULL; | |
978 } | 973 } |
979 if (_outputFilePlayerPtr) { | 974 if (output_file_player_) { |
980 _outputFilePlayerPtr->RegisterModuleFileCallback(NULL); | 975 output_file_player_->RegisterModuleFileCallback(NULL); |
981 _outputFilePlayerPtr->StopPlayingFile(); | 976 output_file_player_->StopPlayingFile(); |
982 FilePlayer::DestroyFilePlayer(_outputFilePlayerPtr); | |
983 _outputFilePlayerPtr = NULL; | |
984 } | 977 } |
985 if (_outputFileRecorderPtr) { | 978 if (output_file_recorder_) { |
986 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL); | 979 output_file_recorder_->RegisterModuleFileCallback(NULL); |
987 _outputFileRecorderPtr->StopRecording(); | 980 output_file_recorder_->StopRecording(); |
988 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr); | |
989 _outputFileRecorderPtr = NULL; | |
990 } | 981 } |
991 } | 982 } |
992 | 983 |
993 // The order to safely shutdown modules in a channel is: | 984 // The order to safely shutdown modules in a channel is: |
994 // 1. De-register callbacks in modules | 985 // 1. De-register callbacks in modules |
995 // 2. De-register modules in process thread | 986 // 2. De-register modules in process thread |
996 // 3. Destroy modules | 987 // 3. Destroy modules |
997 if (audio_coding_->RegisterTransportCallback(NULL) == -1) { | 988 if (audio_coding_->RegisterTransportCallback(NULL) == -1) { |
998 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), | 989 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), |
999 "~Channel() failed to de-register transport callback" | 990 "~Channel() failed to de-register transport callback" |
(...skipping 762 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1762 if (channel_state_.Get().output_file_playing) { | 1753 if (channel_state_.Get().output_file_playing) { |
1763 _engineStatisticsPtr->SetLastError( | 1754 _engineStatisticsPtr->SetLastError( |
1764 VE_ALREADY_PLAYING, kTraceError, | 1755 VE_ALREADY_PLAYING, kTraceError, |
1765 "StartPlayingFileLocally() is already playing"); | 1756 "StartPlayingFileLocally() is already playing"); |
1766 return -1; | 1757 return -1; |
1767 } | 1758 } |
1768 | 1759 |
1769 { | 1760 { |
1770 rtc::CritScope cs(&_fileCritSect); | 1761 rtc::CritScope cs(&_fileCritSect); |
1771 | 1762 |
1772 if (_outputFilePlayerPtr) { | 1763 if (output_file_player_) { |
1773 _outputFilePlayerPtr->RegisterModuleFileCallback(NULL); | 1764 output_file_player_->RegisterModuleFileCallback(NULL); |
1774 FilePlayer::DestroyFilePlayer(_outputFilePlayerPtr); | 1765 output_file_player_.reset(); |
1775 _outputFilePlayerPtr = NULL; | |
1776 } | 1766 } |
1777 | 1767 |
1778 _outputFilePlayerPtr = FilePlayer::CreateFilePlayer( | 1768 output_file_player_ = FilePlayer::NewFilePlayer( |
1779 _outputFilePlayerId, (const FileFormats)format); | 1769 _outputFilePlayerId, (const FileFormats)format); |
1780 | 1770 |
1781 if (_outputFilePlayerPtr == NULL) { | 1771 if (!output_file_player_) { |
1782 _engineStatisticsPtr->SetLastError( | 1772 _engineStatisticsPtr->SetLastError( |
1783 VE_INVALID_ARGUMENT, kTraceError, | 1773 VE_INVALID_ARGUMENT, kTraceError, |
1784 "StartPlayingFileLocally() filePlayer format is not correct"); | 1774 "StartPlayingFileLocally() filePlayer format is not correct"); |
1785 return -1; | 1775 return -1; |
1786 } | 1776 } |
1787 | 1777 |
1788 const uint32_t notificationTime(0); | 1778 const uint32_t notificationTime(0); |
1789 | 1779 |
1790 if (_outputFilePlayerPtr->StartPlayingFile( | 1780 if (output_file_player_->StartPlayingFile( |
1791 fileName, loop, startPosition, volumeScaling, notificationTime, | 1781 fileName, loop, startPosition, volumeScaling, notificationTime, |
1792 stopPosition, (const CodecInst*)codecInst) != 0) { | 1782 stopPosition, (const CodecInst*)codecInst) != 0) { |
1793 _engineStatisticsPtr->SetLastError( | 1783 _engineStatisticsPtr->SetLastError( |
1794 VE_BAD_FILE, kTraceError, | 1784 VE_BAD_FILE, kTraceError, |
1795 "StartPlayingFile() failed to start file playout"); | 1785 "StartPlayingFile() failed to start file playout"); |
1796 _outputFilePlayerPtr->StopPlayingFile(); | 1786 output_file_player_->StopPlayingFile(); |
1797 FilePlayer::DestroyFilePlayer(_outputFilePlayerPtr); | 1787 output_file_player_.reset(); |
1798 _outputFilePlayerPtr = NULL; | |
1799 return -1; | 1788 return -1; |
1800 } | 1789 } |
1801 _outputFilePlayerPtr->RegisterModuleFileCallback(this); | 1790 output_file_player_->RegisterModuleFileCallback(this); |
1802 channel_state_.SetOutputFilePlaying(true); | 1791 channel_state_.SetOutputFilePlaying(true); |
1803 } | 1792 } |
1804 | 1793 |
1805 if (RegisterFilePlayingToMixer() != 0) | 1794 if (RegisterFilePlayingToMixer() != 0) |
1806 return -1; | 1795 return -1; |
1807 | 1796 |
1808 return 0; | 1797 return 0; |
1809 } | 1798 } |
1810 | 1799 |
1811 int Channel::StartPlayingFileLocally(InStream* stream, | 1800 int Channel::StartPlayingFileLocally(InStream* stream, |
(...skipping 18 matching lines...) Expand all Loading... |
1830 _engineStatisticsPtr->SetLastError( | 1819 _engineStatisticsPtr->SetLastError( |
1831 VE_ALREADY_PLAYING, kTraceError, | 1820 VE_ALREADY_PLAYING, kTraceError, |
1832 "StartPlayingFileLocally() is already playing"); | 1821 "StartPlayingFileLocally() is already playing"); |
1833 return -1; | 1822 return -1; |
1834 } | 1823 } |
1835 | 1824 |
1836 { | 1825 { |
1837 rtc::CritScope cs(&_fileCritSect); | 1826 rtc::CritScope cs(&_fileCritSect); |
1838 | 1827 |
1839 // Destroy the old instance | 1828 // Destroy the old instance |
1840 if (_outputFilePlayerPtr) { | 1829 if (output_file_player_) { |
1841 _outputFilePlayerPtr->RegisterModuleFileCallback(NULL); | 1830 output_file_player_->RegisterModuleFileCallback(NULL); |
1842 FilePlayer::DestroyFilePlayer(_outputFilePlayerPtr); | 1831 output_file_player_.reset(); |
1843 _outputFilePlayerPtr = NULL; | |
1844 } | 1832 } |
1845 | 1833 |
1846 // Create the instance | 1834 // Create the instance |
1847 _outputFilePlayerPtr = FilePlayer::CreateFilePlayer( | 1835 output_file_player_ = FilePlayer::NewFilePlayer( |
1848 _outputFilePlayerId, (const FileFormats)format); | 1836 _outputFilePlayerId, (const FileFormats)format); |
1849 | 1837 |
1850 if (_outputFilePlayerPtr == NULL) { | 1838 if (!output_file_player_) { |
1851 _engineStatisticsPtr->SetLastError( | 1839 _engineStatisticsPtr->SetLastError( |
1852 VE_INVALID_ARGUMENT, kTraceError, | 1840 VE_INVALID_ARGUMENT, kTraceError, |
1853 "StartPlayingFileLocally() filePlayer format isnot correct"); | 1841 "StartPlayingFileLocally() filePlayer format isnot correct"); |
1854 return -1; | 1842 return -1; |
1855 } | 1843 } |
1856 | 1844 |
1857 const uint32_t notificationTime(0); | 1845 const uint32_t notificationTime(0); |
1858 | 1846 |
1859 if (_outputFilePlayerPtr->StartPlayingFile(*stream, startPosition, | 1847 if (output_file_player_->StartPlayingFile(*stream, startPosition, |
1860 volumeScaling, notificationTime, | 1848 volumeScaling, notificationTime, |
1861 stopPosition, codecInst) != 0) { | 1849 stopPosition, codecInst) != 0) { |
1862 _engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError, | 1850 _engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError, |
1863 "StartPlayingFile() failed to " | 1851 "StartPlayingFile() failed to " |
1864 "start file playout"); | 1852 "start file playout"); |
1865 _outputFilePlayerPtr->StopPlayingFile(); | 1853 output_file_player_->StopPlayingFile(); |
1866 FilePlayer::DestroyFilePlayer(_outputFilePlayerPtr); | 1854 output_file_player_.reset(); |
1867 _outputFilePlayerPtr = NULL; | |
1868 return -1; | 1855 return -1; |
1869 } | 1856 } |
1870 _outputFilePlayerPtr->RegisterModuleFileCallback(this); | 1857 output_file_player_->RegisterModuleFileCallback(this); |
1871 channel_state_.SetOutputFilePlaying(true); | 1858 channel_state_.SetOutputFilePlaying(true); |
1872 } | 1859 } |
1873 | 1860 |
1874 if (RegisterFilePlayingToMixer() != 0) | 1861 if (RegisterFilePlayingToMixer() != 0) |
1875 return -1; | 1862 return -1; |
1876 | 1863 |
1877 return 0; | 1864 return 0; |
1878 } | 1865 } |
1879 | 1866 |
1880 int Channel::StopPlayingFileLocally() { | 1867 int Channel::StopPlayingFileLocally() { |
1881 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), | 1868 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), |
1882 "Channel::StopPlayingFileLocally()"); | 1869 "Channel::StopPlayingFileLocally()"); |
1883 | 1870 |
1884 if (!channel_state_.Get().output_file_playing) { | 1871 if (!channel_state_.Get().output_file_playing) { |
1885 return 0; | 1872 return 0; |
1886 } | 1873 } |
1887 | 1874 |
1888 { | 1875 { |
1889 rtc::CritScope cs(&_fileCritSect); | 1876 rtc::CritScope cs(&_fileCritSect); |
1890 | 1877 |
1891 if (_outputFilePlayerPtr->StopPlayingFile() != 0) { | 1878 if (output_file_player_->StopPlayingFile() != 0) { |
1892 _engineStatisticsPtr->SetLastError( | 1879 _engineStatisticsPtr->SetLastError( |
1893 VE_STOP_RECORDING_FAILED, kTraceError, | 1880 VE_STOP_RECORDING_FAILED, kTraceError, |
1894 "StopPlayingFile() could not stop playing"); | 1881 "StopPlayingFile() could not stop playing"); |
1895 return -1; | 1882 return -1; |
1896 } | 1883 } |
1897 _outputFilePlayerPtr->RegisterModuleFileCallback(NULL); | 1884 output_file_player_->RegisterModuleFileCallback(NULL); |
1898 FilePlayer::DestroyFilePlayer(_outputFilePlayerPtr); | 1885 output_file_player_.reset(); |
1899 _outputFilePlayerPtr = NULL; | |
1900 channel_state_.SetOutputFilePlaying(false); | 1886 channel_state_.SetOutputFilePlaying(false); |
1901 } | 1887 } |
1902 // _fileCritSect cannot be taken while calling | 1888 // _fileCritSect cannot be taken while calling |
1903 // SetAnonymousMixibilityStatus. Refer to comments in | 1889 // SetAnonymousMixibilityStatus. Refer to comments in |
1904 // StartPlayingFileLocally(const char* ...) for more details. | 1890 // StartPlayingFileLocally(const char* ...) for more details. |
1905 if (_outputMixerPtr->SetAnonymousMixabilityStatus(*this, false) != 0) { | 1891 if (_outputMixerPtr->SetAnonymousMixabilityStatus(*this, false) != 0) { |
1906 _engineStatisticsPtr->SetLastError( | 1892 _engineStatisticsPtr->SetLastError( |
1907 VE_AUDIO_CONF_MIX_MODULE_ERROR, kTraceError, | 1893 VE_AUDIO_CONF_MIX_MODULE_ERROR, kTraceError, |
1908 "StopPlayingFile() failed to stop participant from playing as" | 1894 "StopPlayingFile() failed to stop participant from playing as" |
1909 "file in the mixer"); | 1895 "file in the mixer"); |
(...skipping 19 matching lines...) Expand all Loading... |
1929 // |_fileCritSect| cannot be taken while calling | 1915 // |_fileCritSect| cannot be taken while calling |
1930 // SetAnonymousMixabilityStatus() since as soon as the participant is added | 1916 // SetAnonymousMixabilityStatus() since as soon as the participant is added |
1931 // frames can be pulled by the mixer. Since the frames are generated from | 1917 // frames can be pulled by the mixer. Since the frames are generated from |
1932 // the file, _fileCritSect will be taken. This would result in a deadlock. | 1918 // the file, _fileCritSect will be taken. This would result in a deadlock. |
1933 if (_outputMixerPtr->SetAnonymousMixabilityStatus(*this, true) != 0) { | 1919 if (_outputMixerPtr->SetAnonymousMixabilityStatus(*this, true) != 0) { |
1934 channel_state_.SetOutputFilePlaying(false); | 1920 channel_state_.SetOutputFilePlaying(false); |
1935 rtc::CritScope cs(&_fileCritSect); | 1921 rtc::CritScope cs(&_fileCritSect); |
1936 _engineStatisticsPtr->SetLastError( | 1922 _engineStatisticsPtr->SetLastError( |
1937 VE_AUDIO_CONF_MIX_MODULE_ERROR, kTraceError, | 1923 VE_AUDIO_CONF_MIX_MODULE_ERROR, kTraceError, |
1938 "StartPlayingFile() failed to add participant as file to mixer"); | 1924 "StartPlayingFile() failed to add participant as file to mixer"); |
1939 _outputFilePlayerPtr->StopPlayingFile(); | 1925 output_file_player_->StopPlayingFile(); |
1940 FilePlayer::DestroyFilePlayer(_outputFilePlayerPtr); | 1926 output_file_player_.reset(); |
1941 _outputFilePlayerPtr = NULL; | |
1942 return -1; | 1927 return -1; |
1943 } | 1928 } |
1944 | 1929 |
1945 return 0; | 1930 return 0; |
1946 } | 1931 } |
1947 | 1932 |
1948 int Channel::StartPlayingFileAsMicrophone(const char* fileName, | 1933 int Channel::StartPlayingFileAsMicrophone(const char* fileName, |
1949 bool loop, | 1934 bool loop, |
1950 FileFormats format, | 1935 FileFormats format, |
1951 int startPosition, | 1936 int startPosition, |
(...skipping 10 matching lines...) Expand all Loading... |
1962 rtc::CritScope cs(&_fileCritSect); | 1947 rtc::CritScope cs(&_fileCritSect); |
1963 | 1948 |
1964 if (channel_state_.Get().input_file_playing) { | 1949 if (channel_state_.Get().input_file_playing) { |
1965 _engineStatisticsPtr->SetLastError( | 1950 _engineStatisticsPtr->SetLastError( |
1966 VE_ALREADY_PLAYING, kTraceWarning, | 1951 VE_ALREADY_PLAYING, kTraceWarning, |
1967 "StartPlayingFileAsMicrophone() filePlayer is playing"); | 1952 "StartPlayingFileAsMicrophone() filePlayer is playing"); |
1968 return 0; | 1953 return 0; |
1969 } | 1954 } |
1970 | 1955 |
1971 // Destroy the old instance | 1956 // Destroy the old instance |
1972 if (_inputFilePlayerPtr) { | 1957 if (input_file_player_) { |
1973 _inputFilePlayerPtr->RegisterModuleFileCallback(NULL); | 1958 input_file_player_->RegisterModuleFileCallback(NULL); |
1974 FilePlayer::DestroyFilePlayer(_inputFilePlayerPtr); | 1959 input_file_player_.reset(); |
1975 _inputFilePlayerPtr = NULL; | |
1976 } | 1960 } |
1977 | 1961 |
1978 // Create the instance | 1962 // Create the instance |
1979 _inputFilePlayerPtr = FilePlayer::CreateFilePlayer(_inputFilePlayerId, | 1963 input_file_player_ = FilePlayer::NewFilePlayer(_inputFilePlayerId, |
1980 (const FileFormats)format); | 1964 (const FileFormats)format); |
1981 | 1965 |
1982 if (_inputFilePlayerPtr == NULL) { | 1966 if (!input_file_player_) { |
1983 _engineStatisticsPtr->SetLastError( | 1967 _engineStatisticsPtr->SetLastError( |
1984 VE_INVALID_ARGUMENT, kTraceError, | 1968 VE_INVALID_ARGUMENT, kTraceError, |
1985 "StartPlayingFileAsMicrophone() filePlayer format isnot correct"); | 1969 "StartPlayingFileAsMicrophone() filePlayer format isnot correct"); |
1986 return -1; | 1970 return -1; |
1987 } | 1971 } |
1988 | 1972 |
1989 const uint32_t notificationTime(0); | 1973 const uint32_t notificationTime(0); |
1990 | 1974 |
1991 if (_inputFilePlayerPtr->StartPlayingFile( | 1975 if (input_file_player_->StartPlayingFile( |
1992 fileName, loop, startPosition, volumeScaling, notificationTime, | 1976 fileName, loop, startPosition, volumeScaling, notificationTime, |
1993 stopPosition, (const CodecInst*)codecInst) != 0) { | 1977 stopPosition, (const CodecInst*)codecInst) != 0) { |
1994 _engineStatisticsPtr->SetLastError( | 1978 _engineStatisticsPtr->SetLastError( |
1995 VE_BAD_FILE, kTraceError, | 1979 VE_BAD_FILE, kTraceError, |
1996 "StartPlayingFile() failed to start file playout"); | 1980 "StartPlayingFile() failed to start file playout"); |
1997 _inputFilePlayerPtr->StopPlayingFile(); | 1981 input_file_player_->StopPlayingFile(); |
1998 FilePlayer::DestroyFilePlayer(_inputFilePlayerPtr); | 1982 input_file_player_.reset(); |
1999 _inputFilePlayerPtr = NULL; | |
2000 return -1; | 1983 return -1; |
2001 } | 1984 } |
2002 _inputFilePlayerPtr->RegisterModuleFileCallback(this); | 1985 input_file_player_->RegisterModuleFileCallback(this); |
2003 channel_state_.SetInputFilePlaying(true); | 1986 channel_state_.SetInputFilePlaying(true); |
2004 | 1987 |
2005 return 0; | 1988 return 0; |
2006 } | 1989 } |
2007 | 1990 |
2008 int Channel::StartPlayingFileAsMicrophone(InStream* stream, | 1991 int Channel::StartPlayingFileAsMicrophone(InStream* stream, |
2009 FileFormats format, | 1992 FileFormats format, |
2010 int startPosition, | 1993 int startPosition, |
2011 float volumeScaling, | 1994 float volumeScaling, |
2012 int stopPosition, | 1995 int stopPosition, |
(...skipping 13 matching lines...) Expand all Loading... |
2026 rtc::CritScope cs(&_fileCritSect); | 2009 rtc::CritScope cs(&_fileCritSect); |
2027 | 2010 |
2028 if (channel_state_.Get().input_file_playing) { | 2011 if (channel_state_.Get().input_file_playing) { |
2029 _engineStatisticsPtr->SetLastError( | 2012 _engineStatisticsPtr->SetLastError( |
2030 VE_ALREADY_PLAYING, kTraceWarning, | 2013 VE_ALREADY_PLAYING, kTraceWarning, |
2031 "StartPlayingFileAsMicrophone() is playing"); | 2014 "StartPlayingFileAsMicrophone() is playing"); |
2032 return 0; | 2015 return 0; |
2033 } | 2016 } |
2034 | 2017 |
2035 // Destroy the old instance | 2018 // Destroy the old instance |
2036 if (_inputFilePlayerPtr) { | 2019 if (input_file_player_) { |
2037 _inputFilePlayerPtr->RegisterModuleFileCallback(NULL); | 2020 input_file_player_->RegisterModuleFileCallback(NULL); |
2038 FilePlayer::DestroyFilePlayer(_inputFilePlayerPtr); | 2021 input_file_player_.reset(); |
2039 _inputFilePlayerPtr = NULL; | |
2040 } | 2022 } |
2041 | 2023 |
2042 // Create the instance | 2024 // Create the instance |
2043 _inputFilePlayerPtr = FilePlayer::CreateFilePlayer(_inputFilePlayerId, | 2025 input_file_player_ = FilePlayer::NewFilePlayer(_inputFilePlayerId, |
2044 (const FileFormats)format); | 2026 (const FileFormats)format); |
2045 | 2027 |
2046 if (_inputFilePlayerPtr == NULL) { | 2028 if (!input_file_player_) { |
2047 _engineStatisticsPtr->SetLastError( | 2029 _engineStatisticsPtr->SetLastError( |
2048 VE_INVALID_ARGUMENT, kTraceError, | 2030 VE_INVALID_ARGUMENT, kTraceError, |
2049 "StartPlayingInputFile() filePlayer format isnot correct"); | 2031 "StartPlayingInputFile() filePlayer format isnot correct"); |
2050 return -1; | 2032 return -1; |
2051 } | 2033 } |
2052 | 2034 |
2053 const uint32_t notificationTime(0); | 2035 const uint32_t notificationTime(0); |
2054 | 2036 |
2055 if (_inputFilePlayerPtr->StartPlayingFile(*stream, startPosition, | 2037 if (input_file_player_->StartPlayingFile(*stream, startPosition, |
2056 volumeScaling, notificationTime, | 2038 volumeScaling, notificationTime, |
2057 stopPosition, codecInst) != 0) { | 2039 stopPosition, codecInst) != 0) { |
2058 _engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError, | 2040 _engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError, |
2059 "StartPlayingFile() failed to start " | 2041 "StartPlayingFile() failed to start " |
2060 "file playout"); | 2042 "file playout"); |
2061 _inputFilePlayerPtr->StopPlayingFile(); | 2043 input_file_player_->StopPlayingFile(); |
2062 FilePlayer::DestroyFilePlayer(_inputFilePlayerPtr); | 2044 input_file_player_.reset(); |
2063 _inputFilePlayerPtr = NULL; | |
2064 return -1; | 2045 return -1; |
2065 } | 2046 } |
2066 | 2047 |
2067 _inputFilePlayerPtr->RegisterModuleFileCallback(this); | 2048 input_file_player_->RegisterModuleFileCallback(this); |
2068 channel_state_.SetInputFilePlaying(true); | 2049 channel_state_.SetInputFilePlaying(true); |
2069 | 2050 |
2070 return 0; | 2051 return 0; |
2071 } | 2052 } |
2072 | 2053 |
2073 int Channel::StopPlayingFileAsMicrophone() { | 2054 int Channel::StopPlayingFileAsMicrophone() { |
2074 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), | 2055 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), |
2075 "Channel::StopPlayingFileAsMicrophone()"); | 2056 "Channel::StopPlayingFileAsMicrophone()"); |
2076 | 2057 |
2077 rtc::CritScope cs(&_fileCritSect); | 2058 rtc::CritScope cs(&_fileCritSect); |
2078 | 2059 |
2079 if (!channel_state_.Get().input_file_playing) { | 2060 if (!channel_state_.Get().input_file_playing) { |
2080 return 0; | 2061 return 0; |
2081 } | 2062 } |
2082 | 2063 |
2083 if (_inputFilePlayerPtr->StopPlayingFile() != 0) { | 2064 if (input_file_player_->StopPlayingFile() != 0) { |
2084 _engineStatisticsPtr->SetLastError( | 2065 _engineStatisticsPtr->SetLastError( |
2085 VE_STOP_RECORDING_FAILED, kTraceError, | 2066 VE_STOP_RECORDING_FAILED, kTraceError, |
2086 "StopPlayingFile() could not stop playing"); | 2067 "StopPlayingFile() could not stop playing"); |
2087 return -1; | 2068 return -1; |
2088 } | 2069 } |
2089 _inputFilePlayerPtr->RegisterModuleFileCallback(NULL); | 2070 input_file_player_->RegisterModuleFileCallback(NULL); |
2090 FilePlayer::DestroyFilePlayer(_inputFilePlayerPtr); | 2071 input_file_player_.reset(); |
2091 _inputFilePlayerPtr = NULL; | |
2092 channel_state_.SetInputFilePlaying(false); | 2072 channel_state_.SetInputFilePlaying(false); |
2093 | 2073 |
2094 return 0; | 2074 return 0; |
2095 } | 2075 } |
2096 | 2076 |
2097 int Channel::IsPlayingFileAsMicrophone() const { | 2077 int Channel::IsPlayingFileAsMicrophone() const { |
2098 return channel_state_.Get().input_file_playing; | 2078 return channel_state_.Get().input_file_playing; |
2099 } | 2079 } |
2100 | 2080 |
2101 int Channel::StartRecordingPlayout(const char* fileName, | 2081 int Channel::StartRecordingPlayout(const char* fileName, |
(...skipping 25 matching lines...) Expand all Loading... |
2127 (STR_CASE_CMP(codecInst->plname, "PCMU") == 0) || | 2107 (STR_CASE_CMP(codecInst->plname, "PCMU") == 0) || |
2128 (STR_CASE_CMP(codecInst->plname, "PCMA") == 0)) { | 2108 (STR_CASE_CMP(codecInst->plname, "PCMA") == 0)) { |
2129 format = kFileFormatWavFile; | 2109 format = kFileFormatWavFile; |
2130 } else { | 2110 } else { |
2131 format = kFileFormatCompressedFile; | 2111 format = kFileFormatCompressedFile; |
2132 } | 2112 } |
2133 | 2113 |
2134 rtc::CritScope cs(&_fileCritSect); | 2114 rtc::CritScope cs(&_fileCritSect); |
2135 | 2115 |
2136 // Destroy the old instance | 2116 // Destroy the old instance |
2137 if (_outputFileRecorderPtr) { | 2117 if (output_file_recorder_) { |
2138 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL); | 2118 output_file_recorder_->RegisterModuleFileCallback(NULL); |
2139 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr); | 2119 output_file_recorder_.reset(); |
2140 _outputFileRecorderPtr = NULL; | |
2141 } | 2120 } |
2142 | 2121 |
2143 _outputFileRecorderPtr = FileRecorder::CreateFileRecorder( | 2122 output_file_recorder_ = FileRecorder::CreateFileRecorder( |
2144 _outputFileRecorderId, (const FileFormats)format); | 2123 _outputFileRecorderId, (const FileFormats)format); |
2145 if (_outputFileRecorderPtr == NULL) { | 2124 if (!output_file_recorder_) { |
2146 _engineStatisticsPtr->SetLastError( | 2125 _engineStatisticsPtr->SetLastError( |
2147 VE_INVALID_ARGUMENT, kTraceError, | 2126 VE_INVALID_ARGUMENT, kTraceError, |
2148 "StartRecordingPlayout() fileRecorder format isnot correct"); | 2127 "StartRecordingPlayout() fileRecorder format isnot correct"); |
2149 return -1; | 2128 return -1; |
2150 } | 2129 } |
2151 | 2130 |
2152 if (_outputFileRecorderPtr->StartRecordingAudioFile( | 2131 if (output_file_recorder_->StartRecordingAudioFile( |
2153 fileName, (const CodecInst&)*codecInst, notificationTime) != 0) { | 2132 fileName, (const CodecInst&)*codecInst, notificationTime) != 0) { |
2154 _engineStatisticsPtr->SetLastError( | 2133 _engineStatisticsPtr->SetLastError( |
2155 VE_BAD_FILE, kTraceError, | 2134 VE_BAD_FILE, kTraceError, |
2156 "StartRecordingAudioFile() failed to start file recording"); | 2135 "StartRecordingAudioFile() failed to start file recording"); |
2157 _outputFileRecorderPtr->StopRecording(); | 2136 output_file_recorder_->StopRecording(); |
2158 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr); | 2137 output_file_recorder_.reset(); |
2159 _outputFileRecorderPtr = NULL; | |
2160 return -1; | 2138 return -1; |
2161 } | 2139 } |
2162 _outputFileRecorderPtr->RegisterModuleFileCallback(this); | 2140 output_file_recorder_->RegisterModuleFileCallback(this); |
2163 _outputFileRecording = true; | 2141 _outputFileRecording = true; |
2164 | 2142 |
2165 return 0; | 2143 return 0; |
2166 } | 2144 } |
2167 | 2145 |
2168 int Channel::StartRecordingPlayout(OutStream* stream, | 2146 int Channel::StartRecordingPlayout(OutStream* stream, |
2169 const CodecInst* codecInst) { | 2147 const CodecInst* codecInst) { |
2170 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), | 2148 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, _channelId), |
2171 "Channel::StartRecordingPlayout()"); | 2149 "Channel::StartRecordingPlayout()"); |
2172 | 2150 |
(...skipping 20 matching lines...) Expand all Loading... |
2193 (STR_CASE_CMP(codecInst->plname, "PCMU") == 0) || | 2171 (STR_CASE_CMP(codecInst->plname, "PCMU") == 0) || |
2194 (STR_CASE_CMP(codecInst->plname, "PCMA") == 0)) { | 2172 (STR_CASE_CMP(codecInst->plname, "PCMA") == 0)) { |
2195 format = kFileFormatWavFile; | 2173 format = kFileFormatWavFile; |
2196 } else { | 2174 } else { |
2197 format = kFileFormatCompressedFile; | 2175 format = kFileFormatCompressedFile; |
2198 } | 2176 } |
2199 | 2177 |
2200 rtc::CritScope cs(&_fileCritSect); | 2178 rtc::CritScope cs(&_fileCritSect); |
2201 | 2179 |
2202 // Destroy the old instance | 2180 // Destroy the old instance |
2203 if (_outputFileRecorderPtr) { | 2181 if (output_file_recorder_) { |
2204 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL); | 2182 output_file_recorder_->RegisterModuleFileCallback(NULL); |
2205 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr); | 2183 output_file_recorder_.reset(); |
2206 _outputFileRecorderPtr = NULL; | |
2207 } | 2184 } |
2208 | 2185 |
2209 _outputFileRecorderPtr = FileRecorder::CreateFileRecorder( | 2186 output_file_recorder_ = FileRecorder::CreateFileRecorder( |
2210 _outputFileRecorderId, (const FileFormats)format); | 2187 _outputFileRecorderId, (const FileFormats)format); |
2211 if (_outputFileRecorderPtr == NULL) { | 2188 if (!output_file_recorder_) { |
2212 _engineStatisticsPtr->SetLastError( | 2189 _engineStatisticsPtr->SetLastError( |
2213 VE_INVALID_ARGUMENT, kTraceError, | 2190 VE_INVALID_ARGUMENT, kTraceError, |
2214 "StartRecordingPlayout() fileRecorder format isnot correct"); | 2191 "StartRecordingPlayout() fileRecorder format isnot correct"); |
2215 return -1; | 2192 return -1; |
2216 } | 2193 } |
2217 | 2194 |
2218 if (_outputFileRecorderPtr->StartRecordingAudioFile(*stream, *codecInst, | 2195 if (output_file_recorder_->StartRecordingAudioFile(*stream, *codecInst, |
2219 notificationTime) != 0) { | 2196 notificationTime) != 0) { |
2220 _engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError, | 2197 _engineStatisticsPtr->SetLastError(VE_BAD_FILE, kTraceError, |
2221 "StartRecordingPlayout() failed to " | 2198 "StartRecordingPlayout() failed to " |
2222 "start file recording"); | 2199 "start file recording"); |
2223 _outputFileRecorderPtr->StopRecording(); | 2200 output_file_recorder_->StopRecording(); |
2224 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr); | 2201 output_file_recorder_.reset(); |
2225 _outputFileRecorderPtr = NULL; | |
2226 return -1; | 2202 return -1; |
2227 } | 2203 } |
2228 | 2204 |
2229 _outputFileRecorderPtr->RegisterModuleFileCallback(this); | 2205 output_file_recorder_->RegisterModuleFileCallback(this); |
2230 _outputFileRecording = true; | 2206 _outputFileRecording = true; |
2231 | 2207 |
2232 return 0; | 2208 return 0; |
2233 } | 2209 } |
2234 | 2210 |
2235 int Channel::StopRecordingPlayout() { | 2211 int Channel::StopRecordingPlayout() { |
2236 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, -1), | 2212 WEBRTC_TRACE(kTraceInfo, kTraceVoice, VoEId(_instanceId, -1), |
2237 "Channel::StopRecordingPlayout()"); | 2213 "Channel::StopRecordingPlayout()"); |
2238 | 2214 |
2239 if (!_outputFileRecording) { | 2215 if (!_outputFileRecording) { |
2240 WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId, -1), | 2216 WEBRTC_TRACE(kTraceError, kTraceVoice, VoEId(_instanceId, -1), |
2241 "StopRecordingPlayout() isnot recording"); | 2217 "StopRecordingPlayout() isnot recording"); |
2242 return -1; | 2218 return -1; |
2243 } | 2219 } |
2244 | 2220 |
2245 rtc::CritScope cs(&_fileCritSect); | 2221 rtc::CritScope cs(&_fileCritSect); |
2246 | 2222 |
2247 if (_outputFileRecorderPtr->StopRecording() != 0) { | 2223 if (output_file_recorder_->StopRecording() != 0) { |
2248 _engineStatisticsPtr->SetLastError( | 2224 _engineStatisticsPtr->SetLastError( |
2249 VE_STOP_RECORDING_FAILED, kTraceError, | 2225 VE_STOP_RECORDING_FAILED, kTraceError, |
2250 "StopRecording() could not stop recording"); | 2226 "StopRecording() could not stop recording"); |
2251 return (-1); | 2227 return (-1); |
2252 } | 2228 } |
2253 _outputFileRecorderPtr->RegisterModuleFileCallback(NULL); | 2229 output_file_recorder_->RegisterModuleFileCallback(NULL); |
2254 FileRecorder::DestroyFileRecorder(_outputFileRecorderPtr); | 2230 output_file_recorder_.reset(); |
2255 _outputFileRecorderPtr = NULL; | |
2256 _outputFileRecording = false; | 2231 _outputFileRecording = false; |
2257 | 2232 |
2258 return 0; | 2233 return 0; |
2259 } | 2234 } |
2260 | 2235 |
2261 void Channel::SetMixWithMicStatus(bool mix) { | 2236 void Channel::SetMixWithMicStatus(bool mix) { |
2262 rtc::CritScope cs(&_fileCritSect); | 2237 rtc::CritScope cs(&_fileCritSect); |
2263 _mixFileWithMicrophone = mix; | 2238 _mixFileWithMicrophone = mix; |
2264 } | 2239 } |
2265 | 2240 |
(...skipping 1029 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3295 | 3270 |
3296 // TODO(andrew): refactor Mix functions here and in transmit_mixer.cc to use | 3271 // TODO(andrew): refactor Mix functions here and in transmit_mixer.cc to use |
3297 // a shared helper. | 3272 // a shared helper. |
3298 int32_t Channel::MixOrReplaceAudioWithFile(int mixingFrequency) { | 3273 int32_t Channel::MixOrReplaceAudioWithFile(int mixingFrequency) { |
3299 std::unique_ptr<int16_t[]> fileBuffer(new int16_t[640]); | 3274 std::unique_ptr<int16_t[]> fileBuffer(new int16_t[640]); |
3300 size_t fileSamples(0); | 3275 size_t fileSamples(0); |
3301 | 3276 |
3302 { | 3277 { |
3303 rtc::CritScope cs(&_fileCritSect); | 3278 rtc::CritScope cs(&_fileCritSect); |
3304 | 3279 |
3305 if (_inputFilePlayerPtr == NULL) { | 3280 if (!input_file_player_) { |
3306 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), | 3281 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), |
3307 "Channel::MixOrReplaceAudioWithFile() fileplayer" | 3282 "Channel::MixOrReplaceAudioWithFile() fileplayer" |
3308 " doesnt exist"); | 3283 " doesnt exist"); |
3309 return -1; | 3284 return -1; |
3310 } | 3285 } |
3311 | 3286 |
3312 if (_inputFilePlayerPtr->Get10msAudioFromFile(fileBuffer.get(), fileSamples, | 3287 if (input_file_player_->Get10msAudioFromFile(fileBuffer.get(), fileSamples, |
3313 mixingFrequency) == -1) { | 3288 mixingFrequency) == -1) { |
3314 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), | 3289 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), |
3315 "Channel::MixOrReplaceAudioWithFile() file mixing " | 3290 "Channel::MixOrReplaceAudioWithFile() file mixing " |
3316 "failed"); | 3291 "failed"); |
3317 return -1; | 3292 return -1; |
3318 } | 3293 } |
3319 if (fileSamples == 0) { | 3294 if (fileSamples == 0) { |
3320 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), | 3295 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), |
3321 "Channel::MixOrReplaceAudioWithFile() file is ended"); | 3296 "Channel::MixOrReplaceAudioWithFile() file is ended"); |
3322 return 0; | 3297 return 0; |
3323 } | 3298 } |
(...skipping 19 matching lines...) Expand all Loading... |
3343 | 3318 |
3344 int32_t Channel::MixAudioWithFile(AudioFrame& audioFrame, int mixingFrequency) { | 3319 int32_t Channel::MixAudioWithFile(AudioFrame& audioFrame, int mixingFrequency) { |
3345 assert(mixingFrequency <= 48000); | 3320 assert(mixingFrequency <= 48000); |
3346 | 3321 |
3347 std::unique_ptr<int16_t[]> fileBuffer(new int16_t[960]); | 3322 std::unique_ptr<int16_t[]> fileBuffer(new int16_t[960]); |
3348 size_t fileSamples(0); | 3323 size_t fileSamples(0); |
3349 | 3324 |
3350 { | 3325 { |
3351 rtc::CritScope cs(&_fileCritSect); | 3326 rtc::CritScope cs(&_fileCritSect); |
3352 | 3327 |
3353 if (_outputFilePlayerPtr == NULL) { | 3328 if (!output_file_player_) { |
3354 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), | 3329 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), |
3355 "Channel::MixAudioWithFile() file mixing failed"); | 3330 "Channel::MixAudioWithFile() file mixing failed"); |
3356 return -1; | 3331 return -1; |
3357 } | 3332 } |
3358 | 3333 |
3359 // We should get the frequency we ask for. | 3334 // We should get the frequency we ask for. |
3360 if (_outputFilePlayerPtr->Get10msAudioFromFile( | 3335 if (output_file_player_->Get10msAudioFromFile(fileBuffer.get(), fileSamples, |
3361 fileBuffer.get(), fileSamples, mixingFrequency) == -1) { | 3336 mixingFrequency) == -1) { |
3362 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), | 3337 WEBRTC_TRACE(kTraceWarning, kTraceVoice, VoEId(_instanceId, _channelId), |
3363 "Channel::MixAudioWithFile() file mixing failed"); | 3338 "Channel::MixAudioWithFile() file mixing failed"); |
3364 return -1; | 3339 return -1; |
3365 } | 3340 } |
3366 } | 3341 } |
3367 | 3342 |
3368 if (audioFrame.samples_per_channel_ == fileSamples) { | 3343 if (audioFrame.samples_per_channel_ == fileSamples) { |
3369 // Currently file stream is always mono. | 3344 // Currently file stream is always mono. |
3370 // TODO(xians): Change the code when FilePlayer supports real stereo. | 3345 // TODO(xians): Change the code when FilePlayer supports real stereo. |
3371 MixWithSat(audioFrame.data_, audioFrame.num_channels_, fileBuffer.get(), 1, | 3346 MixWithSat(audioFrame.data_, audioFrame.num_channels_, fileBuffer.get(), 1, |
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3591 int64_t min_rtt = 0; | 3566 int64_t min_rtt = 0; |
3592 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) != | 3567 if (_rtpRtcpModule->RTT(remoteSSRC, &rtt, &avg_rtt, &min_rtt, &max_rtt) != |
3593 0) { | 3568 0) { |
3594 return 0; | 3569 return 0; |
3595 } | 3570 } |
3596 return rtt; | 3571 return rtt; |
3597 } | 3572 } |
3598 | 3573 |
3599 } // namespace voe | 3574 } // namespace voe |
3600 } // namespace webrtc | 3575 } // namespace webrtc |
OLD | NEW |