#!/usr/bin/env bash

# Configuration
INPUT="trimmed.wav"
FFMPEG_BIN="/opt/mainconcept/ffmpeg-omx/bin/ffmpeg"
OMX_LIBS="-omx_core libomxil_core.so -omx_name OMX.MainConcept.enc_xheaac.audio"
PROFILE="41" # xHE-AAC / USAC

# Bitrates to process
bitrates=("6k" "12k" "24k" "32k" "64k")

# Create Directory Structure
mkdir -p xhe-aac/wav_backups

# Check if input exists
if [[ ! -f "$INPUT" ]]; then
    echo "Error: $INPUT not found!"
    exit 1
fi

for BITRATE in "${bitrates[@]}"; do
    echo "------------------------------------------------"
    echo "Processing xHE-AAC at $BITRATE..."
    echo "------------------------------------------------"

    OUTPUT_MP4="xhe-aac/output_${BITRATE}.mp4"
    OUTPUT_WAV="xhe-aac/wav_backups/back_to_${BITRATE}.wav"

    # Step 1: Compute Loudness (First Pass)
    $FFMPEG_BIN -i "$INPUT" -c:a omx_enc_xheaac $OMX_LIBS \
        -profile:a "$PROFILE" -omx_param "pass1ExpLoud=loudness.bin" \
        -f null - -y

    # Step 2: Encode to xHE-AAC (Second Pass)
    $FFMPEG_BIN -i "$INPUT" -b:a "$BITRATE" -c:a omx_enc_xheaac $OMX_LIBS \
        -profile:a "$PROFILE" -omx_param "pass2ImpLoud=loudness.bin:streamID=1" \
        "$OUTPUT_MP4" -y

    # Step 3: Convert back to WAV for compatibility
    # Using libfdk_aac as the decoder to ensure USAC/Mps212 support
    echo "Converting back to WAV..."
    ffmpeg -c:a libfdk_aac -i "$OUTPUT_MP4" "$OUTPUT_WAV" -y -hide_banner -loglevel error

done

# Clean up temporary loudness file
rm loudness.bin

echo "------------------------------------------------"
echo "All xHE-AAC tasks complete."
echo "MP4s are in: xhe-aac/"
echo "WAVs are in: xhe-aac/wav_backups/"
