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 609 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
620 capture_.capture_audio->CopyTo(formats_.api_format.output_stream(), dest); | 620 capture_.capture_audio->CopyTo(formats_.api_format.output_stream(), dest); |
621 | 621 |
622 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 622 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
623 if (debug_dump_.debug_file->Open()) { | 623 if (debug_dump_.debug_file->Open()) { |
624 audioproc::Stream* msg = debug_dump_.capture.event_msg->mutable_stream(); | 624 audioproc::Stream* msg = debug_dump_.capture.event_msg->mutable_stream(); |
625 const size_t channel_size = | 625 const size_t channel_size = |
626 sizeof(float) * formats_.api_format.output_stream().num_frames(); | 626 sizeof(float) * formats_.api_format.output_stream().num_frames(); |
627 for (int i = 0; i < formats_.api_format.output_stream().num_channels(); ++i) | 627 for (int i = 0; i < formats_.api_format.output_stream().num_channels(); ++i) |
628 msg->add_output_channel(dest[i], channel_size); | 628 msg->add_output_channel(dest[i], channel_size); |
629 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 629 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
630 &debug_dump_.num_bytes_left_for_log_, | |
631 &crit_debug_, &debug_dump_.capture)); | 630 &crit_debug_, &debug_dump_.capture)); |
632 } | 631 } |
633 #endif | 632 #endif |
634 | 633 |
635 return kNoError; | 634 return kNoError; |
636 } | 635 } |
637 | 636 |
638 int AudioProcessingImpl::ProcessStream(AudioFrame* frame) { | 637 int AudioProcessingImpl::ProcessStream(AudioFrame* frame) { |
639 { | 638 { |
640 // Acquire the capture lock in order to safely call the function | 639 // Acquire the capture lock in order to safely call the function |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
707 capture_.capture_audio->InterleaveTo(frame, | 706 capture_.capture_audio->InterleaveTo(frame, |
708 output_copy_needed(is_data_processed())); | 707 output_copy_needed(is_data_processed())); |
709 | 708 |
710 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 709 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
711 if (debug_dump_.debug_file->Open()) { | 710 if (debug_dump_.debug_file->Open()) { |
712 audioproc::Stream* msg = debug_dump_.capture.event_msg->mutable_stream(); | 711 audioproc::Stream* msg = debug_dump_.capture.event_msg->mutable_stream(); |
713 const size_t data_size = | 712 const size_t data_size = |
714 sizeof(int16_t) * frame->samples_per_channel_ * frame->num_channels_; | 713 sizeof(int16_t) * frame->samples_per_channel_ * frame->num_channels_; |
715 msg->set_output_data(frame->data_, data_size); | 714 msg->set_output_data(frame->data_, data_size); |
716 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 715 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
717 &debug_dump_.num_bytes_left_for_log_, | |
718 &crit_debug_, &debug_dump_.capture)); | 716 &crit_debug_, &debug_dump_.capture)); |
719 } | 717 } |
720 #endif | 718 #endif |
721 | 719 |
722 return kNoError; | 720 return kNoError; |
723 } | 721 } |
724 | 722 |
725 int AudioProcessingImpl::ProcessStreamLocked() { | 723 int AudioProcessingImpl::ProcessStreamLocked() { |
726 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 724 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
727 if (debug_dump_.debug_file->Open()) { | 725 if (debug_dump_.debug_file->Open()) { |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
873 if (debug_dump_.debug_file->Open()) { | 871 if (debug_dump_.debug_file->Open()) { |
874 debug_dump_.render.event_msg->set_type(audioproc::Event::REVERSE_STREAM); | 872 debug_dump_.render.event_msg->set_type(audioproc::Event::REVERSE_STREAM); |
875 audioproc::ReverseStream* msg = | 873 audioproc::ReverseStream* msg = |
876 debug_dump_.render.event_msg->mutable_reverse_stream(); | 874 debug_dump_.render.event_msg->mutable_reverse_stream(); |
877 const size_t channel_size = | 875 const size_t channel_size = |
878 sizeof(float) * formats_.api_format.reverse_input_stream().num_frames(); | 876 sizeof(float) * formats_.api_format.reverse_input_stream().num_frames(); |
879 for (int i = 0; | 877 for (int i = 0; |
880 i < formats_.api_format.reverse_input_stream().num_channels(); ++i) | 878 i < formats_.api_format.reverse_input_stream().num_channels(); ++i) |
881 msg->add_channel(src[i], channel_size); | 879 msg->add_channel(src[i], channel_size); |
882 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 880 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
883 &debug_dump_.num_bytes_left_for_log_, | |
884 &crit_debug_, &debug_dump_.render)); | 881 &crit_debug_, &debug_dump_.render)); |
885 } | 882 } |
886 #endif | 883 #endif |
887 | 884 |
888 render_.render_audio->CopyFrom(src, | 885 render_.render_audio->CopyFrom(src, |
889 formats_.api_format.reverse_input_stream()); | 886 formats_.api_format.reverse_input_stream()); |
890 return ProcessReverseStreamLocked(); | 887 return ProcessReverseStreamLocked(); |
891 } | 888 } |
892 | 889 |
893 int AudioProcessingImpl::ProcessReverseStream(AudioFrame* frame) { | 890 int AudioProcessingImpl::ProcessReverseStream(AudioFrame* frame) { |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
940 | 937 |
941 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 938 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
942 if (debug_dump_.debug_file->Open()) { | 939 if (debug_dump_.debug_file->Open()) { |
943 debug_dump_.render.event_msg->set_type(audioproc::Event::REVERSE_STREAM); | 940 debug_dump_.render.event_msg->set_type(audioproc::Event::REVERSE_STREAM); |
944 audioproc::ReverseStream* msg = | 941 audioproc::ReverseStream* msg = |
945 debug_dump_.render.event_msg->mutable_reverse_stream(); | 942 debug_dump_.render.event_msg->mutable_reverse_stream(); |
946 const size_t data_size = | 943 const size_t data_size = |
947 sizeof(int16_t) * frame->samples_per_channel_ * frame->num_channels_; | 944 sizeof(int16_t) * frame->samples_per_channel_ * frame->num_channels_; |
948 msg->set_data(frame->data_, data_size); | 945 msg->set_data(frame->data_, data_size); |
949 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 946 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
950 &debug_dump_.num_bytes_left_for_log_, | |
951 &crit_debug_, &debug_dump_.render)); | 947 &crit_debug_, &debug_dump_.render)); |
952 } | 948 } |
953 #endif | 949 #endif |
954 render_.render_audio->DeinterleaveFrom(frame); | 950 render_.render_audio->DeinterleaveFrom(frame); |
955 return ProcessReverseStreamLocked(); | 951 return ProcessReverseStreamLocked(); |
956 } | 952 } |
957 | 953 |
958 int AudioProcessingImpl::ProcessReverseStreamLocked() { | 954 int AudioProcessingImpl::ProcessReverseStreamLocked() { |
959 AudioBuffer* ra = render_.render_audio.get(); // For brevity. | 955 AudioBuffer* ra = render_.render_audio.get(); // For brevity. |
960 if (formats_.rev_proc_format.sample_rate_hz() == kSampleRate32kHz) { | 956 if (formats_.rev_proc_format.sample_rate_hz() == kSampleRate32kHz) { |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1026 rtc::CritScope cs(&crit_capture_); | 1022 rtc::CritScope cs(&crit_capture_); |
1027 capture_.delay_offset_ms = offset; | 1023 capture_.delay_offset_ms = offset; |
1028 } | 1024 } |
1029 | 1025 |
1030 int AudioProcessingImpl::delay_offset_ms() const { | 1026 int AudioProcessingImpl::delay_offset_ms() const { |
1031 rtc::CritScope cs(&crit_capture_); | 1027 rtc::CritScope cs(&crit_capture_); |
1032 return capture_.delay_offset_ms; | 1028 return capture_.delay_offset_ms; |
1033 } | 1029 } |
1034 | 1030 |
1035 int AudioProcessingImpl::StartDebugRecording( | 1031 int AudioProcessingImpl::StartDebugRecording( |
1036 const char filename[AudioProcessing::kMaxFilenameSize], | 1032 const char filename[AudioProcessing::kMaxFilenameSize]) { |
1037 int64_t max_log_size_bytes) { | |
1038 // Run in a single-threaded manner. | 1033 // Run in a single-threaded manner. |
1039 rtc::CritScope cs_render(&crit_render_); | 1034 rtc::CritScope cs_render(&crit_render_); |
1040 rtc::CritScope cs_capture(&crit_capture_); | 1035 rtc::CritScope cs_capture(&crit_capture_); |
1041 static_assert(kMaxFilenameSize == FileWrapper::kMaxFileNameSize, ""); | 1036 static_assert(kMaxFilenameSize == FileWrapper::kMaxFileNameSize, ""); |
1042 | 1037 |
1043 if (filename == nullptr) { | 1038 if (filename == nullptr) { |
1044 return kNullPointerError; | 1039 return kNullPointerError; |
1045 } | 1040 } |
1046 | 1041 |
1047 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 1042 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
1048 debug_dump_.num_bytes_left_for_log_ = max_log_size_bytes; | |
1049 // Stop any ongoing recording. | 1043 // Stop any ongoing recording. |
1050 if (debug_dump_.debug_file->Open()) { | 1044 if (debug_dump_.debug_file->Open()) { |
1051 if (debug_dump_.debug_file->CloseFile() == -1) { | 1045 if (debug_dump_.debug_file->CloseFile() == -1) { |
1052 return kFileError; | 1046 return kFileError; |
1053 } | 1047 } |
1054 } | 1048 } |
1055 | 1049 |
1056 if (debug_dump_.debug_file->OpenFile(filename, false) == -1) { | 1050 if (debug_dump_.debug_file->OpenFile(filename, false) == -1) { |
1057 debug_dump_.debug_file->CloseFile(); | 1051 debug_dump_.debug_file->CloseFile(); |
1058 return kFileError; | 1052 return kFileError; |
1059 } | 1053 } |
1060 | 1054 |
1061 RETURN_ON_ERR(WriteConfigMessage(true)); | 1055 RETURN_ON_ERR(WriteConfigMessage(true)); |
1062 RETURN_ON_ERR(WriteInitMessage()); | 1056 RETURN_ON_ERR(WriteInitMessage()); |
1063 return kNoError; | 1057 return kNoError; |
1064 #else | 1058 #else |
1065 return kUnsupportedFunctionError; | 1059 return kUnsupportedFunctionError; |
1066 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP | 1060 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP |
1067 } | 1061 } |
1068 | 1062 |
1069 int AudioProcessingImpl::StartDebugRecording(FILE* handle, | 1063 int AudioProcessingImpl::StartDebugRecording(FILE* handle) { |
1070 int64_t max_log_size_bytes) { | |
1071 // Run in a single-threaded manner. | 1064 // Run in a single-threaded manner. |
1072 rtc::CritScope cs_render(&crit_render_); | 1065 rtc::CritScope cs_render(&crit_render_); |
1073 rtc::CritScope cs_capture(&crit_capture_); | 1066 rtc::CritScope cs_capture(&crit_capture_); |
1074 | 1067 |
1075 if (handle == nullptr) { | 1068 if (handle == nullptr) { |
1076 return kNullPointerError; | 1069 return kNullPointerError; |
1077 } | 1070 } |
1078 | 1071 |
1079 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 1072 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
1080 debug_dump_.num_bytes_left_for_log_ = max_log_size_bytes; | |
1081 | |
1082 // Stop any ongoing recording. | 1073 // Stop any ongoing recording. |
1083 if (debug_dump_.debug_file->Open()) { | 1074 if (debug_dump_.debug_file->Open()) { |
1084 if (debug_dump_.debug_file->CloseFile() == -1) { | 1075 if (debug_dump_.debug_file->CloseFile() == -1) { |
1085 return kFileError; | 1076 return kFileError; |
1086 } | 1077 } |
1087 } | 1078 } |
1088 | 1079 |
1089 if (debug_dump_.debug_file->OpenFromFileHandle(handle, true, false) == -1) { | 1080 if (debug_dump_.debug_file->OpenFromFileHandle(handle, true, false) == -1) { |
1090 return kFileError; | 1081 return kFileError; |
1091 } | 1082 } |
1092 | 1083 |
1093 RETURN_ON_ERR(WriteConfigMessage(true)); | 1084 RETURN_ON_ERR(WriteConfigMessage(true)); |
1094 RETURN_ON_ERR(WriteInitMessage()); | 1085 RETURN_ON_ERR(WriteInitMessage()); |
1095 return kNoError; | 1086 return kNoError; |
1096 #else | 1087 #else |
1097 return kUnsupportedFunctionError; | 1088 return kUnsupportedFunctionError; |
1098 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP | 1089 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP |
1099 } | 1090 } |
1100 | 1091 |
1101 int AudioProcessingImpl::StartDebugRecordingForPlatformFile( | 1092 int AudioProcessingImpl::StartDebugRecordingForPlatformFile( |
1102 rtc::PlatformFile handle) { | 1093 rtc::PlatformFile handle) { |
1103 // Run in a single-threaded manner. | 1094 // Run in a single-threaded manner. |
1104 rtc::CritScope cs_render(&crit_render_); | 1095 rtc::CritScope cs_render(&crit_render_); |
1105 rtc::CritScope cs_capture(&crit_capture_); | 1096 rtc::CritScope cs_capture(&crit_capture_); |
1106 FILE* stream = rtc::FdopenPlatformFileForWriting(handle); | 1097 FILE* stream = rtc::FdopenPlatformFileForWriting(handle); |
1107 return StartDebugRecording(stream, -1); | 1098 return StartDebugRecording(stream); |
1108 } | 1099 } |
1109 | 1100 |
1110 int AudioProcessingImpl::StopDebugRecording() { | 1101 int AudioProcessingImpl::StopDebugRecording() { |
1111 // Run in a single-threaded manner. | 1102 // Run in a single-threaded manner. |
1112 rtc::CritScope cs_render(&crit_render_); | 1103 rtc::CritScope cs_render(&crit_render_); |
1113 rtc::CritScope cs_capture(&crit_capture_); | 1104 rtc::CritScope cs_capture(&crit_capture_); |
1114 | 1105 |
1115 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 1106 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
1116 // We just return if recording hasn't started. | 1107 // We just return if recording hasn't started. |
1117 if (debug_dump_.debug_file->Open()) { | 1108 if (debug_dump_.debug_file->Open()) { |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1378 RTC_HISTOGRAM_ENUMERATION("WebRTC.Audio.NumOfAecSystemDelayJumps", | 1369 RTC_HISTOGRAM_ENUMERATION("WebRTC.Audio.NumOfAecSystemDelayJumps", |
1379 capture_.aec_system_delay_jumps, 51); | 1370 capture_.aec_system_delay_jumps, 51); |
1380 } | 1371 } |
1381 capture_.aec_system_delay_jumps = -1; | 1372 capture_.aec_system_delay_jumps = -1; |
1382 capture_.last_aec_system_delay_ms = 0; | 1373 capture_.last_aec_system_delay_ms = 0; |
1383 } | 1374 } |
1384 | 1375 |
1385 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 1376 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
1386 int AudioProcessingImpl::WriteMessageToDebugFile( | 1377 int AudioProcessingImpl::WriteMessageToDebugFile( |
1387 FileWrapper* debug_file, | 1378 FileWrapper* debug_file, |
1388 int64_t* filesize_limit_bytes, | |
1389 rtc::CriticalSection* crit_debug, | 1379 rtc::CriticalSection* crit_debug, |
1390 ApmDebugDumpThreadState* debug_state) { | 1380 ApmDebugDumpThreadState* debug_state) { |
1391 int32_t size = debug_state->event_msg->ByteSize(); | 1381 int32_t size = debug_state->event_msg->ByteSize(); |
1392 if (size <= 0) { | 1382 if (size <= 0) { |
1393 return kUnspecifiedError; | 1383 return kUnspecifiedError; |
1394 } | 1384 } |
1395 #if defined(WEBRTC_ARCH_BIG_ENDIAN) | 1385 #if defined(WEBRTC_ARCH_BIG_ENDIAN) |
1396 // TODO(ajm): Use little-endian "on the wire". For the moment, we can be | 1386 // TODO(ajm): Use little-endian "on the wire". For the moment, we can be |
1397 // pretty safe in assuming little-endian. | 1387 // pretty safe in assuming little-endian. |
1398 #endif | 1388 #endif |
1399 | 1389 |
1400 if (!debug_state->event_msg->SerializeToString(&debug_state->event_str)) { | 1390 if (!debug_state->event_msg->SerializeToString(&debug_state->event_str)) { |
1401 return kUnspecifiedError; | 1391 return kUnspecifiedError; |
1402 } | 1392 } |
1403 | 1393 |
1404 { | 1394 { |
1405 // Ensure atomic writes of the message. | 1395 // Ensure atomic writes of the message. |
1406 rtc::CritScope cs_debug(crit_debug); | 1396 rtc::CritScope cs_capture(crit_debug); |
1407 | |
1408 RTC_DCHECK(debug_file->Open()); | |
1409 // Update the byte counter. | |
1410 if (*filesize_limit_bytes >= 0) { | |
1411 *filesize_limit_bytes -= | |
1412 (sizeof(int32_t) + debug_state->event_str.length()); | |
1413 if (*filesize_limit_bytes < 0) { | |
1414 // Not enough bytes are left to write this message, so stop logging. | |
1415 debug_file->CloseFile(); | |
1416 return kNoError; | |
1417 } | |
1418 } | |
1419 // Write message preceded by its size. | 1397 // Write message preceded by its size. |
1420 if (!debug_file->Write(&size, sizeof(int32_t))) { | 1398 if (!debug_file->Write(&size, sizeof(int32_t))) { |
1421 return kFileError; | 1399 return kFileError; |
1422 } | 1400 } |
1423 if (!debug_file->Write(debug_state->event_str.data(), | 1401 if (!debug_file->Write(debug_state->event_str.data(), |
1424 debug_state->event_str.length())) { | 1402 debug_state->event_str.length())) { |
1425 return kFileError; | 1403 return kFileError; |
1426 } | 1404 } |
1427 } | 1405 } |
1428 | 1406 |
(...skipping 14 matching lines...) Expand all Loading... |
1443 msg->set_num_reverse_channels( | 1421 msg->set_num_reverse_channels( |
1444 formats_.api_format.reverse_input_stream().num_channels()); | 1422 formats_.api_format.reverse_input_stream().num_channels()); |
1445 msg->set_reverse_sample_rate( | 1423 msg->set_reverse_sample_rate( |
1446 formats_.api_format.reverse_input_stream().sample_rate_hz()); | 1424 formats_.api_format.reverse_input_stream().sample_rate_hz()); |
1447 msg->set_output_sample_rate( | 1425 msg->set_output_sample_rate( |
1448 formats_.api_format.output_stream().sample_rate_hz()); | 1426 formats_.api_format.output_stream().sample_rate_hz()); |
1449 // TODO(ekmeyerson): Add reverse output fields to | 1427 // TODO(ekmeyerson): Add reverse output fields to |
1450 // debug_dump_.capture.event_msg. | 1428 // debug_dump_.capture.event_msg. |
1451 | 1429 |
1452 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 1430 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
1453 &debug_dump_.num_bytes_left_for_log_, | |
1454 &crit_debug_, &debug_dump_.capture)); | 1431 &crit_debug_, &debug_dump_.capture)); |
1455 return kNoError; | 1432 return kNoError; |
1456 } | 1433 } |
1457 | 1434 |
1458 int AudioProcessingImpl::WriteConfigMessage(bool forced) { | 1435 int AudioProcessingImpl::WriteConfigMessage(bool forced) { |
1459 audioproc::Config config; | 1436 audioproc::Config config; |
1460 | 1437 |
1461 config.set_aec_enabled(public_submodules_->echo_cancellation->is_enabled()); | 1438 config.set_aec_enabled(public_submodules_->echo_cancellation->is_enabled()); |
1462 config.set_aec_delay_agnostic_enabled( | 1439 config.set_aec_delay_agnostic_enabled( |
1463 public_submodules_->echo_cancellation->is_delay_agnostic_enabled()); | 1440 public_submodules_->echo_cancellation->is_delay_agnostic_enabled()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1496 debug_dump_.capture.last_serialized_config == serialized_config) { | 1473 debug_dump_.capture.last_serialized_config == serialized_config) { |
1497 return kNoError; | 1474 return kNoError; |
1498 } | 1475 } |
1499 | 1476 |
1500 debug_dump_.capture.last_serialized_config = serialized_config; | 1477 debug_dump_.capture.last_serialized_config = serialized_config; |
1501 | 1478 |
1502 debug_dump_.capture.event_msg->set_type(audioproc::Event::CONFIG); | 1479 debug_dump_.capture.event_msg->set_type(audioproc::Event::CONFIG); |
1503 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config); | 1480 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config); |
1504 | 1481 |
1505 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 1482 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
1506 &debug_dump_.num_bytes_left_for_log_, | |
1507 &crit_debug_, &debug_dump_.capture)); | 1483 &crit_debug_, &debug_dump_.capture)); |
1508 return kNoError; | 1484 return kNoError; |
1509 } | 1485 } |
1510 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP | 1486 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP |
1511 | 1487 |
1512 } // namespace webrtc | 1488 } // namespace webrtc |
OLD | NEW |