Revert "Remove deprecated barcode scanning functionality"
This reverts commit ff292f30d9a4b7a56aea872fe488d342f47202a3.
Reason for revert: issues with downstream projects
Original change's description:
> Remove deprecated barcode scanning functionality
>
> This code is not used anymore, but it's not possible to land this CL
> until issue webrtc:9665 is fixed.
>
> Bug: webrtc:9642,webrtc:9665
> Change-Id: Idb68e9bdf51b4239788cd6869dcb44dae87d7c56
> Reviewed-on: https://webrtc-review.googlesource.com/c/95951
> 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@{#25289}
TBR=phoglund@webrtc.org,mbonadei@webrtc.org,magjed@webrtc.org,phensman@webrtc.org
Change-Id: I440025777a17d8580526289d4198da1fc3f7d62e
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: webrtc:9642, webrtc:9665
Reviewed-on: https://webrtc-review.googlesource.com/c/107348
Reviewed-by: Alessio Bazzica <alessiob@webrtc.org>
Commit-Queue: Alessio Bazzica <alessiob@webrtc.org>
Cr-Commit-Position: refs/heads/master@{#25291}
diff --git a/rtc_tools/compare_videos.py b/rtc_tools/compare_videos.py
index 0cb4a6d..1102b3a 100755
--- a/rtc_tools/compare_videos.py
+++ b/rtc_tools/compare_videos.py
@@ -46,15 +46,25 @@
parser.add_option('--vmaf_phone_model', action='store_true',
help='Whether to use phone model in VMAF.')
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,
@@ -65,6 +75,11 @@
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):
@@ -93,6 +108,34 @@
"""
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 _RunFrameAnalyzer(options, yuv_directory=None):
"""Run frame analyzer to compare the videos and print output."""
@@ -171,9 +214,27 @@
Running vmaf requires the following arguments:
--vmaf, --vmaf_model, --yuv_frame_width, --yuv_frame_height
+
+ 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
+
if options.vmaf:
try:
# Directory to save temporary YUV files for VMAF in frame_analyzer.