Chromium Code Reviews| Index: webrtc/video/video_quality_test.cc |
| diff --git a/webrtc/video/video_quality_test.cc b/webrtc/video/video_quality_test.cc |
| index 6ad64bc33f601de042309c8c869626d2f700a716..604eb1465342845e8c0011afd0fe1b622824751b 100644 |
| --- a/webrtc/video/video_quality_test.cc |
| +++ b/webrtc/video/video_quality_test.cc |
| @@ -36,6 +36,7 @@ |
| #include "webrtc/rtc_base/format_macros.h" |
| #include "webrtc/rtc_base/memory_usage.h" |
| #include "webrtc/rtc_base/optional.h" |
| +#include "webrtc/rtc_base/pathutils.h" |
| #include "webrtc/rtc_base/platform_file.h" |
| #include "webrtc/rtc_base/timeutils.h" |
| #include "webrtc/system_wrappers/include/cpu_info.h" |
| @@ -46,6 +47,7 @@ |
| #include "webrtc/test/statistics.h" |
| #include "webrtc/test/testsupport/fileutils.h" |
| #include "webrtc/test/testsupport/frame_writer.h" |
| +#include "webrtc/test/testsupport/test_output.h" |
| #include "webrtc/test/vcm_capturer.h" |
| #include "webrtc/test/video_renderer.h" |
| #include "webrtc/voice_engine/include/voe_base.h" |
| @@ -824,27 +826,23 @@ class VideoAnalyzer : public PacketReceiver, |
| // will be flaky. |
| PrintResult("memory_usage", memory_usage_, " bytes"); |
| #endif |
| - // TODO(ilnik): enable frame writing for android, once jpeg frame writer |
| - // is implemented. |
| -#if !defined(WEBRTC_ANDROID) |
| + // LibJpeg is not available on iOS. |
| +#if !defined(WEBRTC_IOS) |
| + // Saving only the worst frame for manual analysis. Intention here is to |
| + // only detect video corruptions and not to track picture quality. Thus, |
| + // jpeg is used here. |
| if (worst_frame_) { |
| - test::Y4mFrameWriterImpl frame_writer(test_label_ + ".y4m", |
| - worst_frame_->frame.width(), |
| - worst_frame_->frame.height(), 1); |
| - bool res = frame_writer.Init(); |
| - RTC_DCHECK(res); |
| - size_t length = |
| - CalcBufferSize(VideoType::kI420, worst_frame_->frame.width(), |
| - worst_frame_->frame.height()); |
| - rtc::Buffer extracted_buffer(length); |
| - size_t extracted_length = |
| - ExtractBuffer(worst_frame_->frame.video_frame_buffer()->ToI420(), |
| - length, extracted_buffer.data()); |
| - RTC_DCHECK_EQ(extracted_length, frame_writer.FrameLength()); |
| - res = frame_writer.WriteFrame(extracted_buffer.data()); |
| - RTC_DCHECK(res); |
| - frame_writer.Close(); |
| + std::string output_dir; |
| + if (!test::GetTestOutputDir(&output_dir)) { |
| + output_dir = ""; |
|
sprang_webrtc
2017/08/17 15:27:50
Should not write to file instead, if flag is not s
ilnik
2017/08/18 08:42:05
Currently it always outputs the worst frame. This
|
| + } |
| + std::string output_path = |
| + rtc::Pathname(output_dir, test_label_ + ".jpg").pathname(); |
| + fprintf(stderr, "Saving worst frame to %s\n", output_path.c_str()); |
|
sprang_webrtc
2017/08/17 15:27:50
use LOG macro instead
ilnik
2017/08/18 08:42:05
Done.
|
| + test::JpegFrameWriter frame_writer(output_path); |
| + RTC_CHECK(frame_writer.WriteFrame(worst_frame_->frame, |
| + 100 /*best quality*/)); |
| } |
| #endif |