Index: webrtc/tools/compare_videos.py |
diff --git a/webrtc/tools/compare_videos.py b/webrtc/tools/compare_videos.py |
index 6aa659be362e4828e809979e4b54d6ffea3aedfe..aebaf4f6dbdc1d22755bc87a80609609255e9392 100755 |
--- a/webrtc/tools/compare_videos.py |
+++ b/webrtc/tools/compare_videos.py |
@@ -48,7 +48,11 @@ def _ParseArgs(): |
help=('The path to where the zxing executable is located. ' |
'If omitted, it will be assumed to be present in the ' |
'PATH with the name zxing[.exe].')) |
- parser.add_option('--stats_file', type='string', default='stats.txt', |
+ parser.add_option('--stats_file_ref', type='string', default='stats_ref.txt', |
+ help=('Path to the temporary stats file to be created and ' |
+ 'used. Default: %default')) |
+ parser.add_option('--stats_file_test', type='string', |
+ default='stats_test.txt', |
help=('Path to the temporary stats file to be created and ' |
mandermo
2016/12/21 16:42:06
Maybe --stats_file_test should be called --stats_f
kjellander_webrtc
2017/01/02 20:01:48
Good point, although it's not as clean.
I suggest
|
'used. Default: %default')) |
parser.add_option('--yuv_frame_width', type='int', default=640, |
@@ -74,6 +78,36 @@ def _ParseArgs(): |
options.frame_analyzer) |
return options |
+def DecodeBarcodesInVideo(options, path_to_decoder, video, stat_file): |
+ # Run barcode decoder on the test video to identify frame numbers. |
+ png_working_directory = tempfile.mkdtemp() |
+ cmd = [ |
+ sys.executable, |
+ path_to_decoder, |
+ '--yuv_file=%s' % video, |
+ '--yuv_frame_width=%d' % options.yuv_frame_width, |
+ '--yuv_frame_height=%d' % options.yuv_frame_height, |
+ '--stats_file=%s' % stat_file, |
+ '--png_working_dir=%s' % png_working_directory, |
+ ] |
+ if options.zxing_path: |
+ cmd.append('--zxing_path=%s' % options.zxing_path) |
+ if options.ffmpeg_path: |
+ cmd.append('--ffmpeg_path=%s' % options.ffmpeg_path) |
+ |
+ # On Windows, sometimes the inherited stdin handle from the parent process |
+ # fails. Workaround this by passing null to stdin to the subprocesses. |
+ null_filehandle = open(os.devnull, 'r') |
phoglund
2016/12/12 12:46:20
Create a helper which you invoke
...Popen(cmd, st
mandermo
2016/12/21 16:42:06
Done.
|
+ |
+ barcode_decoder = subprocess.Popen(cmd, stdin=null_filehandle, |
+ stdout=sys.stdout, stderr=sys.stderr) |
+ barcode_decoder.wait() |
+ |
+ shutil.rmtree(png_working_directory) |
+ if barcode_decoder.returncode != 0: |
+ print 'Failed to run barcode decoder script.' |
+ return 1 |
+ return 0 |
def main(): |
"""The main function. |
@@ -97,41 +131,25 @@ def main(): |
path_to_decoder = os.path.join(SCRIPT_DIR, 'barcode_tools', |
'barcode_decoder.py') |
+ if DecodeBarcodesInVideo(options, path_to_decoder, |
+ options.ref_video, options.stats_file_ref) != 0: |
+ return 1 |
+ if DecodeBarcodesInVideo(options, path_to_decoder, |
+ options.test_video, options.stats_file_test) != 0: |
+ return 1 |
+ |
# On Windows, sometimes the inherited stdin handle from the parent process |
- # fails. Work around this by passing null to stdin to the subprocesses. |
+ # fails. Workaround this by passing null to stdin to the subprocesses. |
null_filehandle = open(os.devnull, 'r') |
- # Run barcode decoder on the test video to identify frame numbers. |
- png_working_directory = tempfile.mkdtemp() |
- cmd = [ |
- sys.executable, |
- path_to_decoder, |
- '--yuv_file=%s' % options.test_video, |
- '--yuv_frame_width=%d' % options.yuv_frame_width, |
- '--yuv_frame_height=%d' % options.yuv_frame_height, |
- '--stats_file=%s' % options.stats_file, |
- '--png_working_dir=%s' % png_working_directory, |
- ] |
- if options.zxing_path: |
- cmd.append('--zxing_path=%s' % options.zxing_path) |
- if options.ffmpeg_path: |
- cmd.append('--ffmpeg_path=%s' % options.ffmpeg_path) |
- barcode_decoder = subprocess.Popen(cmd, stdin=null_filehandle, |
- stdout=sys.stdout, stderr=sys.stderr) |
- barcode_decoder.wait() |
- |
- shutil.rmtree(png_working_directory) |
- if barcode_decoder.returncode != 0: |
- print 'Failed to run barcode decoder script.' |
- return 1 |
- |
# Run frame analyzer to compare the videos and print output. |
cmd = [ |
options.frame_analyzer, |
'--label=%s' % options.label, |
'--reference_file=%s' % options.ref_video, |
'--test_file=%s' % options.test_video, |
- '--stats_file=%s' % options.stats_file, |
+ '--stats_file_ref=%s' % options.stats_file_ref, |
+ '--stats_file_test=%s' % options.stats_file_test, |
'--width=%d' % options.yuv_frame_width, |
'--height=%d' % options.yuv_frame_height, |
] |