#!/bin/bash


preset_udp_drm() {
/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6 -v -m --synchronous-log -I ip -l $INPUT_INTERFACE -r $INPUT_URL \
 -P scrambler --ignore-scrambled --cw 0000000000000001 --partial-scrambling 7 "" \
 -P filter --pid 0x0014 --pid 0x0010 --pid 0x0001 --negate \
 -P pmt --increment-version --add-ca-descriptor "0x4b19/0x03e8" \
 -P analyze -i 30 -o report.txt \
 -O ip --ttl 10 -l $OUTPUT_INTERFACE $OUTPUT_URL \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH 
chmod -R 0777 $STREAM_PID_PATH
}


preset_udp() {
/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6 -v -m --synchronous-log -I ip -l $INPUT_INTERFACE -r $INPUT_URL \
 -P filter --pid 0x0014 --pid 0x0010 --pid 0x0001 --negate \
 -P analyze -i 30 -o report.txt  \
 -O ip --ttl 10 -l $OUTPUT_INTERFACE $OUTPUT_URL \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH  
chmod -R 0777 $STREAM_PID_PATH
}




preset_mpts_udp_drm() {
/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6 -v -m --synchronous-log -I ip -r $INPUT_URL \
 -P zap "$CH_NAME" \
 -P scrambler --ignore-scrambled --cw 0000000000000001 --partial-scrambling 7 "" \
 -P filter --pid 0x0014 --pid 0x0010 --pid 0x0001 --negate \
 -P pmt --increment-version --add-ca-descriptor "0x4b19/0x03e8" \
 -P analyze -i 30 -o report.txt \
 -O ip --ttl 10 -l $OUTPUT_INTERFACE $OUTPUT_URL \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH
chmod -R 0777 $STREAM_PID_PATH
}



preset_mpts_udp() {
/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6 -v -m --synchronous-log -I ip -r $INPUT_URL \
 -P zap "$CH_NAME" \
 -P filter --pid 0x0014 --pid 0x0010 --pid 0x0001 --negate \
 -P svrename --provider "$PROVIDER" \
 -P analyze -i 30 -o report.txt  \
 -O ip --ttl 10 -l $OUTPUT_INTERFACE $OUTPUT_URL  \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH  

chmod -R 0777 $STREAM_PID_PATH
}



preset_hls_drm() {
umask 0002
chmod -R 0777 /home/user/RIDSYSPACKAGE/riptv/live/

    umask 0002

    # -------------------------------
    # CLEAN & KILL HELPER
    # -------------------------------
    stop_pid() {
        local pid="$1"
        local name="$2"

        [ -z "$pid" ] && return
        if ! kill -0 "$pid" 2>/dev/null; then return; fi

        kill "$pid" 2>/dev/null || true

        for i in {1..5}; do
            kill -0 "$pid" 2>/dev/null || return
            sleep 1
        done

        kill -9 "$pid" 2>/dev/null || true
    }

    # -------------------------------
    # KILL OLD PIPELINE
    # -------------------------------
    for pid in $(pgrep -f "$INPUT_URL" 2>/dev/null); do
        stop_pid "$pid" "old pipeline"
    done
    
/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6 -v -m --synchronous-log -I ip $INPUT_URL \
 -P analyze -i 30 -o report.txt  \
 -P regulate \
 -P scrambler --ignore-scrambled --cw 0000000000000001 --partial-scrambling 7 "" \
 -O hls --duration 2 --live 15 -p index.m3u8 index.ts \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH 
 
chmod -R 0777 $STREAM_PID_PATH
}


preset_hls() {
umask 0002
chmod -R 0777 /home/user/RIDSYSPACKAGE/riptv/live/

    # -------------------------------
    # CLEAN & KILL HELPER
    # -------------------------------
    stop_pid() {
        local pid="$1"
        local name="$2"

        [ -z "$pid" ] && return
        if ! kill -0 "$pid" 2>/dev/null; then return; fi

        kill "$pid" 2>/dev/null || true

        for i in {1..5}; do
            kill -0 "$pid" 2>/dev/null || return
            sleep 1
        done

        kill -9 "$pid" 2>/dev/null || true
    }

    # -------------------------------
    # KILL OLD PIPELINE
    # -------------------------------
    for pid in $(pgrep -f "$INPUT_URL" 2>/dev/null); do
        stop_pid "$pid" "old pipeline"
    done

/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6  -v -m --synchronous-log -I ip $INPUT_URL \
 -P analyze -i 30 -o report.txt  \
 -P regulate \
 -O hls --duration 2 --live 15 -p index.m3u8 index.ts \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH 
chmod -R 0777 $STREAM_PID_PATH
}


preset_mpts_hls_drm() {
umask 0002
chmod -R 0777 /home/user/RIDSYSPACKAGE/riptv/live/
/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6  -v -m --synchronous-log -I ip $INPUT_URL \
 -P zap "$CH_NAME" \
 -P analyze -i 30 -o report.txt  \
 -P regulate \
 -P scrambler --ignore-scrambled --cw 0000000000000001 --partial-scrambling 7 "" \
 -O hls --duration 2 --live 15 -p index.m3u8 index.ts \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH 
chmod -R 0777 $STREAM_PID_PATH
}

