Index: webrtc/tools/compare_videos.py |
diff --git a/webrtc/tools/compare_videos.py b/webrtc/tools/compare_videos.py |
index 6aa659be362e4828e809979e4b54d6ffea3aedfe..2e4aacb9b05fc7cb322081b982c7f87c0dd4f8c0 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')) |
kjellander_webrtc
2016/12/22 15:35:05
Please explain briefly the difference between ref
mandermo
2017/01/02 14:59:12
I had a slightly longer description before that co
kjellander_webrtc
2017/01/02 20:01:48
I'm sorry but I can't find Patrik's comment. Eithe
mandermo
2017/01/03 17:36:45
Sorry, mixed it up with comment on frame_analyzer.
|
+ parser.add_option('--stats_file_test', type='string', |
+ default='stats_test.txt', |
help=('Path to the temporary stats file to be created and ' |
'used. Default: %default')) |
parser.add_option('--yuv_frame_width', type='int', default=640, |
@@ -74,6 +78,40 @@ def _ParseArgs(): |
options.frame_analyzer) |
return options |
+def _DevNull(): |
+ """On Windows, sometimes the inherited stdin handle from the parent process |
+ fails. Workaround this by passing null to stdin to the subprocesses commands. |
+ This function can be used to create the null file handler. |
+ """ |
+ return open(os.devnull, 'r') |
+ |
+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) |
+ |
+ |
+ barcode_decoder = subprocess.Popen(cmd, stdin=_DevNull(), |
+ 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,32 +135,11 @@ def main(): |
path_to_decoder = os.path.join(SCRIPT_DIR, 'barcode_tools', |
'barcode_decoder.py') |
- # On Windows, sometimes the inherited stdin handle from the parent process |
- # fails. Work around 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.' |
+ if DecodeBarcodesInVideo(options, path_to_decoder, |
+ options.ref_video, options.stats_file_ref) != 0: |
kjellander_webrtc
2016/12/22 15:35:05
indent to alighn with above (
(when using 4 spaces
mandermo
2017/01/02 14:59:12
Done.
|
+ return 1 |
+ if DecodeBarcodesInVideo(options, path_to_decoder, |
+ options.test_video, options.stats_file_test) != 0: |
kjellander_webrtc
2016/12/22 15:35:04
indent to alight with above (
mandermo
2017/01/02 14:59:12
Done.
|
return 1 |
# Run frame analyzer to compare the videos and print output. |
@@ -131,11 +148,12 @@ def main(): |
'--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, |
] |
- frame_analyzer = subprocess.Popen(cmd, stdin=null_filehandle, |
+ frame_analyzer = subprocess.Popen(cmd, stdin=_DevNull(), |
stdout=sys.stdout, stderr=sys.stderr) |
frame_analyzer.wait() |
if frame_analyzer.returncode != 0: |