diff --git a/crates/arr-probe/tests/fixtures/hlg-720p.mkv b/crates/arr-probe/tests/fixtures/hlg-720p.mkv new file mode 100644 index 0000000..9115e12 Binary files /dev/null and b/crates/arr-probe/tests/fixtures/hlg-720p.mkv differ diff --git a/crates/arr-probe/tests/fixtures/sdr-10bit-hevc-720p.mkv b/crates/arr-probe/tests/fixtures/sdr-10bit-hevc-720p.mkv new file mode 100644 index 0000000..e223551 Binary files /dev/null and b/crates/arr-probe/tests/fixtures/sdr-10bit-hevc-720p.mkv differ diff --git a/crates/arr-probe/tests/probe.rs b/crates/arr-probe/tests/probe.rs index 3d09732..4d60d2e 100644 --- a/crates/arr-probe/tests/probe.rs +++ b/crates/arr-probe/tests/probe.rs @@ -86,6 +86,28 @@ async fn hdr10_comes_from_the_transfer_function() { assert_eq!(file.media.hdr, HdrFormat::Hdr10); } +#[tokio::test] +async fn hlg_comes_from_the_transfer_function() { + let file = Prober::new() + .probe(fixture("hlg-720p.mkv")) + .await + .expect("the fixture is readable"); + + assert_eq!(file.video_codec, "hevc"); + assert_eq!(file.media.hdr, HdrFormat::Hlg); +} + +#[tokio::test] +async fn ten_bit_hevc_without_hdr_transfer_is_sdr() { + let file = Prober::new() + .probe(fixture("sdr-10bit-hevc-720p.mkv")) + .await + .expect("the fixture is readable"); + + assert_eq!(file.video_codec, "hevc"); + assert_eq!(file.media.hdr, HdrFormat::Sdr); +} + #[tokio::test] async fn dolby_vision_profile_5_is_reported_as_a_number() { let file = Prober::new() diff --git a/scripts/make-probe-fixtures.sh b/scripts/make-probe-fixtures.sh index 08af9e3..66636c2 100755 --- a/scripts/make-probe-fixtures.sh +++ b/scripts/make-probe-fixtures.sh @@ -55,6 +55,20 @@ ffmpeg -hide_banner -loglevel error -y \ -c:v libx265 -preset ultrafast -crf 51 \ "$out/hdr10-2160p.mkv" +# HLG and SDR both use HEVC here so transfer function, rather than codec bit +# depth, is what distinguishes their probe results. +ffmpeg -hide_banner -loglevel error -y \ + -f lavfi -i "color=c=black:s=1280x720:r=24:d=1" -an \ + -vf "format=yuv420p10le,setparams=color_primaries=bt2020:color_trc=arib-std-b67:colorspace=bt2020nc" \ + -c:v libx265 -preset ultrafast -crf 51 \ + "$out/hlg-720p.mkv" + +ffmpeg -hide_banner -loglevel error -y \ + -f lavfi -i "color=c=black:s=1280x720:r=24:d=1" -an \ + -vf "format=yuv420p10le" \ + -c:v libx265 -preset ultrafast -crf 51 \ + "$out/sdr-10bit-hevc-720p.mkv" + # HEVC base layer for the two Dolby Vision clips. ffmpeg -hide_banner -loglevel error -y \ -f lavfi -i "color=c=black:s=1280x720:r=24:d=1" -an \