From 3d3e08b2b122b2a7152a06695a65a72b69ee7079 Mon Sep 17 00:00:00 2001 From: Oleh Prypin Date: Mon, 1 Oct 2018 13:19:15 +0000 Subject: [PATCH] Revert "Tidy up and increase exception handling in compare_videos" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 1c60ff521eda26c80fa53097d9c614f10200f651. Reason for revert: Breaks downstream tests: non-test target compare_videos depends on testonly target frame_analyzer Original change's description: > Tidy up and increase exception handling in compare_videos > > Bug: webrtc:9642 > Change-Id: I5c8b252de3b285f81a5437af99d789b5a28ce646 > Reviewed-on: https://webrtc-review.googlesource.com/102880 > Commit-Queue: Paulina Hensman > Reviewed-by: Patrik Höglund > Cr-Commit-Position: refs/heads/master@{#24909} TBR=phoglund@webrtc.org,sakal@webrtc.org,phensman@webrtc.org Change-Id: I69c94248faf7d448b871b91548336ff681e4d139 No-Try: true Bug: webrtc:9642 Reviewed-on: https://webrtc-review.googlesource.com/102921 Reviewed-by: Oleh Prypin Commit-Queue: Oleh Prypin Cr-Commit-Position: refs/heads/master@{#24911} --- rtc_tools/BUILD.gn | 2 - rtc_tools/compare_videos.py | 54 ++++++++++------------ rtc_tools/frame_analyzer/frame_analyzer.cc | 11 ++--- 3 files changed, 29 insertions(+), 38 deletions(-) diff --git a/rtc_tools/BUILD.gn b/rtc_tools/BUILD.gn index 48213ad483..990d964321 100644 --- a/rtc_tools/BUILD.gn +++ b/rtc_tools/BUILD.gn @@ -108,7 +108,6 @@ rtc_static_library("video_quality_analysis") { rtc_executable("frame_analyzer") { visibility = [ "*" ] - testonly = true sources = [ "frame_analyzer/frame_analyzer.cc", ] @@ -119,7 +118,6 @@ rtc_executable("frame_analyzer") { ":video_file_writer", ":video_quality_analysis", "../rtc_base:stringutils", - "../test:fileutils", "../test:perf_test", ] } diff --git a/rtc_tools/compare_videos.py b/rtc_tools/compare_videos.py index 79790439b1..ac41ef888b 100755 --- a/rtc_tools/compare_videos.py +++ b/rtc_tools/compare_videos.py @@ -136,7 +136,7 @@ def DecodeBarcodesInVideo(options, path_to_decoder, video, stat_file): return 0 -def _RunFrameAnalyzer(options, yuv_directory=None): +def _RunFrameAnalyzer(options): """Run frame analyzer to compare the videos and print output.""" cmd = [ options.frame_analyzer, @@ -152,17 +152,15 @@ def _RunFrameAnalyzer(options, yuv_directory=None): cmd.append('--chartjson_result_file=%s' % options.chartjson_result_file) if options.aligned_output_file: cmd.append('--aligned_output_file=%s' % options.aligned_output_file) - if yuv_directory: - cmd.append('--yuv_directory=%s' % yuv_directory) + if options.yuv_directory: + cmd.append('--yuv_directory=%s' % options.yuv_directory) frame_analyzer = subprocess.Popen(cmd, stdin=_DevNull(), stdout=sys.stdout, stderr=sys.stderr) frame_analyzer.wait() - if frame_analyzer.returncode != 0: - print 'Failed to run frame analyzer.' return frame_analyzer.returncode -def _RunVmaf(options, yuv_directory): +def _RunVmaf(options): """ Run VMAF to compare videos and print output. The provided vmaf directory is assumed to contain a c++ wrapper executable @@ -176,28 +174,22 @@ def _RunVmaf(options, yuv_directory): 'yuv420p', str(options.yuv_frame_width), str(options.yuv_frame_height), - os.path.join(yuv_directory, "ref.yuv"), - os.path.join(yuv_directory, "test.yuv"), + os.path.join(options.yuv_directory, "ref.yuv"), + os.path.join(options.yuv_directory, "test.yuv"), options.vmaf_model, ] if options.vmaf_phone_model: cmd.append('--phone-model') vmaf = subprocess.Popen(cmd, stdin=_DevNull(), - stdout=subprocess.PIPE, stderr=sys.stderr) + stdout=subprocess.PIPE, stderr=sys.stderr) vmaf.wait() if vmaf.returncode != 0: print 'Failed to run VMAF.' return 1 output = vmaf.stdout.read() # Extract score from VMAF output. - try: - score = float(output.split('\n')[2].split()[3]) - except (ValueError, IndexError): - print 'Error in VMAF output (expected "VMAF score = [float]" on line 3):' - print output - return 1 - + score = float(output.split('\n')[2].split()[3]) print 'RESULT Vmaf: %s= %f' % (options.label, score) return 0 @@ -234,21 +226,25 @@ def main(): options.test_video, options.stats_file_test) != 0: return 1 - if options.vmaf: - try: - # Directory to save temporary YUV files for VMAF in frame_analyzer. - yuv_directory = tempfile.mkdtemp() + try: + # Create a directory to save temporary YUV files for VMAF in frame_analyzer. + options.yuv_directory = None + if options.vmaf: + options.yuv_directory = tempfile.mkdtemp() + '/' - # Run frame analyzer to compare the videos and print output. - if _RunFrameAnalyzer(options, yuv_directory=yuv_directory) != 0: - return 1 + # Run frame_analyzer to compare the videos and print output. + if _RunFrameAnalyzer(options) != 0: + print 'Failed to run frame analyzer.' + return 1 + + # Run VMAF for further video comparison and print output. + if options.vmaf: + return _RunVmaf(options) + + finally: + if options.yuv_directory: + shutil.rmtree(options.yuv_directory) - # Run VMAF for further video comparison and print output. - return _RunVmaf(options, yuv_directory) - finally: - shutil.rmtree(yuv_directory) - else: - return _RunFrameAnalyzer(options) return 0 diff --git a/rtc_tools/frame_analyzer/frame_analyzer.cc b/rtc_tools/frame_analyzer/frame_analyzer.cc index 78c1929521..56dc1f47db 100644 --- a/rtc_tools/frame_analyzer/frame_analyzer.cc +++ b/rtc_tools/frame_analyzer/frame_analyzer.cc @@ -21,7 +21,6 @@ #include "rtc_tools/simple_command_line_parser.h" #include "rtc_tools/video_file_reader.h" #include "rtc_tools/video_file_writer.h" -#include "test/testsupport/fileutils.h" #include "test/testsupport/perf_test.h" /* @@ -148,12 +147,10 @@ int main(int argc, char* argv[]) { } std::string yuv_directory = parser.GetFlag("yuv_directory"); if (!yuv_directory.empty()) { - webrtc::test::WriteVideoToFile( - reordered_video, webrtc::test::JoinFilename(yuv_directory, "ref.yuv"), - /*fps=*/30); - webrtc::test::WriteVideoToFile( - test_video, webrtc::test::JoinFilename(yuv_directory, "test.yuv"), - /*fps=*/30); + webrtc::test::WriteVideoToFile(reordered_video, yuv_directory + "ref.yuv", + /*fps=*/30); + webrtc::test::WriteVideoToFile(test_video, yuv_directory + "test.yuv", + /*fps=*/30); } return 0;