1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// Copyright (c) 2026 Christoph Gaffga
// SPDX-License-Identifier: GPL-3.0-only
// https://github.com/cgaffga/phasmcore
//
// §Stealth.L4.6.5 — One-shot dump of phasm encoded Annex-B for
// `ffmpeg -bsf trace_headers` PPS+slice-header diff against the
// same-fixture x264-medium reference.
//
// `#[ignore]` because this runs the full §30D-C orchestrator on a
// 1080p × 10-frame IBPBP fixture (~30 sec). Run with:
// cargo test --features cabac-stego --test h264_pps_trace_dump -- --ignored
#![cfg(feature = "cabac-stego")]
use phasm_core::{
h264_stego_encode_yuv_string_4domain_multigop_with_pattern, GopPattern,
};
#[test]
#[ignore]
fn dump_phasm_pps_for_trace() {
let yuv_path = "/tmp/img4138_1080p_f10.yuv";
let yuv = std::fs::read(yuv_path).expect(
"missing /tmp/img4138_1080p_f10.yuv — run \
core/test-vectors/video/h264/real-world/source/regen.sh",
);
let stego = h264_stego_encode_yuv_string_4domain_multigop_with_pattern(
&yuv,
1920,
1072,
10,
GopPattern::Ibpbp { gop: 5, b_count: 1 },
"trace-dump",
"phasm-pps-trace-dump",
)
.expect("phasm encode");
let out = std::env::temp_dir().join("phasm_pps_trace_fixture.h264");
std::fs::write(&out, &stego).expect("write phasm h264");
eprintln!(
"wrote {} bytes to {}",
stego.len(),
out.display()
);
}