#!/bin/sh # # Regenerate superhero_offset_200s.flac — the real-audio fixture behind VR-014, the # audio-signature offset-recovery validation. # # sh make_offset_fixture.sh /path/to/clips # # Why real audio and not a second synthetic tone: jray_audio_v1_tone.flac pins # the *arithmetic* (IR-005) and is deliberately built so every band and every # energy class appears. It cannot answer the question VR-014 asks — whether the # peak-bin sequence of ordinary film audio is distinctive enough that sliding # one signature against another finds the true alignment and only the true # alignment. Tones are pathologically easy for that; dialogue and score are not. # # Source: scene clips from SuperHero (TRECVID DVU development set), the corpus # this repo already uses for the replay fixtures — tests/fixtures/dumps/superhero.h5 # are dumps of these same clips. Each is under the 120 s window on its own # (29-77 s), so they are concatenated in scene order to make a source long # enough that a 120 s window can slide inside it. # # 200 s is chosen, not arbitrary: the window is 120 s and the match search is # capped at +/-600 frames (~55.7 s), so a source of 120 + 56 s is the shortest # one that can place two windows at the edge of the cap. The 200 s here leaves # room to go past it as well, which is what lets the test check that an # out-of-range offset is declined rather than guessed. # # Encoded mono at 11025 Hz, 16-bit, which is exactly what the signature decodes # to anyway. That keeps a 200 s fixture at ~2.4 MB instead of ~20 MB, and makes # every trim below sample-exact — the test measures offset recovery, not the # resampler, which tests/test_audio_signature.cpp already covers (UT-103). # # FLAC because it is lossless: the decoded PCM is the same on every machine, so # a signature computed from this file is reproducible. A lossy fixture would # make the measurement depend on the decoder version. # # sha256 of the committed file: # 4a952e46a090a9acd9eae56996250ec03e08e0d04ee139ac0a42f1690a536c83 # A regenerated file that hashes differently means the source clips or the # encoder changed, and VR-014's recorded numbers should be re-measured — the # offsets will still be exact, but the scores are this audio's. set -eu CLIPS="${1:-../../../../hero}" OUT="$(dirname "$0")/superhero_offset_200s.flac" LIST="$(mktemp)" trap 'rm -f "$LIST"' EXIT for scene in 13 27 28 31 46; do clip="$CLIPS/SuperHero-$scene.webm" [ -f "$clip" ] || { echo "missing clip: $clip" >&2; exit 1; } echo "file '$(cd "$(dirname "$clip")" && pwd)/$(basename "$clip")'" >> "$LIST" done ffmpeg -nostdin -v error -y -f concat -safe 0 -i "$LIST" \ -vn -t 200 -ac 1 -ar 11025 -sample_fmt s16 \ -c:a flac -compression_level 12 "$OUT" echo "wrote $OUT" sha256sum "$OUT" 2>/dev/null || shasum -a 256 "$OUT"