Loading scripts/pyivastest/IvasModeRunner.py +32 −14 Original line number Diff line number Diff line Loading @@ -50,6 +50,8 @@ import pyaudio3dtools.audiofile as af import pyaudio3dtools.audioarray as ar BW_TO_SR = {"nb": 8, "wb": 16, "swb": 32, "fb": 48} RET_CODE_TIMEOUT_EXP = 9999 class Error(Exception): pass Loading Loading @@ -85,6 +87,7 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): console_logger_level="", logger_name="IvasBaseClass", log_level=logging.DEBUG, timeout=None, ): super().__init__( Loading @@ -97,6 +100,7 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): logger_name=logger_name, log_level=log_level, ) self.timeout = timeout self.lock = threading.Lock() self.dec_queue = None self.enc_queue = None Loading Loading @@ -317,13 +321,22 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): + [enc_file_name, dec_file_name] ) cur_dec_result = subprocess.run(dec_cmd, capture_output=True, text=True, env=self.run_env) dec_log.write(" ".join(dec_cmd)) try: cur_dec_result = subprocess.run(dec_cmd, capture_output=True, text=True, env=self.run_env, timeout=self.timeout) returncode = cur_dec_result.returncode dec_log.write(cur_dec_result.stderr) dec_log.write(cur_dec_result.stdout) if cur_dec_result.returncode != 0: except subprocess.TimeoutExpired: returncode = RET_CODE_TIMEOUT_EXP if returncode != 0: fail_string = "Decoding {} to {} failed!" if returncode == RET_CODE_TIMEOUT_EXP: fail_string = fail_string[:-1] + f" due to timeout after {self.timeout} seconds!" self.logger.error( "Decoding {} to {} failed!".format(enc_file_name, dec_file_name) fail_string.format(enc_file_name, dec_file_name) ) self.lock.acquire() if self.stats: Loading @@ -331,9 +344,7 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): self.show_progress() self.results.append( [ "Decoding failed to {} for {}".format( output_config, enc_file_name ), fail_string.format(output_config, enc_file_name), config["ivas_format"], enc_dec_cmd["table_name"], dec_log_name, Loading Loading @@ -706,10 +717,13 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): enc_log = open(enc_log_name, "w") enc_log.write(" ".join(enc_cmd)) enc_result = subprocess.run(enc_cmd, capture_output=True, text=True, env=self.run_env) try: enc_result = subprocess.run(enc_cmd, capture_output=True, text=True, env=self.run_env, timeout=self.timeout) error = enc_result.returncode enc_log.write(enc_result.stderr) enc_log.write(enc_result.stdout) except subprocess.TimeoutExpired: error = RET_CODE_TIMEOUT_EXP if error == 0 and "bitstream_processing" in enc_dec_cmd: bs_in_file = enc_file_name Loading Loading @@ -797,13 +811,17 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): self.lock.release() if error != 0: fail_string = "Encoding failed for {}" if error == RET_CODE_TIMEOUT_EXP: fail_string = fail_string + f" due to timeout after {self.timeout} seconds" self.lock.acquire() if self.stats: self.stats["num_enc_errors"] += 1 self.show_progress() self.results.append( [ "Encoding failed for {}".format(enc_file_name), fail_string.format(enc_file_name), mode, enc_dec_cmd["table_name"], enc_log_name, Loading @@ -811,7 +829,7 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): ) self.failed_modes["enc"].append(mode) self.lock.release() self.logger.error("Encoding failed for {}".format(enc_file_name)) self.logger.error(fail_string.format(enc_file_name)) else: self.logger.info("Encoding successful for {}".format(enc_file_name)) Loading scripts/pyivastest/IvasScriptsCommon.py +14 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,11 @@ class IvasScriptArgParser(argparse.ArgumentParser): default=multiprocessing.cpu_count(), type=int, ) self.add_argument( "--timeout", help="Timeout duration for an individual encoder/decoder run", default=None, ) if not minimal: self.add_argument( "-C", Loading Loading @@ -339,6 +344,15 @@ class IvasScriptArgParser(argparse.ArgumentParser): args["error"] = 1 args["exit"] = 1 if args["timeout"] is not None: try: timeout = float(args["timeout"]) args["timeout"] = timeout except ValueError: print(f"Given timeout value {args['timeout']} is not a valid number.") args["error"] = 1 args["exit"] = 1 if not self.minimal: format_dict = self.get_format_dict(args["format_file"]) if format_dict == -1: Loading scripts/runIvasCodec.py +1 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ class RunIvasCodec(IvasScriptsCommon.IvasScript): sample_rate_dec_out=self.args["srout"], enable_logging=True, logger_name="{}.runner".format(self.logger.name), timeout=self.args["timeout"], ) IvasScriptsCommon.runner_setup(runner, self.args) Loading Loading
scripts/pyivastest/IvasModeRunner.py +32 −14 Original line number Diff line number Diff line Loading @@ -50,6 +50,8 @@ import pyaudio3dtools.audiofile as af import pyaudio3dtools.audioarray as ar BW_TO_SR = {"nb": 8, "wb": 16, "swb": 32, "fb": 48} RET_CODE_TIMEOUT_EXP = 9999 class Error(Exception): pass Loading Loading @@ -85,6 +87,7 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): console_logger_level="", logger_name="IvasBaseClass", log_level=logging.DEBUG, timeout=None, ): super().__init__( Loading @@ -97,6 +100,7 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): logger_name=logger_name, log_level=log_level, ) self.timeout = timeout self.lock = threading.Lock() self.dec_queue = None self.enc_queue = None Loading Loading @@ -317,13 +321,22 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): + [enc_file_name, dec_file_name] ) cur_dec_result = subprocess.run(dec_cmd, capture_output=True, text=True, env=self.run_env) dec_log.write(" ".join(dec_cmd)) try: cur_dec_result = subprocess.run(dec_cmd, capture_output=True, text=True, env=self.run_env, timeout=self.timeout) returncode = cur_dec_result.returncode dec_log.write(cur_dec_result.stderr) dec_log.write(cur_dec_result.stdout) if cur_dec_result.returncode != 0: except subprocess.TimeoutExpired: returncode = RET_CODE_TIMEOUT_EXP if returncode != 0: fail_string = "Decoding {} to {} failed!" if returncode == RET_CODE_TIMEOUT_EXP: fail_string = fail_string[:-1] + f" due to timeout after {self.timeout} seconds!" self.logger.error( "Decoding {} to {} failed!".format(enc_file_name, dec_file_name) fail_string.format(enc_file_name, dec_file_name) ) self.lock.acquire() if self.stats: Loading @@ -331,9 +344,7 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): self.show_progress() self.results.append( [ "Decoding failed to {} for {}".format( output_config, enc_file_name ), fail_string.format(output_config, enc_file_name), config["ivas_format"], enc_dec_cmd["table_name"], dec_log_name, Loading Loading @@ -706,10 +717,13 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): enc_log = open(enc_log_name, "w") enc_log.write(" ".join(enc_cmd)) enc_result = subprocess.run(enc_cmd, capture_output=True, text=True, env=self.run_env) try: enc_result = subprocess.run(enc_cmd, capture_output=True, text=True, env=self.run_env, timeout=self.timeout) error = enc_result.returncode enc_log.write(enc_result.stderr) enc_log.write(enc_result.stdout) except subprocess.TimeoutExpired: error = RET_CODE_TIMEOUT_EXP if error == 0 and "bitstream_processing" in enc_dec_cmd: bs_in_file = enc_file_name Loading Loading @@ -797,13 +811,17 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): self.lock.release() if error != 0: fail_string = "Encoding failed for {}" if error == RET_CODE_TIMEOUT_EXP: fail_string = fail_string + f" due to timeout after {self.timeout} seconds" self.lock.acquire() if self.stats: self.stats["num_enc_errors"] += 1 self.show_progress() self.results.append( [ "Encoding failed for {}".format(enc_file_name), fail_string.format(enc_file_name), mode, enc_dec_cmd["table_name"], enc_log_name, Loading @@ -811,7 +829,7 @@ class IvasModeRunner(IvasModeCollector.IvasModeCollector): ) self.failed_modes["enc"].append(mode) self.lock.release() self.logger.error("Encoding failed for {}".format(enc_file_name)) self.logger.error(fail_string.format(enc_file_name)) else: self.logger.info("Encoding successful for {}".format(enc_file_name)) Loading
scripts/pyivastest/IvasScriptsCommon.py +14 −0 Original line number Diff line number Diff line Loading @@ -141,6 +141,11 @@ class IvasScriptArgParser(argparse.ArgumentParser): default=multiprocessing.cpu_count(), type=int, ) self.add_argument( "--timeout", help="Timeout duration for an individual encoder/decoder run", default=None, ) if not minimal: self.add_argument( "-C", Loading Loading @@ -339,6 +344,15 @@ class IvasScriptArgParser(argparse.ArgumentParser): args["error"] = 1 args["exit"] = 1 if args["timeout"] is not None: try: timeout = float(args["timeout"]) args["timeout"] = timeout except ValueError: print(f"Given timeout value {args['timeout']} is not a valid number.") args["error"] = 1 args["exit"] = 1 if not self.minimal: format_dict = self.get_format_dict(args["format_file"]) if format_dict == -1: Loading
scripts/runIvasCodec.py +1 −0 Original line number Diff line number Diff line Loading @@ -133,6 +133,7 @@ class RunIvasCodec(IvasScriptsCommon.IvasScript): sample_rate_dec_out=self.args["srout"], enable_logging=True, logger_name="{}.runner".format(self.logger.name), timeout=self.args["timeout"], ) IvasScriptsCommon.runner_setup(runner, self.args) Loading