#!/bin/bash

###########################################################
# DRM Configuration
###########################################################

KEY_FILE="/home/user/RIDSYSPACKAGE/riptv/live/Testing_drm/enc.key"
KEY_URI="http://103.183.47.210:8585/R-IPTV/getKeyfile"
KEY_IV="2aa96af110f99fd7cfccddee74f52e86"
DRM_ENABLE="0"

# Default Audio Index
AUDIO_INDEX=${AUDIO_INDEX:-0}

###########################################################
# Common Functions
###########################################################

prepare_stream()
{
    echo "========================================"
    echo "Starting : $STREAM_NAME"
    echo "Input    : $INPUT_URL"
    echo "Output   : $OUTPUT_PATH"
    echo "========================================"

    MCAST=$(echo "$INPUT_URL" | cut -d: -f1)
    PORT=$(echo "$INPUT_URL" | cut -d: -f2)

    mkdir -p "$OUTPUT_PATH"

    # Kill existing process
    OLDPID=$(pgrep -f "udp_hls.*$OUTPUT_PATH" | head -n1)

    if [ -n "$OLDPID" ]; then
        echo "Stopping old process PID=$OLDPID"
        kill -9 "$OLDPID" 2>/dev/null
        sleep 1
    fi

    rm -f "$STREAM_PID_PATH"
}

###########################################################
# WITHOUT DRM
###########################################################

run_stream_without_drm()
{
    prepare_stream

    /home/user/RIDSYSPACKAGE/udp_hls_v44 \
        "$MCAST" \
        "$PORT" \
        "$OUTPUT_PATH" \
        "index" \
        "-" \
        "$@" \
        > "$OUTPUT_PATH/stream.log" 2>&1 &

    PID=$!
    echo "$PID" > "$STREAM_PID_PATH"

    echo "Started $STREAM_NAME PID=$PID"

    wait
}

###########################################################
# WITH DRM
###########################################################

run_stream_with_drm()
{
    prepare_stream

    /home/user/RIDSYSPACKAGE/udp_hls_v44 \
        "$MCAST" \
        "$PORT" \
        "$OUTPUT_PATH" \
        "index" \
        "-" \
        "$KEY_FILE" \
        "$KEY_URI" \
        "$KEY_IV" \
        "$DRM_ENABLE" \
        "$@" \
        > "$OUTPUT_PATH/stream.log" 2>&1 &

    PID=$!
    echo "$PID" > "$STREAM_PID_PATH"

    echo "Started $STREAM_NAME PID=$PID"

    wait
}

###########################################################
# PRESETS
###########################################################

# Normal HLS
preset_hls()
{
      run_stream_with_drm
}

# DRM only
preset_hls_drm()
{
    run_stream_with_drm
}

# Audio Encoding + DRM
preset_hls_audio_encoding_drm()
{
    run_stream_with_drm \
        audio_transcode=1 \
        video_transcode=0 \
        audio_map=$AUDIO_INDEX
}

# Video + Audio Encoding + DRM
preset_hls_video_audio_encoding_drm()
{
    run_stream_with_drm \
        audio_transcode=1 \
        video_transcode=1 \
        audio_map=$AUDIO_INDEX
}

###########################################################
# Execute Selected Preset
###########################################################

if declare -f "$FUNCTION_TO_CALL" >/dev/null; then
    $FUNCTION_TO_CALL
else
    echo "ERROR: Function '$FUNCTION_TO_CALL' not found."
    exit 1
fi
