diff --git a/tools/device/demo_hdmi.sh b/tools/device/demo_hdmi.sh index 75b1148..89d9148 100644 --- a/tools/device/demo_hdmi.sh +++ b/tools/device/demo_hdmi.sh @@ -2,7 +2,7 @@ set -e BIN_DIR=/mnt/flash/plus/kp_firmware/kp_firmware_0/kp_firmware/bin -FW=/mnt/flash/vienna/kp_firmware_host_stream +FW=$BIN_DIR/kp_firmware_host_stream INI=$BIN_DIR/ini/host_stream.ini cd $BIN_DIR @@ -19,7 +19,7 @@ rm -f /dev/shm/* PIXFMT=${PIXFMT:-NV12} # Model settings — read from INI as default, env var overrides at runtime -_ini_val() { grep "^$1" "$INI" | sed 's/.*= *//' | tr -d '"' | awk '{print $1}'; } +_ini_val() { grep -i "^$1" "$INI" | sed 's/.*= *//' | tr -d '"' | awk '{print $1}'; } MODEL_PATH=${MODEL_PATH:-$(_ini_val ModelPath)} MODEL_ID=${MODEL_ID:-$(_ini_val ModelId)} JOB_ID=${JOB_ID:-$(_ini_val JobId)} @@ -27,20 +27,18 @@ JOB_ID=${JOB_ID:-$(_ini_val JobId)} # HDMI demo profile: inference on stream1 (724x362) + HDMI output from stream0 (1920x1080). # InferenceStream=1: NPU receives 724x362 frames (model native res) — ~8x faster than InferenceStream=0. # StreamCount=2: creates both stream0 (1920x1080, draw_box+HDMI) and stream1 (724x362, inference) SSMs. -sed -i 's/^NnmSource.*/NnmSource = 0/' $INI -sed -i 's/^GetImageBufMode.*/GetImageBufMode = 0/' $INI -sed -i 's/^InferenceStream.*/InferenceStream = 1/' $INI -sed -i 's/^StreamCount.*/StreamCount = 2/' $INI -sed -i 's/^voc_enable.*/voc_enable = 1/' $INI -sed -i "s/^PixFmt.*/PixFmt = ${PIXFMT}/" $INI +sed -i 's/^[Nn][Nn][Mm][Ss]ource.*/NnmSource = 0/' $INI +sed -i 's/^[Gg]et[Ii]mage[Bb]uf[Mm]ode.*/GetImageBufMode = 0/' $INI +sed -i 's/^[Ii]nference[Ss]tream.*/InferenceStream = 1/' $INI +sed -i 's/^[Ss]tream[Cc]ount.*/StreamCount = 2/' $INI +sed -i 's/^[Vv]oc_enable.*/voc_enable = 1/' $INI +sed -i "s/^[Pp]ix[Ff]mt.*/PixFmt = ${PIXFMT}/" $INI # DrawBoxEnable: respect INI value set by web UI (do not override) echo "=== HDMI Demo INI ===" -grep -E "ModelPath|ModelId|JobId|NnmSource|GetImageBufMode|InferenceStream|StreamCount|voc_enable|PixFmt" $INI +grep -iE "ModelPath|ModelId|JobId|NnmSource|GetImageBufMode|InferenceStream|StreamCount|voc_enable|PixFmt" $INI echo "=== Model (runtime): MODEL_PATH=$MODEL_PATH MODEL_ID=$MODEL_ID JOB_ID=$JOB_ID ===" echo "=== Start Firmware (HDMI demo) ===" LD_LIBRARY_PATH=/mnt/flash/vienna/lib $FW -m "$MODEL_PATH" -i "$MODEL_ID" -j "$JOB_ID" & -FW_PID=$! -echo "Firmware PID: $FW_PID" -wait $FW_PID +FW_ \ No newline at end of file diff --git a/tools/device/demo_rtsp.sh b/tools/device/demo_rtsp.sh index 15b7ff1..8c634dc 100644 --- a/tools/device/demo_rtsp.sh +++ b/tools/device/demo_rtsp.sh @@ -2,7 +2,7 @@ set -e BIN_DIR=/mnt/flash/plus/kp_firmware/kp_firmware_0/kp_firmware/bin -FW=/mnt/flash/vienna/kp_firmware_host_stream +FW=$BIN_DIR/kp_firmware_host_stream INI=$BIN_DIR/ini/host_stream.ini cd $BIN_DIR @@ -21,22 +21,22 @@ PIXFMT=${PIXFMT:-NV12} INF_STREAM=${INF_STREAM:-1} # Model settings — read from INI as default, env var overrides at runtime -_ini_val() { grep "^$1" "$INI" | sed 's/.*= *//' | tr -d '"' | awk '{print $1}'; } +_ini_val() { grep -i "^$1" "$INI" | sed 's/.*= *//' | tr -d '"' | awk '{print $1}'; } MODEL_PATH=${MODEL_PATH:-$(_ini_val ModelPath)} MODEL_ID=${MODEL_ID:-$(_ini_val ModelId)} JOB_ID=${JOB_ID:-$(_ini_val JobId)} # RTSP demo profile: single-process source + one encoder stream + RTSP server. -sed -i 's/^NnmSource.*/NnmSource = 0/' $INI -sed -i 's/^GetImageBufMode.*/GetImageBufMode = 0/' $INI -sed -i "s/^InferenceStream.*/InferenceStream = ${INF_STREAM}/" $INI -sed -i 's/^StreamCount.*/StreamCount = 2/' $INI -sed -i "s/^PixFmt.*/PixFmt = ${PIXFMT}/" $INI -sed -i 's/^voc_enable.*/voc_enable = 0/' $INI +sed -i 's/^[Nn][Nn][Mm][Ss]ource.*/NnmSource = 0/' $INI +sed -i 's/^[Gg]et[Ii]mage[Bb]uf[Mm]ode.*/GetImageBufMode = 0/' $INI +sed -i "s/^[Ii]nference[Ss]tream.*/InferenceStream = ${INF_STREAM}/" $INI +sed -i 's/^[Ss]tream[Cc]ount.*/StreamCount = 2/' $INI +sed -i "s/^[Pp]ix[Ff]mt.*/PixFmt = ${PIXFMT}/" $INI +sed -i 's/^[Vv]oc_enable.*/voc_enable = 0/' $INI # DrawBoxEnable: respect INI value set by web UI (do not override) echo "=== RTSP Demo INI ===" -grep -E "ModelPath|ModelId|JobId|NnmSource|GetImageBufMode|InferenceStream|StreamCount|voc_enable|PixFmt|DrawBoxEnable" $INI +grep -iE "ModelPath|ModelId|JobId|NnmSource|GetImageBufMode|InferenceStream|StreamCount|voc_enable|PixFmt|DrawBoxEnable" $INI echo "=== Model (runtime): MODEL_PATH=$MODEL_PATH MODEL_ID=$MODEL_ID JOB_ID=$JOB_ID ===" echo "=== Start Firmware (RTSP demo) ===" @@ -51,6 +51,4 @@ RTSP_PID=$! echo "Firmware PID: $FW_PID" echo "RTSP PID: $RTSP_PID" -echo "RTSP URL: rtsp://192.168.3.10/live1.sdp" - -wait $FW_PID +echo "RTSP U \ No newline at end of file diff --git a/tools/device/demo_rtsp_hdmi.sh b/tools/device/demo_rtsp_hdmi.sh index 7cf1b29..0275c38 100644 --- a/tools/device/demo_rtsp_hdmi.sh +++ b/tools/device/demo_rtsp_hdmi.sh @@ -3,7 +3,7 @@ set -e BIN_DIR=/mnt/flash/plus/kp_firmware/kp_firmware_0/kp_firmware/bin -FW=/mnt/flash/vienna/kp_firmware_host_stream +FW=$BIN_DIR/kp_firmware_host_stream INI=$BIN_DIR/ini/host_stream.ini cd $BIN_DIR @@ -20,7 +20,7 @@ rm -f /dev/shm/* PIXFMT=${PIXFMT:-NV12} # Model settings — read from INI as default, env var overrides at runtime -_ini_val() { grep "^$1" "$INI" | sed 's/.*= *//' | tr -d '"' | awk '{print $1}'; } +_ini_val() { grep -i "^$1" "$INI" | sed 's/.*= *//' | tr -d '"' | awk '{print $1}'; } MODEL_PATH=${MODEL_PATH:-$(_ini_val ModelPath)} MODEL_ID=${MODEL_ID:-$(_ini_val ModelId)} JOB_ID=${JOB_ID:-$(_ini_val JobId)} @@ -28,17 +28,17 @@ JOB_ID=${JOB_ID:-$(_ini_val JobId)} # Combined RTSP + HDMI profile. # InferenceStream=1 uses stream1 (724x362) for inference. # DrawOnResize=1 so segmentation overlay is drawn on resize streams (RTSP streams). -sed -i 's/^NnmSource.*/NnmSource = 0/' $INI -sed -i 's/^GetImageBufMode.*/GetImageBufMode = 0/' $INI -sed -i 's/^InferenceStream.*/InferenceStream = 1/' $INI -sed -i 's/^StreamCount.*/StreamCount = 2/' $INI -sed -i 's/^voc_enable.*/voc_enable = 1/' $INI -sed -i "s/^PixFmt.*/PixFmt = ${PIXFMT}/" $INI +sed -i 's/^[Nn][Nn][Mm][Ss]ource.*/NnmSource = 0/' $INI +sed -i 's/^[Gg]et[Ii]mage[Bb]uf[Mm]ode.*/GetImageBufMode = 0/' $INI +sed -i 's/^[Ii]nference[Ss]tream.*/InferenceStream = 1/' $INI +sed -i 's/^[Ss]tream[Cc]ount.*/StreamCount = 2/' $INI +sed -i 's/^[Vv]oc_enable.*/voc_enable = 1/' $INI +sed -i "s/^[Pp]ix[Ff]mt.*/PixFmt = ${PIXFMT}/" $INI # DrawBoxEnable: respect INI value set by web UI (do not override) # DrawOnResize: not needed — firmware auto-disables it when InferenceStream != 0 echo "=== RTSP+HDMI Demo INI ===" -grep -E "ModelPath|ModelId|JobId|NnmSource|GetImageBufMode|InferenceStream|StreamCount|voc_enable|PixFmt|DrawBoxEnable|DrawOnResize" $INI +grep -iE "ModelPath|ModelId|JobId|NnmSource|GetImageBufMode|InferenceStream|StreamCount|voc_enable|PixFmt|DrawBoxEnable|DrawOnResize" $INI echo "=== Model (runtime): MODEL_PATH=$MODEL_PATH MODEL_ID=$MODEL_ID JOB_ID=$JOB_ID ===" echo "=== Start Firmware (RTSP+HDMI demo) ===" @@ -53,6 +53,4 @@ RTSP_PID=$! echo "Firmware PID: $FW_PID" echo "RTSP PID: $RTSP_PID" -echo "RTSP URL: rtsp://192.168.3.10/live1.sdp" - -wait $FW_PID +echo "RTSP U \ No newline at end of file diff --git a/tools/device/deploy.sh b/tools/device/deploy.sh index cac59d3..502b6fd 100644 --- a/tools/device/deploy.sh +++ b/tools/device/deploy.sh @@ -15,7 +15,7 @@ set -e HOST_URL="http://192.168.0.105:8080" BIN_DIR=/mnt/flash/plus/kp_firmware/kp_firmware_0/kp_firmware/bin -FW=/mnt/flash/vienna/kp_firmware_host_stream +FW=$BIN_DIR/kp_firmware_host_stream INI=$BIN_DIR/ini/host_stream.ini # ── 一次性 ISP 資源修正 ───────────────────────────────────────────────────── diff --git a/tools/device/kCurl b/tools/device/kCurl new file mode 100644 index 0000000..4d3a503 Binary files /dev/null and b/tools/device/kCurl differ diff --git a/web_serve.py b/web_serve.py index 9d64acd..bd31abd 100644 --- a/web_serve.py +++ b/web_serve.py @@ -48,12 +48,12 @@ DEMO_HDMI_SRC = SCRIPT_DIR / "tools" / "device" / "demo_hdmi.sh" DEMO_RTSP_HDMI_SRC = SCRIPT_DIR / "tools" / "device" / "demo_rtsp_hdmi.sh" START_SH_SRC = SCRIPT_DIR / "tools" / "device" / "start.sh" NEF_DIR = SCRIPT_DIR / "nef" -KCURL_SRC = Path("/home/user/Documents/GOFACE/奧創雲/kCurl-1.1.1-release/kCurl-linux-armv7") +KCURL_SRC = SCRIPT_DIR / "tools" / "device" / "kCurl" CONFIG_FILE = SCRIPT_DIR / ".web_config.json" PROFILES_FILE = SCRIPT_DIR / "model_profiles.json" BIN_DIR_DEVICE = "/mnt/flash/plus/kp_firmware/kp_firmware_0/kp_firmware/bin" -FW_PATH_DEVICE = "/mnt/flash/vienna/kp_firmware_host_stream" +FW_PATH_DEVICE = f"{BIN_DIR_DEVICE}/kp_firmware_host_stream" DEFAULT_CONFIG = { "host_ip": "192.168.3.1",