preset_mpts_hls() {
umask 0002
chmod -R 0777 /home/user/RIDSYSPACKAGE/riptv/live/
/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6  -v -m --synchronous-log -I ip $INPUT_URL \
 -P zap "$CH_NAME" \
 -P analyze -i 30 -o report.txt  \
 -P regulate \
 -O hls --duration 2 --live 15 -p index.m3u8 index.ts \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH 
chmod -R 0777 $STREAM_PID_PATH
}

preset_hls_to_udp_drm() {
umask 0002
chmod -R 0777 /home/user/RIDSYSPACKAGE/riptv/live/
/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6  -v -m --synchronous-log -I hls $INPUT_URL \
 -P svrename -i 10 \
 -P scrambler --ignore-scrambled --cw 0000000000000001 --partial-scrambling 7 "" \
 -P filter --pid 0x0014 --pid 0x0010 --pid 0x0001 --negate \
 -P pmt --increment-version --add-ca-descriptor "0x4b19/0x03e8" \
 -P analyze -i 30 -o report.txt \
 -O ip --ttl 10 -l $OUTPUT_INTERFACE $OUTPUT_URL \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH  
chmod -R 0777 $STREAM_PID_PATH
}


preset_hls_to_udp() {
/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6  -v -m --synchronous-log -I hls $INPUT_URL \
 -P filter --pid 0x0014 --pid 0x0010 --pid 0x0001 --negate \
 -P analyze -i 30 -o report.txt  \
 -O ip --ttl 10 -l $OUTPUT_INTERFACE $OUTPUT_URL  \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH 
chmod -R 0777 $STREAM_PID_PATH
}

preset_hls_to_hls() {
/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6  -v -m --synchronous-log -I hls $INPUT_URL \
 -P analyze -i 30 -o report.txt  \
 -P regulate \
 -O hls --duration 2 --live 15 -p index.m3u8 index.ts \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH 

chmod -R 0777 $STREAM_PID_PATH
}

preset_hls_to_hls_drm() {
/etc/systemd/ridsys_engine/Ridsys-RStreamer_Engine-1.6  -v -m --synchronous-log -I hls $INPUT_URL \
 -P analyze -i 30 -o report.txt  \
 -P regulate \
 -P scrambler --ignore-scrambled --cw 0000000000000001 --partial-scrambling 7 "" \
 -O hls --duration 2 --live 15 -p index.m3u8 index.ts \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH 
chmod -R 0777 $STREAM_PID_PATH

}



preset_hls_360p() {

if [ ! -d playlist ]; then
  mkdir playlist
fi

if [ ! -d playlist/360p ]; then
  mkdir playlist/360p
fi

ffmpeg -threads 3 -i "$INPUT_URL?overrun_nonfatal=1&fifo_size=2000000" \
 -r 25 -g 25 -sc_threshold 0 -aspect 16:9 \
  -s:v 640x360 -c:v libx264 -preset superfast -crf 26 -b:v 400k \
  -c:a aac -b:a 128k -ac 2 \
  -threads 4 -f hls -hls_time 3 -hls_wrap 15 \
  "playlist/360p/manifest.m3u8" \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH


}


preset_hls_720p() {

if [ ! -d playlist ]; then
  mkdir playlist
fi


if [ ! -d playlist/720p ]; then
  mkdir playlist/720p
fi

ffmpeg -threads 3 -i "$INPUT_URL?overrun_nonfatal=1&fifo_size=2000000" \
 -r 25 -g 25 -sc_threshold 0 -aspect 16:9 \
  -s:v 720x576 -c:v libx264 -preset superfast -crf 26 -b:v 400k \
  -c:a aac -b:a 128k -ac 2 \
  -threads 4 -f hls -hls_time 3 -hls_wrap 15 \
  "playlist/720p/manifest.m3u8" \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH

}


preset_hls_1080p() {

if [ ! -d playlist ]; then
  mkdir playlist
fi


if [ ! -d playlist/1080p ]; then
  mkdir playlist/1080p
fi

ffmpeg -threads 3 -i "$INPUT_URL?overrun_nonfatal=1&fifo_size=2000000" \
 -r 25 -g 25 -sc_threshold 0 -aspect 16:9 \
  -s:v 1920x1080 -c:v libx264 -preset superfast -crf 26 -b:v 400k \
  -c:a aac -b:a 128k -ac 2 \
  -threads 4 -f hls -hls_time 3 -hls_wrap 15 \
  "playlist/1080p/manifest.m3u8" \
</dev/null > /dev/null 2>&1 2>file.txt & echo $! > $STREAM_PID_PATH

}


call_function() {
local func_name="$1"
if declare -f "$func_name" > /dev/null; then
$func_name
else
echo "Function $func_name not found"
fi

}

call_function "$FUNCTION_TO_CALL"      

