namespace SabreTools.Data.Models.PlayJ
{
///
/// PlayJ audio header / CDS entry header
///
/// V1 and V2 variants exist
public abstract class AudioHeader
{
///
/// Signature (0x4B539DFF)
///
public uint Signature { get; set; }
///
/// Version
///
public uint Version { get; set; }
// Header-specific data goes here
///
/// Length of the track name
///
public ushort TrackLength { get; set; }
///
/// Track name (not null-terminated)
///
public string Track { get; set; } = string.Empty;
///
/// Length of the artist name
///
public ushort ArtistLength { get; set; }
///
/// Artist name (not null-terminated)
///
public string Artist { get; set; } = string.Empty;
///
/// Length of the album name
///
public ushort AlbumLength { get; set; }
///
/// Album name (not null-terminated)
///
public string Album { get; set; } = string.Empty;
///
/// Length of the writer name
///
public ushort WriterLength { get; set; }
///
/// Writer name (not null-terminated)
///
public string Writer { get; set; } = string.Empty;
///
/// Length of the publisher name
///
public ushort PublisherLength { get; set; }
///
/// Publisher name (not null-terminated)
///
public string Publisher { get; set; } = string.Empty;
///
/// Length of the label name
///
public ushort LabelLength { get; set; }
///
/// Label name (not null-terminated)
///
public string Label { get; set; } = string.Empty;
///
/// Length of the comments
///
/// Optional field only in some samples
public ushort CommentsLength { get; set; }
///
/// Comments (not null-terminated)
///
/// Optional field only in some samples
public string? Comments { get; set; }
}
}