()
| 43 | |
| 44 | |
| 45 | def main(): |
| 46 | if len(sys.argv) < 3: |
| 47 | print_usage() |
| 48 | return 2 |
| 49 | |
| 50 | try: |
| 51 | quality_type = sys.argv[1] |
| 52 | test_dataset_filepath = sys.argv[2] |
| 53 | except ValueError: |
| 54 | print_usage() |
| 55 | return 2 |
| 56 | |
| 57 | vmaf_model_path = get_cmd_option(sys.argv, 3, len(sys.argv), '--vmaf-model') |
| 58 | cache_result = cmd_option_exists(sys.argv, 3, len(sys.argv), '--cache-result') |
| 59 | parallelize = cmd_option_exists(sys.argv, 3, len(sys.argv), '--parallelize') |
| 60 | processes = get_cmd_option(sys.argv, 3, len(sys.argv), '--processes') |
| 61 | print_result = cmd_option_exists(sys.argv, 3, len(sys.argv), '--print-result') |
| 62 | suppress_plot = cmd_option_exists(sys.argv, 3, len(sys.argv), '--suppress-plot') |
| 63 | vmaf_phone_model = cmd_option_exists(sys.argv, 3, len(sys.argv), '--vmaf-phone-model') |
| 64 | |
| 65 | pool_method = get_cmd_option(sys.argv, 3, len(sys.argv), '--pool') |
| 66 | if not (pool_method is None |
| 67 | or pool_method in POOL_METHODS): |
| 68 | print('--pool can only have option among {}'.format(', '.join(POOL_METHODS))) |
| 69 | return 2 |
| 70 | |
| 71 | subj_model = get_cmd_option(sys.argv, 3, len(sys.argv), '--subj-model') |
| 72 | |
| 73 | try: |
| 74 | from sureal.subjective_model import SubjectiveModel |
| 75 | if subj_model is not None: |
| 76 | subj_model_class = SubjectiveModel.find_subclass(subj_model) |
| 77 | else: |
| 78 | subj_model_class = SubjectiveModel.find_subclass('MLE_CO_AP2') |
| 79 | except Exception as e: |
| 80 | print("Error: " + str(e)) |
| 81 | return 1 |
| 82 | |
| 83 | save_plot_dir = get_cmd_option(sys.argv, 3, len(sys.argv), '--save-plot') |
| 84 | |
| 85 | plot_wh = get_cmd_option(sys.argv, 3, len(sys.argv), '--plot-wh') |
| 86 | if plot_wh is not None: |
| 87 | try: |
| 88 | mo = re.match(r"([0-9]+)x([0-9]+)", plot_wh) |
| 89 | assert mo is not None |
| 90 | w = mo.group(1) |
| 91 | h = mo.group(2) |
| 92 | w = int(w) |
| 93 | h = int(h) |
| 94 | plot_wh = (w, h) |
| 95 | except Exception as e: |
| 96 | print("Error: plot_wh must be in the format of WxH, example: 5x5") |
| 97 | return 1 |
| 98 | |
| 99 | try: |
| 100 | runner_class = QualityRunner.find_subclass(quality_type) |
| 101 | except Exception as e: |
| 102 | print("Error: " + str(e)) |
no test coverage detected