using System.Collections.ObjectModel; using System.Text.Json.Serialization; namespace Jellyfin.Plugin.JRay.Models; /// /// Root object of a scene-actor-extraction "truth" file /// (schema_version 1, minimal verbosity). See SPEC.md ยง1. /// /// /// JRay owns this format; the extraction pipeline is its producer and the /// public server carries a derived envelope. Because three repos ship /// independently, breaking changes are batched into one coordinated /// schema_version bump rather than made piecemeal. /// /// This type is still the v1 shape. JR-002 replaces it: anneal_sec out, /// an extraction provenance block and a cut block in, and /// scenes becoming objects that carry belief and identification route. /// // TRACES: JR-001, JR-002 | SR-003 public class TruthFile { /// /// Gets or sets the schema version of this file. /// [JsonPropertyName("schema_version")] public int SchemaVersion { get; set; } /// /// Gets or sets the source media path at extraction time (informational). /// [JsonPropertyName("movie")] public string Movie { get; set; } = string.Empty; /// /// Gets or sets the sampling rate (frames per second) used during extraction. /// [JsonPropertyName("sample_fps")] public double SampleFps { get; set; } /// /// Gets or sets the gap (seconds) below which consecutive detections were merged into one scene. /// [JsonPropertyName("anneal_sec")] public double AnnealSec { get; set; } /// /// Gets the list of actors in the film, each with their scene-presence windows. /// [JsonPropertyName("actors")] [JsonObjectCreationHandling(JsonObjectCreationHandling.Populate)] public Collection Actors { get; } = new(); }