From ca2ab23a971f4de9312bdf7ee5a5aa68c172892e Mon Sep 17 00:00:00 2001 From: Brooke Vibber Date: Sun, 5 Oct 2025 15:57:09 -0700 Subject: [PATCH 1/7] Change --hdr to control hdr output instead of tonemapping of input Keep --hdr-input for the old forcing --- pack-vid | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pack-vid b/pack-vid index 7ca7fa8..88f6fbd 100755 --- a/pack-vid +++ b/pack-vid @@ -30,6 +30,7 @@ $options = [ 'size' => $maxBytes, 'quality' => 1.0, 'bitrate' => 0, + 'hdr-input' => false, 'hdr' => false, 'dither' => false, 'width' => false, @@ -71,7 +72,8 @@ if ( count ( $args ) < 2 ) { " --bitrate=n target bitrate (exclusive with --size)\n" . " --size=n target file size in bytes (exclusive with --bitrate)\n" . " --quality=n fraction of base bitrate to break on (deafult 1.0)\n" . - " --hdr force HDR input processing on\n" . + " --hdr-input force HDR input processing on\n" . + " --hdr force HDR output on (normally SDR output)\n" . " --dither enable dithering in 8-bit downconversion\n" . " --width=n override frame width in pixels\n" . " --height=n override frame height in pixels\n" . @@ -190,9 +192,10 @@ function convert( $src, $dest, $options ) { $cropLeft = intval( $options['crop-left'] ); } // @fixme some files are missing this? trims from qt? - //$hdr = $track->color_primaries === 'bt2020' || $options['hdr']; + //$hdrInput = $track->color_primaries === 'bt2020' || $options['hdr-input']; // pix_fmt: "yuv420p10le" - $hdr = substr( $track->pix_fmt, -5 ) === 'p10le' || $options['hdr']; + $hdrInput = substr( $track->pix_fmt, -5 ) === 'p10le' || $options['hdr-input']; + $hdr = $hdrInput && $options['hdr']; if ( $options['keyframe-int'] ) { $keyframeInt = intval( $options['keyframe-int'] ); } else { @@ -335,8 +338,11 @@ function convert( $src, $dest, $options ) { if ( $vibrance ) { $filters[] = "vibrance=$vibrance"; } + } elseif ( $hdrInput ) { + $filters[] = "format=yuv420p10le"; + } else { + $filters[] = "format=yuv420p"; } - $filters[] = "format=yuv420p"; if ( $crop ) { $filters[] = "crop=w=$frameWidth:h=$frameHeight"; } elseif ( $letterbox ) { From 5544d42cb4f61799b3b7f6a12b87bbbe927a0afa Mon Sep 17 00:00:00 2001 From: Brooke Vibber Date: Sun, 5 Oct 2025 16:03:16 -0700 Subject: [PATCH 2/7] testing hdr packset --- pack-set-hdr | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 pack-set-hdr diff --git a/pack-set-hdr b/pack-set-hdr new file mode 100644 index 0000000..ac6a269 --- /dev/null +++ b/pack-set-hdr @@ -0,0 +1,28 @@ +#!/bin/bash +set -e + +OPTS="" + +for INFILE in "$@" +do + if [[ "$1" =~ ^--.* ]] + then + echo "OPTION: $1" + OPTS="$OPTS $1" + shift + else + echo "FILE: $INFILE" + + COMMON="--vcodec=libsvtav1 --hdr" + SPEED_SMALL="4" + SPEED_LARGE="4" + + SMALL="$COMMON --size=4m --quality=0.5 --preset=$SPEED_SMALL" + MED="$COMMON --size=10m --quality=0.75 --preset=$SPEED_SMALL" + TEN80="$COMMON --bitrate=4000000 --width=1920 --height=1080 --preset=$SPEED_LARGE" + + pack-vid $SMALL $OPTS "$INFILE" "${INFILE%.mp4}-hdr-small.webm" + pack-vid $MED $OPTS "$INFILE" "${INFILE%.mp4}-hdr-med.webm" + pack-vid $TEN80 $OPTS "$INFILE" "${INFILE%.mp4}-hdr-1080p.webm" + fi +done From 22eacccc261079366ff1b85fa8d1fe9be7b1e1c1 Mon Sep 17 00:00:00 2001 From: Brooke Vibber Date: Sun, 5 Oct 2025 16:09:27 -0700 Subject: [PATCH 3/7] woops --- pack-set-hdr | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 pack-set-hdr diff --git a/pack-set-hdr b/pack-set-hdr old mode 100644 new mode 100755 From 6b5d7328a81ebfe56b4f4bf05cb520294d0b8753 Mon Sep 17 00:00:00 2001 From: Brooke Vibber Date: Sun, 5 Oct 2025 16:11:15 -0700 Subject: [PATCH 4/7] whoops --- pack-vid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pack-vid b/pack-vid index 88f6fbd..d3634c1 100755 --- a/pack-vid +++ b/pack-vid @@ -320,6 +320,8 @@ function convert( $src, $dest, $options ) { } $filters[] = "scale=w=$scaleWidth:h=$scaleHeight"; if ( $hdr ) { + $filters[] = "format=yuv420p10le"; + } elseif ( $hdrInput ) { $filters[] = "zscale=t=linear:p=709:m=709"; if ( $exposure ) { $filters[] = "exposure=$exposure"; @@ -338,8 +340,6 @@ function convert( $src, $dest, $options ) { if ( $vibrance ) { $filters[] = "vibrance=$vibrance"; } - } elseif ( $hdrInput ) { - $filters[] = "format=yuv420p10le"; } else { $filters[] = "format=yuv420p"; } From b58863cb1c6a70cc03cb05ce06e18b74c984ebe3 Mon Sep 17 00:00:00 2001 From: Brooke Vibber Date: Sun, 5 Oct 2025 16:25:16 -0700 Subject: [PATCH 5/7] whee --- pack-set-vp9 | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100755 pack-set-vp9 diff --git a/pack-set-vp9 b/pack-set-vp9 new file mode 100755 index 0000000..638bf85 --- /dev/null +++ b/pack-set-vp9 @@ -0,0 +1,28 @@ +#!/bin/bash +set -e + +OPTS="" + +for INFILE in "$@" +do + if [[ "$1" =~ ^--.* ]] + then + echo "OPTION: $1" + OPTS="$OPTS $1" + shift + else + echo "FILE: $INFILE" + + COMMON="--vcodec=libvpxvp9 --hdr" + SPEED_SMALL="2" + SPEED_LARGE="2" + + SMALL="$COMMON --size=4m --quality=0.5 --speed=$SPEED_SMALL" + MED="$COMMON --size=10m --quality=0.75 --speed=$SPEED_SMALL" + TEN80="$COMMON --bitrate=4000000 --width=1920 --height=1080 --preset=$SPEED_LARGE" + + pack-vid $SMALL $OPTS "$INFILE" "${INFILE%.mp4}-hdr-vp9-small.webm" + pack-vid $MED $OPTS "$INFILE" "${INFILE%.mp4}-hdr-vp9-med.webm" + pack-vid $TEN80 $OPTS "$INFILE" "${INFILE%.mp4}-hdr-vp9-1080p.webm" + fi +done From 2b86f64b1401096c09d212a518cdea6056d5e1f1 Mon Sep 17 00:00:00 2001 From: Brooke Vibber Date: Sun, 5 Oct 2025 16:26:49 -0700 Subject: [PATCH 6/7] whoops --- pack-set-vp9 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pack-set-vp9 b/pack-set-vp9 index 638bf85..cfbdf9e 100755 --- a/pack-set-vp9 +++ b/pack-set-vp9 @@ -13,7 +13,7 @@ do else echo "FILE: $INFILE" - COMMON="--vcodec=libvpxvp9 --hdr" + COMMON="--vcodec=libvpx-vp9 --hdr" SPEED_SMALL="2" SPEED_LARGE="2" From 324a3fa064520a3778eab84abfc042a24f421c1c Mon Sep 17 00:00:00 2001 From: Brooke Vibber Date: Sun, 5 Oct 2025 16:32:17 -0700 Subject: [PATCH 7/7] whee --- pack-set-hdr | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pack-set-hdr b/pack-set-hdr index ac6a269..6d168e6 100755 --- a/pack-set-hdr +++ b/pack-set-hdr @@ -21,8 +21,8 @@ do MED="$COMMON --size=10m --quality=0.75 --preset=$SPEED_SMALL" TEN80="$COMMON --bitrate=4000000 --width=1920 --height=1080 --preset=$SPEED_LARGE" - pack-vid $SMALL $OPTS "$INFILE" "${INFILE%.mp4}-hdr-small.webm" - pack-vid $MED $OPTS "$INFILE" "${INFILE%.mp4}-hdr-med.webm" - pack-vid $TEN80 $OPTS "$INFILE" "${INFILE%.mp4}-hdr-1080p.webm" + pack-vid $SMALL $OPTS "$INFILE" "${INFILE%.mp4}-hdr-av1-small.webm" + pack-vid $MED $OPTS "$INFILE" "${INFILE%.mp4}-hdr-av1-med.webm" + pack-vid $TEN80 $OPTS "$INFILE" "${INFILE%.mp4}-hdr-av1-1080p.webm" fi done