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 816 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
827 } | 827 } |
828 #endif | 828 #endif |
829 | 829 |
830 render_.render_audio->CopyFrom(src, | 830 render_.render_audio->CopyFrom(src, |
831 formats_.api_format.reverse_input_stream()); | 831 formats_.api_format.reverse_input_stream()); |
832 return ProcessReverseStreamLocked(); | 832 return ProcessReverseStreamLocked(); |
833 } | 833 } |
834 | 834 |
835 int AudioProcessingImpl::ProcessReverseStream(AudioFrame* frame) { | 835 int AudioProcessingImpl::ProcessReverseStream(AudioFrame* frame) { |
836 TRACE_EVENT0("webrtc", "AudioProcessing::ProcessReverseStream_AudioFrame"); | 836 TRACE_EVENT0("webrtc", "AudioProcessing::ProcessReverseStream_AudioFrame"); |
837 RETURN_ON_ERR(AnalyzeReverseStream(frame)); | |
838 rtc::CritScope cs(&crit_render_); | |
839 if (is_rev_processed()) { | |
840 render_.render_audio->InterleaveTo(frame, true); | |
841 } | |
842 | |
843 return kNoError; | |
844 } | |
845 | |
846 int AudioProcessingImpl::AnalyzeReverseStream(AudioFrame* frame) { | |
847 TRACE_EVENT0("webrtc", "AudioProcessing::AnalyzeReverseStream_AudioFrame"); | |
848 rtc::CritScope cs(&crit_render_); | 837 rtc::CritScope cs(&crit_render_); |
849 if (frame == nullptr) { | 838 if (frame == nullptr) { |
850 return kNullPointerError; | 839 return kNullPointerError; |
851 } | 840 } |
852 // Must be a native rate. | 841 // Must be a native rate. |
853 if (frame->sample_rate_hz_ != kSampleRate8kHz && | 842 if (frame->sample_rate_hz_ != kSampleRate8kHz && |
854 frame->sample_rate_hz_ != kSampleRate16kHz && | 843 frame->sample_rate_hz_ != kSampleRate16kHz && |
855 frame->sample_rate_hz_ != kSampleRate32kHz && | 844 frame->sample_rate_hz_ != kSampleRate32kHz && |
856 frame->sample_rate_hz_ != kSampleRate48kHz) { | 845 frame->sample_rate_hz_ != kSampleRate48kHz) { |
857 return kBadSampleRateError; | 846 return kBadSampleRateError; |
(...skipping 26 matching lines...) Expand all Loading... |
884 debug_dump_.render.event_msg->mutable_reverse_stream(); | 873 debug_dump_.render.event_msg->mutable_reverse_stream(); |
885 const size_t data_size = | 874 const size_t data_size = |
886 sizeof(int16_t) * frame->samples_per_channel_ * frame->num_channels_; | 875 sizeof(int16_t) * frame->samples_per_channel_ * frame->num_channels_; |
887 msg->set_data(frame->data_, data_size); | 876 msg->set_data(frame->data_, data_size); |
888 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 877 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
889 &debug_dump_.num_bytes_left_for_log_, | 878 &debug_dump_.num_bytes_left_for_log_, |
890 &crit_debug_, &debug_dump_.render)); | 879 &crit_debug_, &debug_dump_.render)); |
891 } | 880 } |
892 #endif | 881 #endif |
893 render_.render_audio->DeinterleaveFrom(frame); | 882 render_.render_audio->DeinterleaveFrom(frame); |
894 return ProcessReverseStreamLocked(); | 883 RETURN_ON_ERR(ProcessReverseStreamLocked()); |
| 884 if (is_rev_processed()) { |
| 885 render_.render_audio->InterleaveTo(frame, true); |
| 886 } |
| 887 return kNoError; |
895 } | 888 } |
896 | 889 |
897 int AudioProcessingImpl::ProcessReverseStreamLocked() { | 890 int AudioProcessingImpl::ProcessReverseStreamLocked() { |
898 AudioBuffer* ra = render_.render_audio.get(); // For brevity. | 891 AudioBuffer* ra = render_.render_audio.get(); // For brevity. |
899 if (rev_analysis_needed()) { | 892 if (rev_analysis_needed()) { |
900 ra->SplitIntoFrequencyBands(); | 893 ra->SplitIntoFrequencyBands(); |
901 } | 894 } |
902 | 895 |
903 if (constants_.intelligibility_enabled) { | 896 if (constants_.intelligibility_enabled) { |
904 public_submodules_->intelligibility_enhancer->ProcessRenderAudio( | 897 public_submodules_->intelligibility_enhancer->ProcessRenderAudio( |
(...skipping 531 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1436 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config); | 1429 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config); |
1437 | 1430 |
1438 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 1431 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
1439 &debug_dump_.num_bytes_left_for_log_, | 1432 &debug_dump_.num_bytes_left_for_log_, |
1440 &crit_debug_, &debug_dump_.capture)); | 1433 &crit_debug_, &debug_dump_.capture)); |
1441 return kNoError; | 1434 return kNoError; |
1442 } | 1435 } |
1443 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP | 1436 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP |
1444 | 1437 |
1445 } // namespace webrtc | 1438 } // namespace webrtc |
OLD | NEW |