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 614 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
625 capture_.capture_audio->CopyTo(formats_.api_format.output_stream(), dest); | 625 capture_.capture_audio->CopyTo(formats_.api_format.output_stream(), dest); |
626 | 626 |
627 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 627 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
628 if (debug_dump_.debug_file->Open()) { | 628 if (debug_dump_.debug_file->Open()) { |
629 audioproc::Stream* msg = debug_dump_.capture.event_msg->mutable_stream(); | 629 audioproc::Stream* msg = debug_dump_.capture.event_msg->mutable_stream(); |
630 const size_t channel_size = | 630 const size_t channel_size = |
631 sizeof(float) * formats_.api_format.output_stream().num_frames(); | 631 sizeof(float) * formats_.api_format.output_stream().num_frames(); |
632 for (int i = 0; i < formats_.api_format.output_stream().num_channels(); ++i) | 632 for (int i = 0; i < formats_.api_format.output_stream().num_channels(); ++i) |
633 msg->add_output_channel(dest[i], channel_size); | 633 msg->add_output_channel(dest[i], channel_size); |
634 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 634 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
635 &debug_dump_.num_bytes_left_for_log_, | |
636 &crit_debug_, &debug_dump_.capture)); | 635 &crit_debug_, &debug_dump_.capture)); |
637 } | 636 } |
638 #endif | 637 #endif |
639 | 638 |
640 return kNoError; | 639 return kNoError; |
641 } | 640 } |
642 | 641 |
643 int AudioProcessingImpl::ProcessStream(AudioFrame* frame) { | 642 int AudioProcessingImpl::ProcessStream(AudioFrame* frame) { |
644 TRACE_EVENT0("webrtc", "AudioProcessing::ProcessStream_AudioFrame"); | 643 TRACE_EVENT0("webrtc", "AudioProcessing::ProcessStream_AudioFrame"); |
645 { | 644 { |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
713 capture_.capture_audio->InterleaveTo(frame, | 712 capture_.capture_audio->InterleaveTo(frame, |
714 output_copy_needed(is_data_processed())); | 713 output_copy_needed(is_data_processed())); |
715 | 714 |
716 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 715 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
717 if (debug_dump_.debug_file->Open()) { | 716 if (debug_dump_.debug_file->Open()) { |
718 audioproc::Stream* msg = debug_dump_.capture.event_msg->mutable_stream(); | 717 audioproc::Stream* msg = debug_dump_.capture.event_msg->mutable_stream(); |
719 const size_t data_size = | 718 const size_t data_size = |
720 sizeof(int16_t) * frame->samples_per_channel_ * frame->num_channels_; | 719 sizeof(int16_t) * frame->samples_per_channel_ * frame->num_channels_; |
721 msg->set_output_data(frame->data_, data_size); | 720 msg->set_output_data(frame->data_, data_size); |
722 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 721 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
723 &debug_dump_.num_bytes_left_for_log_, | |
724 &crit_debug_, &debug_dump_.capture)); | 722 &crit_debug_, &debug_dump_.capture)); |
725 } | 723 } |
726 #endif | 724 #endif |
727 | 725 |
728 return kNoError; | 726 return kNoError; |
729 } | 727 } |
730 | 728 |
731 int AudioProcessingImpl::ProcessStreamLocked() { | 729 int AudioProcessingImpl::ProcessStreamLocked() { |
732 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 730 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
733 if (debug_dump_.debug_file->Open()) { | 731 if (debug_dump_.debug_file->Open()) { |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 if (debug_dump_.debug_file->Open()) { | 879 if (debug_dump_.debug_file->Open()) { |
882 debug_dump_.render.event_msg->set_type(audioproc::Event::REVERSE_STREAM); | 880 debug_dump_.render.event_msg->set_type(audioproc::Event::REVERSE_STREAM); |
883 audioproc::ReverseStream* msg = | 881 audioproc::ReverseStream* msg = |
884 debug_dump_.render.event_msg->mutable_reverse_stream(); | 882 debug_dump_.render.event_msg->mutable_reverse_stream(); |
885 const size_t channel_size = | 883 const size_t channel_size = |
886 sizeof(float) * formats_.api_format.reverse_input_stream().num_frames(); | 884 sizeof(float) * formats_.api_format.reverse_input_stream().num_frames(); |
887 for (int i = 0; | 885 for (int i = 0; |
888 i < formats_.api_format.reverse_input_stream().num_channels(); ++i) | 886 i < formats_.api_format.reverse_input_stream().num_channels(); ++i) |
889 msg->add_channel(src[i], channel_size); | 887 msg->add_channel(src[i], channel_size); |
890 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 888 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
891 &debug_dump_.num_bytes_left_for_log_, | |
892 &crit_debug_, &debug_dump_.render)); | 889 &crit_debug_, &debug_dump_.render)); |
893 } | 890 } |
894 #endif | 891 #endif |
895 | 892 |
896 render_.render_audio->CopyFrom(src, | 893 render_.render_audio->CopyFrom(src, |
897 formats_.api_format.reverse_input_stream()); | 894 formats_.api_format.reverse_input_stream()); |
898 return ProcessReverseStreamLocked(); | 895 return ProcessReverseStreamLocked(); |
899 } | 896 } |
900 | 897 |
901 int AudioProcessingImpl::ProcessReverseStream(AudioFrame* frame) { | 898 int AudioProcessingImpl::ProcessReverseStream(AudioFrame* frame) { |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
950 | 947 |
951 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 948 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
952 if (debug_dump_.debug_file->Open()) { | 949 if (debug_dump_.debug_file->Open()) { |
953 debug_dump_.render.event_msg->set_type(audioproc::Event::REVERSE_STREAM); | 950 debug_dump_.render.event_msg->set_type(audioproc::Event::REVERSE_STREAM); |
954 audioproc::ReverseStream* msg = | 951 audioproc::ReverseStream* msg = |
955 debug_dump_.render.event_msg->mutable_reverse_stream(); | 952 debug_dump_.render.event_msg->mutable_reverse_stream(); |
956 const size_t data_size = | 953 const size_t data_size = |
957 sizeof(int16_t) * frame->samples_per_channel_ * frame->num_channels_; | 954 sizeof(int16_t) * frame->samples_per_channel_ * frame->num_channels_; |
958 msg->set_data(frame->data_, data_size); | 955 msg->set_data(frame->data_, data_size); |
959 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 956 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
960 &debug_dump_.num_bytes_left_for_log_, | |
961 &crit_debug_, &debug_dump_.render)); | 957 &crit_debug_, &debug_dump_.render)); |
962 } | 958 } |
963 #endif | 959 #endif |
964 render_.render_audio->DeinterleaveFrom(frame); | 960 render_.render_audio->DeinterleaveFrom(frame); |
965 return ProcessReverseStreamLocked(); | 961 return ProcessReverseStreamLocked(); |
966 } | 962 } |
967 | 963 |
968 int AudioProcessingImpl::ProcessReverseStreamLocked() { | 964 int AudioProcessingImpl::ProcessReverseStreamLocked() { |
969 AudioBuffer* ra = render_.render_audio.get(); // For brevity. | 965 AudioBuffer* ra = render_.render_audio.get(); // For brevity. |
970 if (formats_.rev_proc_format.sample_rate_hz() == kSampleRate32kHz) { | 966 if (formats_.rev_proc_format.sample_rate_hz() == kSampleRate32kHz) { |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1036 rtc::CritScope cs(&crit_capture_); | 1032 rtc::CritScope cs(&crit_capture_); |
1037 capture_.delay_offset_ms = offset; | 1033 capture_.delay_offset_ms = offset; |
1038 } | 1034 } |
1039 | 1035 |
1040 int AudioProcessingImpl::delay_offset_ms() const { | 1036 int AudioProcessingImpl::delay_offset_ms() const { |
1041 rtc::CritScope cs(&crit_capture_); | 1037 rtc::CritScope cs(&crit_capture_); |
1042 return capture_.delay_offset_ms; | 1038 return capture_.delay_offset_ms; |
1043 } | 1039 } |
1044 | 1040 |
1045 int AudioProcessingImpl::StartDebugRecording( | 1041 int AudioProcessingImpl::StartDebugRecording( |
1046 const char filename[AudioProcessing::kMaxFilenameSize], | 1042 const char filename[AudioProcessing::kMaxFilenameSize]) { |
1047 int64_t max_log_size_bytes) { | |
1048 // Run in a single-threaded manner. | 1043 // Run in a single-threaded manner. |
1049 rtc::CritScope cs_render(&crit_render_); | 1044 rtc::CritScope cs_render(&crit_render_); |
1050 rtc::CritScope cs_capture(&crit_capture_); | 1045 rtc::CritScope cs_capture(&crit_capture_); |
1051 static_assert(kMaxFilenameSize == FileWrapper::kMaxFileNameSize, ""); | 1046 static_assert(kMaxFilenameSize == FileWrapper::kMaxFileNameSize, ""); |
1052 | 1047 |
1053 if (filename == nullptr) { | 1048 if (filename == nullptr) { |
1054 return kNullPointerError; | 1049 return kNullPointerError; |
1055 } | 1050 } |
1056 | 1051 |
1057 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 1052 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
1058 debug_dump_.num_bytes_left_for_log_ = max_log_size_bytes; | |
1059 // Stop any ongoing recording. | 1053 // Stop any ongoing recording. |
1060 if (debug_dump_.debug_file->Open()) { | 1054 if (debug_dump_.debug_file->Open()) { |
1061 if (debug_dump_.debug_file->CloseFile() == -1) { | 1055 if (debug_dump_.debug_file->CloseFile() == -1) { |
1062 return kFileError; | 1056 return kFileError; |
1063 } | 1057 } |
1064 } | 1058 } |
1065 | 1059 |
1066 if (debug_dump_.debug_file->OpenFile(filename, false) == -1) { | 1060 if (debug_dump_.debug_file->OpenFile(filename, false) == -1) { |
1067 debug_dump_.debug_file->CloseFile(); | 1061 debug_dump_.debug_file->CloseFile(); |
1068 return kFileError; | 1062 return kFileError; |
1069 } | 1063 } |
1070 | 1064 |
1071 RETURN_ON_ERR(WriteConfigMessage(true)); | 1065 RETURN_ON_ERR(WriteConfigMessage(true)); |
1072 RETURN_ON_ERR(WriteInitMessage()); | 1066 RETURN_ON_ERR(WriteInitMessage()); |
1073 return kNoError; | 1067 return kNoError; |
1074 #else | 1068 #else |
1075 return kUnsupportedFunctionError; | 1069 return kUnsupportedFunctionError; |
1076 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP | 1070 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP |
1077 } | 1071 } |
1078 | 1072 |
1079 int AudioProcessingImpl::StartDebugRecording(FILE* handle, | 1073 int AudioProcessingImpl::StartDebugRecording(FILE* handle) { |
1080 int64_t max_log_size_bytes) { | |
1081 // Run in a single-threaded manner. | 1074 // Run in a single-threaded manner. |
1082 rtc::CritScope cs_render(&crit_render_); | 1075 rtc::CritScope cs_render(&crit_render_); |
1083 rtc::CritScope cs_capture(&crit_capture_); | 1076 rtc::CritScope cs_capture(&crit_capture_); |
1084 | 1077 |
1085 if (handle == nullptr) { | 1078 if (handle == nullptr) { |
1086 return kNullPointerError; | 1079 return kNullPointerError; |
1087 } | 1080 } |
1088 | 1081 |
1089 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 1082 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
1090 debug_dump_.num_bytes_left_for_log_ = max_log_size_bytes; | |
1091 | |
1092 // Stop any ongoing recording. | 1083 // Stop any ongoing recording. |
1093 if (debug_dump_.debug_file->Open()) { | 1084 if (debug_dump_.debug_file->Open()) { |
1094 if (debug_dump_.debug_file->CloseFile() == -1) { | 1085 if (debug_dump_.debug_file->CloseFile() == -1) { |
1095 return kFileError; | 1086 return kFileError; |
1096 } | 1087 } |
1097 } | 1088 } |
1098 | 1089 |
1099 if (debug_dump_.debug_file->OpenFromFileHandle(handle, true, false) == -1) { | 1090 if (debug_dump_.debug_file->OpenFromFileHandle(handle, true, false) == -1) { |
1100 return kFileError; | 1091 return kFileError; |
1101 } | 1092 } |
1102 | 1093 |
1103 RETURN_ON_ERR(WriteConfigMessage(true)); | 1094 RETURN_ON_ERR(WriteConfigMessage(true)); |
1104 RETURN_ON_ERR(WriteInitMessage()); | 1095 RETURN_ON_ERR(WriteInitMessage()); |
1105 return kNoError; | 1096 return kNoError; |
1106 #else | 1097 #else |
1107 return kUnsupportedFunctionError; | 1098 return kUnsupportedFunctionError; |
1108 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP | 1099 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP |
1109 } | 1100 } |
1110 | 1101 |
1111 int AudioProcessingImpl::StartDebugRecordingForPlatformFile( | 1102 int AudioProcessingImpl::StartDebugRecordingForPlatformFile( |
1112 rtc::PlatformFile handle) { | 1103 rtc::PlatformFile handle) { |
1113 // Run in a single-threaded manner. | 1104 // Run in a single-threaded manner. |
1114 rtc::CritScope cs_render(&crit_render_); | 1105 rtc::CritScope cs_render(&crit_render_); |
1115 rtc::CritScope cs_capture(&crit_capture_); | 1106 rtc::CritScope cs_capture(&crit_capture_); |
1116 FILE* stream = rtc::FdopenPlatformFileForWriting(handle); | 1107 FILE* stream = rtc::FdopenPlatformFileForWriting(handle); |
1117 return StartDebugRecording(stream, -1); | 1108 return StartDebugRecording(stream); |
1118 } | 1109 } |
1119 | 1110 |
1120 int AudioProcessingImpl::StopDebugRecording() { | 1111 int AudioProcessingImpl::StopDebugRecording() { |
1121 // Run in a single-threaded manner. | 1112 // Run in a single-threaded manner. |
1122 rtc::CritScope cs_render(&crit_render_); | 1113 rtc::CritScope cs_render(&crit_render_); |
1123 rtc::CritScope cs_capture(&crit_capture_); | 1114 rtc::CritScope cs_capture(&crit_capture_); |
1124 | 1115 |
1125 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 1116 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
1126 // We just return if recording hasn't started. | 1117 // We just return if recording hasn't started. |
1127 if (debug_dump_.debug_file->Open()) { | 1118 if (debug_dump_.debug_file->Open()) { |
(...skipping 274 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1402 RTC_HISTOGRAM_ENUMERATION("WebRTC.Audio.NumOfAecSystemDelayJumps", | 1393 RTC_HISTOGRAM_ENUMERATION("WebRTC.Audio.NumOfAecSystemDelayJumps", |
1403 capture_.aec_system_delay_jumps, 51); | 1394 capture_.aec_system_delay_jumps, 51); |
1404 } | 1395 } |
1405 capture_.aec_system_delay_jumps = -1; | 1396 capture_.aec_system_delay_jumps = -1; |
1406 capture_.last_aec_system_delay_ms = 0; | 1397 capture_.last_aec_system_delay_ms = 0; |
1407 } | 1398 } |
1408 | 1399 |
1409 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP | 1400 #ifdef WEBRTC_AUDIOPROC_DEBUG_DUMP |
1410 int AudioProcessingImpl::WriteMessageToDebugFile( | 1401 int AudioProcessingImpl::WriteMessageToDebugFile( |
1411 FileWrapper* debug_file, | 1402 FileWrapper* debug_file, |
1412 int64_t* filesize_limit_bytes, | |
1413 rtc::CriticalSection* crit_debug, | 1403 rtc::CriticalSection* crit_debug, |
1414 ApmDebugDumpThreadState* debug_state) { | 1404 ApmDebugDumpThreadState* debug_state) { |
1415 int32_t size = debug_state->event_msg->ByteSize(); | 1405 int32_t size = debug_state->event_msg->ByteSize(); |
1416 if (size <= 0) { | 1406 if (size <= 0) { |
1417 return kUnspecifiedError; | 1407 return kUnspecifiedError; |
1418 } | 1408 } |
1419 #if defined(WEBRTC_ARCH_BIG_ENDIAN) | 1409 #if defined(WEBRTC_ARCH_BIG_ENDIAN) |
1420 // TODO(ajm): Use little-endian "on the wire". For the moment, we can be | 1410 // TODO(ajm): Use little-endian "on the wire". For the moment, we can be |
1421 // pretty safe in assuming little-endian. | 1411 // pretty safe in assuming little-endian. |
1422 #endif | 1412 #endif |
1423 | 1413 |
1424 if (!debug_state->event_msg->SerializeToString(&debug_state->event_str)) { | 1414 if (!debug_state->event_msg->SerializeToString(&debug_state->event_str)) { |
1425 return kUnspecifiedError; | 1415 return kUnspecifiedError; |
1426 } | 1416 } |
1427 | 1417 |
1428 { | 1418 { |
1429 // Ensure atomic writes of the message. | 1419 // Ensure atomic writes of the message. |
1430 rtc::CritScope cs_debug(crit_debug); | 1420 rtc::CritScope cs_capture(crit_debug); |
1431 | |
1432 RTC_DCHECK(debug_file->Open()); | |
1433 // Update the byte counter. | |
1434 if (*filesize_limit_bytes >= 0) { | |
1435 *filesize_limit_bytes -= | |
1436 (sizeof(int32_t) + debug_state->event_str.length()); | |
1437 if (*filesize_limit_bytes < 0) { | |
1438 // Not enough bytes are left to write this message, so stop logging. | |
1439 debug_file->CloseFile(); | |
1440 return kNoError; | |
1441 } | |
1442 } | |
1443 // Write message preceded by its size. | 1421 // Write message preceded by its size. |
1444 if (!debug_file->Write(&size, sizeof(int32_t))) { | 1422 if (!debug_file->Write(&size, sizeof(int32_t))) { |
1445 return kFileError; | 1423 return kFileError; |
1446 } | 1424 } |
1447 if (!debug_file->Write(debug_state->event_str.data(), | 1425 if (!debug_file->Write(debug_state->event_str.data(), |
1448 debug_state->event_str.length())) { | 1426 debug_state->event_str.length())) { |
1449 return kFileError; | 1427 return kFileError; |
1450 } | 1428 } |
1451 } | 1429 } |
1452 | 1430 |
(...skipping 14 matching lines...) Expand all Loading... |
1467 msg->set_num_reverse_channels( | 1445 msg->set_num_reverse_channels( |
1468 formats_.api_format.reverse_input_stream().num_channels()); | 1446 formats_.api_format.reverse_input_stream().num_channels()); |
1469 msg->set_reverse_sample_rate( | 1447 msg->set_reverse_sample_rate( |
1470 formats_.api_format.reverse_input_stream().sample_rate_hz()); | 1448 formats_.api_format.reverse_input_stream().sample_rate_hz()); |
1471 msg->set_output_sample_rate( | 1449 msg->set_output_sample_rate( |
1472 formats_.api_format.output_stream().sample_rate_hz()); | 1450 formats_.api_format.output_stream().sample_rate_hz()); |
1473 // TODO(ekmeyerson): Add reverse output fields to | 1451 // TODO(ekmeyerson): Add reverse output fields to |
1474 // debug_dump_.capture.event_msg. | 1452 // debug_dump_.capture.event_msg. |
1475 | 1453 |
1476 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 1454 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
1477 &debug_dump_.num_bytes_left_for_log_, | |
1478 &crit_debug_, &debug_dump_.capture)); | 1455 &crit_debug_, &debug_dump_.capture)); |
1479 return kNoError; | 1456 return kNoError; |
1480 } | 1457 } |
1481 | 1458 |
1482 int AudioProcessingImpl::WriteConfigMessage(bool forced) { | 1459 int AudioProcessingImpl::WriteConfigMessage(bool forced) { |
1483 audioproc::Config config; | 1460 audioproc::Config config; |
1484 | 1461 |
1485 config.set_aec_enabled(public_submodules_->echo_cancellation->is_enabled()); | 1462 config.set_aec_enabled(public_submodules_->echo_cancellation->is_enabled()); |
1486 config.set_aec_delay_agnostic_enabled( | 1463 config.set_aec_delay_agnostic_enabled( |
1487 public_submodules_->echo_cancellation->is_delay_agnostic_enabled()); | 1464 public_submodules_->echo_cancellation->is_delay_agnostic_enabled()); |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1520 debug_dump_.capture.last_serialized_config == serialized_config) { | 1497 debug_dump_.capture.last_serialized_config == serialized_config) { |
1521 return kNoError; | 1498 return kNoError; |
1522 } | 1499 } |
1523 | 1500 |
1524 debug_dump_.capture.last_serialized_config = serialized_config; | 1501 debug_dump_.capture.last_serialized_config = serialized_config; |
1525 | 1502 |
1526 debug_dump_.capture.event_msg->set_type(audioproc::Event::CONFIG); | 1503 debug_dump_.capture.event_msg->set_type(audioproc::Event::CONFIG); |
1527 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config); | 1504 debug_dump_.capture.event_msg->mutable_config()->CopyFrom(config); |
1528 | 1505 |
1529 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), | 1506 RETURN_ON_ERR(WriteMessageToDebugFile(debug_dump_.debug_file.get(), |
1530 &debug_dump_.num_bytes_left_for_log_, | |
1531 &crit_debug_, &debug_dump_.capture)); | 1507 &crit_debug_, &debug_dump_.capture)); |
1532 return kNoError; | 1508 return kNoError; |
1533 } | 1509 } |
1534 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP | 1510 #endif // WEBRTC_AUDIOPROC_DEBUG_DUMP |
1535 | 1511 |
1536 } // namespace webrtc | 1512 } // namespace webrtc |
OLD | NEW |