feature: Phase 18.1 — derive Opus 320 + seek-index sidecar at ingest

Background-job transcode (ffmpeg/libopus) after source store; pure C# Ogg
walker builds the 0.5s-bucketed granule→byte seek index + captures the
OpusHead/OpusTags setup header into a per-track sidecar in a new track-opus
vault. Best-effort, additive, regenerated on replace-audio.
This commit is contained in:
daniel-c-harvey
2026-06-23 06:30:10 -04:00
parent 8752fc0c98
commit 33d6f34d8a
17 changed files with 1111 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
using DeepDrftAPI.Services.Opus;
namespace DeepDrftTests;
/// <summary>
/// Test double for <see cref="IOpusTranscodeQueue"/>. The background Opus derive is out of scope for the
/// upload/dual-database tests — those assert SQL + source-vault behaviour, which is unchanged by Phase 18
/// (Opus is strictly additive). Enqueuing is a no-op so the upload path under test never spins up a real
/// transcode. Records the enqueued keys in case a test wants to assert the scheduling contract.
/// </summary>
public sealed class NoOpOpusTranscodeQueue : IOpusTranscodeQueue
{
public List<string> Enqueued { get; } = [];
public void Enqueue(string entryKey) => Enqueued.Add(entryKey);
}