#!/bin/bash # VMAF Library Optimiser (Linux/Server runner) # This script wraps optimize_library.py with the same interface as the Windows PowerShell version set -e COLOR_RED='\033[0;31m' COLOR_GREEN='\033[0;32m' COLOR_CYAN='\033[0;36m' COLOR_YELLOW='\033[1;33m' COLOR_WHITE='\033[0;37m' COLOR_RESET='\033[0m' log_info() { echo -e "${COLOR_CYAN}$*${COLOR_RESET}" } log_error() { echo -e "${COLOR_RED}ERROR: $*${COLOR_RESET}" >&2 } log_success() { echo -e "${COLOR_GREEN}$*${COLOR_RESET}" } # Default values matching optimize_library.py defaults DIRECTORY="." VMAF="95.0" PRESET="6" WORKERS="1" SAMPLES="4" THOROUGH="" ENCODER="svt-av1" HWACCEL="" # Parse command line arguments while [[ $# -gt 0 ]]; do case "$1" in --directory) DIRECTORY="$2" shift 2 ;; --vmaf) VMAF="$2" shift 2 ;; --preset) PRESET="$2" shift 2 ;; --workers) WORKERS="$2" shift 2 ;; --samples) SAMPLES="$2" shift 2 ;; --thorough) THOROUGH="--thorough" shift ;; --encoder) ENCODER="$2" shift 2 ;; --hwaccel) HWACCEL="$2" shift 2 ;; *) DIRECTORY="$1" shift ;; esac done # Check if python3 is available if ! command -v python3 &> /dev/null; then if ! command -v python &> /dev/null; then log_error "Python 3 not found. Please install Python 3." exit 1 else PYTHON_CMD="python" fi else PYTHON_CMD="python3" fi # Check if optimize_library.py exists SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SCRIPT_PATH="$SCRIPT_DIR/optimize_library.py" if [[ ! -f "$SCRIPT_PATH" ]]; then log_error "optimize_library.py not found in: $SCRIPT_DIR" exit 1 fi # Build command arguments ARGS=( "$PYTHON_CMD" "$SCRIPT_PATH" "$DIRECTORY" --vmaf "$VMAF" --preset "$PRESET" --workers "$WORKERS" --samples "$SAMPLES" --encoder "$ENCODER" ) if [[ -n "$THOROUGH" ]]; then ARGS+=(--thorough) fi if [[ -n "$HWACCEL" ]]; then ARGS+=(--hwaccel "$HWACCEL") fi # Print configuration log_info "========================================" log_info "VMAF Library Optimiser (Linux/Server)" log_info "========================================" echo "" log_info "Directory: $DIRECTORY" log_info "Target VMAF: $VMAF" log_info "Preset: $PRESET" log_info "Workers: $WORKERS" log_info "Samples: $SAMPLES" log_info "Encoder: $ENCODER" if [[ -n "$THOROUGH" ]]; then log_info "Thorough: Yes" fi if [[ -n "$HWACCEL" ]]; then log_info "HW Accel: $HWACCEL" fi echo "" log_info "Running optimize_library.py..." echo "" # Run the optimisation "${ARGS[@]}" EXIT_CODE=$? # Handle exit code if [ $EXIT_CODE -eq 0 ]; then log_success "SUCCESS: Library optimisation completed" else log_error "optimize_library.py exited with code $EXIT_CODE" fi exit $EXIT_CODE