namespace Jellyfin.Plugin.JRay.Models;
///
/// Which comparison produced the offset that was applied to a fetched manifest.
///
///
/// Recorded because the two are not equally strong evidence. The server has
/// never seen the local file, so its offset is at best a runtime-difference
/// inference; a local alignment compares the manifest's own audio signature
/// against the file the windows will actually be drawn over.
///
public enum AlignmentSource
{
///
/// The server's offset was applied — no local alignment was possible.
///
///
/// Either signatures are switched off, the item is under the 120 s window,
/// the manifest carried no signature, or the decode failed. A signature is
/// an enhancement, so every one of those degrades to this rather than
/// failing the fetch.
///
Server = 0,
///
/// A local audio alignment was computed and its offset was applied.
///
Local = 1,
///
/// A local alignment was attempted and the two signatures did not match at
/// any tier; the server's offset was applied and the disagreement recorded.
///
///
/// Deliberately not a failure. The audio may legitimately differ — a
/// different language track, a heavy re-encode — and a signature must never
/// be able to break a fetch. But it is the strongest available hint that a
/// manifest describes different content, so it is surfaced as a caveat
/// rather than discarded.
///
LocalMismatch = 2,
}