Revert "Update video_quality_analysis to align videos instead of using barcodes"
This reverts commit d65e143801a7aaa9affdb939ea836aec1955cdcc. Reason for revert: Breaks perf bots. frame_analyzer is a prebuilt binary, so it won't automatically pick up changes in the .cc file. Original change's description: > Update video_quality_analysis to align videos instead of using barcodes > > This CL is a follow-up to the previous CL > https://webrtc-review.googlesource.com/c/src/+/94773 that added generic > logic for aligning videos. This will allow us to easily extend > video_quality_analysis with new sophisticated video quality metrics. > Also, we can use any kind of video that does not necessarily need to > contain bar codes. Removing the need to decode barcodes also leads to a > big speedup for the tests. > > Bug: webrtc:9642 > Change-Id: I74b0d630b3e1ed44781ad024115ded3143e28f50 > Reviewed-on: https://webrtc-review.googlesource.com/94845 > Reviewed-by: Paulina Hensman <phensman@webrtc.org> > Reviewed-by: Patrik Höglund <phoglund@webrtc.org> > Commit-Queue: Magnus Jedvert <magjed@webrtc.org> > Cr-Commit-Position: refs/heads/master@{#24423} TBR=phoglund@webrtc.org,magjed@webrtc.org,phensman@webrtc.org Change-Id: Ia590b465687b861fe37ed1b14756d4607ca90da1 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: webrtc:9642 Reviewed-on: https://webrtc-review.googlesource.com/95946 Reviewed-by: Magnus Jedvert <magjed@webrtc.org> Commit-Queue: Magnus Jedvert <magjed@webrtc.org> Cr-Commit-Position: refs/heads/master@{#24428}
This commit is contained in:

committed by
Commit Bot

parent
a1cceca02c
commit
3e169ac18c
@ -9,8 +9,10 @@
|
||||
|
||||
import optparse
|
||||
import os
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
|
||||
|
||||
SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
|
||||
@ -35,25 +37,40 @@ def _ParseArgs():
|
||||
parser.add_option('--frame_analyzer', type='string',
|
||||
help='Path to the frame analyzer executable.')
|
||||
parser.add_option('--barcode_decoder', type='string',
|
||||
help=('DEPRECATED'))
|
||||
help=('Path to the barcode decoder script. By default, we '
|
||||
'will assume we can find it in barcode_tools/'
|
||||
'relative to this directory.'))
|
||||
parser.add_option('--ffmpeg_path', type='string',
|
||||
help=('DEPRECATED'))
|
||||
help=('The path to where the ffmpeg executable is located. '
|
||||
'If omitted, it will be assumed to be present in the '
|
||||
'PATH with the name ffmpeg[.exe].'))
|
||||
parser.add_option('--zxing_path', type='string',
|
||||
help=('DEPRECATED'))
|
||||
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_ref', type='string', default='stats_ref.txt',
|
||||
help=('DEPRECATED'))
|
||||
help=('Path to the temporary stats file to be created and '
|
||||
'used for the reference video file. '
|
||||
'Default: %default'))
|
||||
parser.add_option('--stats_file_test', type='string',
|
||||
help=('DEPRECATED'))
|
||||
default='stats_test.txt',
|
||||
help=('Path to the temporary stats file to be created and '
|
||||
'used for the test video file. Default: %default'))
|
||||
parser.add_option('--stats_file', type='string',
|
||||
help=('DEPRECATED'))
|
||||
parser.add_option('--yuv_frame_width', type='int', default=640,
|
||||
help=('DEPRECATED'))
|
||||
help='Width of the YUV file\'s frames. Default: %default')
|
||||
parser.add_option('--yuv_frame_height', type='int', default=480,
|
||||
help=('DEPRECATED'))
|
||||
help='Height of the YUV file\'s frames. Default: %default')
|
||||
parser.add_option('--chartjson_result_file', type='str', default=None,
|
||||
help='Where to store perf results in chartjson format.')
|
||||
options, _ = parser.parse_args()
|
||||
|
||||
if options.stats_file:
|
||||
options.stats_file_test = options.stats_file
|
||||
print ('WARNING: Using deprecated switch --stats_file. '
|
||||
'The new flag is --stats_file_test.')
|
||||
|
||||
if not options.ref_video:
|
||||
parser.error('You must provide a path to the reference video!')
|
||||
if not os.path.exists(options.ref_video):
|
||||
@ -78,23 +95,73 @@ def _DevNull():
|
||||
"""
|
||||
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.
|
||||
|
||||
A simple invocation is:
|
||||
./webrtc/rtc_tools/compare_videos.py
|
||||
./webrtc/rtc_tools/barcode_tools/compare_videos.py
|
||||
--ref_video=<path_and_name_of_reference_video>
|
||||
--test_video=<path_and_name_of_test_video>
|
||||
--frame_analyzer=<path_and_name_of_the_frame_analyzer_executable>
|
||||
|
||||
Notice that the prerequisites for barcode_decoder.py also applies to this
|
||||
script. The means the following executables have to be available in the PATH:
|
||||
* zxing
|
||||
* ffmpeg
|
||||
"""
|
||||
options = _ParseArgs()
|
||||
|
||||
if options.barcode_decoder:
|
||||
path_to_decoder = options.barcode_decoder
|
||||
else:
|
||||
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
|
||||
|
||||
# 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_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,
|
||||
]
|
||||
if options.chartjson_result_file:
|
||||
cmd.append('--chartjson_result_file=%s' % options.chartjson_result_file)
|
||||
|
Reference in New Issue
Block a user