| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2015 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 #include "webrtc/video/video_quality_test.h" | 10 #include "webrtc/video/video_quality_test.h" |
| 11 | 11 |
| 12 #include <stdio.h> | 12 #include <stdio.h> |
| 13 #include <algorithm> | 13 #include <algorithm> |
| 14 #include <deque> | 14 #include <deque> |
| 15 #include <map> | 15 #include <map> |
| 16 #include <set> | 16 #include <set> |
| 17 #include <sstream> | 17 #include <sstream> |
| 18 #include <string> | 18 #include <string> |
| 19 #include <vector> | 19 #include <vector> |
| 20 | 20 |
| 21 #include "gflags/gflags.h" | |
| 22 #include "webrtc/call/call.h" | 21 #include "webrtc/call/call.h" |
| 23 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" | 22 #include "webrtc/common_video/libyuv/include/webrtc_libyuv.h" |
| 24 #include "webrtc/logging/rtc_event_log/rtc_event_log.h" | 23 #include "webrtc/logging/rtc_event_log/rtc_event_log.h" |
| 25 #include "webrtc/media/engine/webrtcvideoengine.h" | 24 #include "webrtc/media/engine/webrtcvideoengine.h" |
| 26 #include "webrtc/modules/audio_mixer/audio_mixer_impl.h" | 25 #include "webrtc/modules/audio_mixer/audio_mixer_impl.h" |
| 27 #include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h" | 26 #include "webrtc/modules/rtp_rtcp/include/rtp_header_parser.h" |
| 28 #include "webrtc/modules/rtp_rtcp/source/rtp_format.h" | 27 #include "webrtc/modules/rtp_rtcp/source/rtp_format.h" |
| 29 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h" | 28 #include "webrtc/modules/rtp_rtcp/source/rtp_utility.h" |
| 30 #include "webrtc/modules/video_coding/codecs/h264/include/h264.h" | 29 #include "webrtc/modules/video_coding/codecs/h264/include/h264.h" |
| 31 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h" | 30 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8.h" |
| 32 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8_common_types.h" | 31 #include "webrtc/modules/video_coding/codecs/vp8/include/vp8_common_types.h" |
| 33 #include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h" | 32 #include "webrtc/modules/video_coding/codecs/vp9/include/vp9.h" |
| 34 #include "webrtc/rtc_base/checks.h" | 33 #include "webrtc/rtc_base/checks.h" |
| 35 #include "webrtc/rtc_base/cpu_time.h" | 34 #include "webrtc/rtc_base/cpu_time.h" |
| 36 #include "webrtc/rtc_base/event.h" | 35 #include "webrtc/rtc_base/event.h" |
| 36 #include "webrtc/rtc_base/flags.h" |
| 37 #include "webrtc/rtc_base/format_macros.h" | 37 #include "webrtc/rtc_base/format_macros.h" |
| 38 #include "webrtc/rtc_base/logging.h" | 38 #include "webrtc/rtc_base/logging.h" |
| 39 #include "webrtc/rtc_base/memory_usage.h" | 39 #include "webrtc/rtc_base/memory_usage.h" |
| 40 #include "webrtc/rtc_base/optional.h" | 40 #include "webrtc/rtc_base/optional.h" |
| 41 #include "webrtc/rtc_base/pathutils.h" | 41 #include "webrtc/rtc_base/pathutils.h" |
| 42 #include "webrtc/rtc_base/platform_file.h" | 42 #include "webrtc/rtc_base/platform_file.h" |
| 43 #include "webrtc/rtc_base/ptr_util.h" | 43 #include "webrtc/rtc_base/ptr_util.h" |
| 44 #include "webrtc/rtc_base/timeutils.h" | 44 #include "webrtc/rtc_base/timeutils.h" |
| 45 #include "webrtc/system_wrappers/include/cpu_info.h" | 45 #include "webrtc/system_wrappers/include/cpu_info.h" |
| 46 #include "webrtc/system_wrappers/include/field_trial.h" | 46 #include "webrtc/system_wrappers/include/field_trial.h" |
| (...skipping 786 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 833 // Therefore this metric will depend on order in which tests are run and | 833 // Therefore this metric will depend on order in which tests are run and |
| 834 // will be flaky. | 834 // will be flaky. |
| 835 PrintResult("memory_usage", memory_usage_, " bytes"); | 835 PrintResult("memory_usage", memory_usage_, " bytes"); |
| 836 #endif | 836 #endif |
| 837 | 837 |
| 838 // LibJpeg is not available on iOS. | 838 // LibJpeg is not available on iOS. |
| 839 #if !defined(WEBRTC_IOS) | 839 #if !defined(WEBRTC_IOS) |
| 840 // Saving only the worst frame for manual analysis. Intention here is to | 840 // Saving only the worst frame for manual analysis. Intention here is to |
| 841 // only detect video corruptions and not to track picture quality. Thus, | 841 // only detect video corruptions and not to track picture quality. Thus, |
| 842 // jpeg is used here. | 842 // jpeg is used here. |
| 843 if (FLAGS_save_worst_frame && worst_frame_) { | 843 if (FLAG_save_worst_frame && worst_frame_) { |
| 844 std::string output_dir; | 844 std::string output_dir; |
| 845 test::GetTestOutputDir(&output_dir); | 845 test::GetTestOutputDir(&output_dir); |
| 846 std::string output_path = | 846 std::string output_path = |
| 847 rtc::Pathname(output_dir, test_label_ + ".jpg").pathname(); | 847 rtc::Pathname(output_dir, test_label_ + ".jpg").pathname(); |
| 848 LOG(LS_INFO) << "Saving worst frame to " << output_path; | 848 LOG(LS_INFO) << "Saving worst frame to " << output_path; |
| 849 test::JpegFrameWriter frame_writer(output_path); | 849 test::JpegFrameWriter frame_writer(output_path); |
| 850 RTC_CHECK(frame_writer.WriteFrame(worst_frame_->frame, | 850 RTC_CHECK(frame_writer.WriteFrame(worst_frame_->frame, |
| 851 100 /*best quality*/)); | 851 100 /*best quality*/)); |
| 852 } | 852 } |
| 853 #endif | 853 #endif |
| (...skipping 1305 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2159 if (!params_.logging.encoded_frame_base_path.empty()) { | 2159 if (!params_.logging.encoded_frame_base_path.empty()) { |
| 2160 std::ostringstream str; | 2160 std::ostringstream str; |
| 2161 str << receive_logs_++; | 2161 str << receive_logs_++; |
| 2162 std::string path = | 2162 std::string path = |
| 2163 params_.logging.encoded_frame_base_path + "." + str.str() + ".recv.ivf"; | 2163 params_.logging.encoded_frame_base_path + "." + str.str() + ".recv.ivf"; |
| 2164 stream->EnableEncodedFrameRecording(rtc::CreatePlatformFile(path), | 2164 stream->EnableEncodedFrameRecording(rtc::CreatePlatformFile(path), |
| 2165 100000000); | 2165 100000000); |
| 2166 } | 2166 } |
| 2167 } | 2167 } |
| 2168 } // namespace webrtc | 2168 } // namespace webrtc |
| OLD | NEW |