// <copyright file="MatroskaConstants.cs" company="PlaceholderCompany">
// Copyright (c) PlaceholderCompany. All rights reserved.
// </copyright>

namespace Jellyfin.MediaEncoding.Keyframes.Matroska;

/// <summary>
/// Constants for the Matroska identifiers.
/// </summary>
public static class MatroskaConstants
{
    /// <summary>
    /// The Matroska segment container identifier.
    /// </summary>
    internal const ulong SegmentContainer = 0x18538067;

    /// <summary>
    /// The Matroska seek head identifier.
    /// </summary>
    internal const ulong SeekHead = 0x114D9B74;

    /// <summary>
    /// The Matroska seek identifier.
    /// </summary>
    internal const ulong Seek = 0x4DBB;

    /// <summary>
    /// The Matroska info identifier.
    /// </summary>
    internal const ulong Info = 0x1549A966;

    /// <summary>
    /// The Matroska timestamp scale identifier.
    /// </summary>
    internal const ulong TimestampScale = 0x2AD7B1;

    /// <summary>
    /// The Matroska duration identifier.
    /// </summary>
    internal const ulong Duration = 0x4489;

    /// <summary>
    /// The Matroska tracks identifier.
    /// </summary>
    internal const ulong Tracks = 0x1654AE6B;

    /// <summary>
    /// The Matroska track entry identifier.
    /// </summary>
    internal const ulong TrackEntry = 0xAE;

    /// <summary>
    /// The Matroska track number identifier.
    /// </summary>
    internal const ulong TrackNumber = 0xD7;

    /// <summary>
    /// The Matroska track type identifier.
    /// </summary>
    internal const ulong TrackType = 0x83;

    /// <summary>
    /// The Matroska video track type value.
    /// </summary>
    internal const ulong TrackTypeVideo = 0x1;

    /// <summary>
    /// The Matroska subtitle track type value.
    /// </summary>
    internal const ulong TrackTypeSubtitle = 0x11;

    /// <summary>
    /// The Matroska cues identifier.
    /// </summary>
    internal const ulong Cues = 0x1C53BB6B;

    /// <summary>
    /// The Matroska cue time identifier.
    /// </summary>
    internal const ulong CueTime = 0xB3;

    /// <summary>
    /// The Matroska cue point identifier.
    /// </summary>
    internal const ulong CuePoint = 0xBB;

    /// <summary>
    /// The Matroska cue track positions identifier.
    /// </summary>
    internal const ulong CueTrackPositions = 0xB7;

    /// <summary>
    /// The Matroska cue point track number identifier.
    /// </summary>
    internal const ulong CuePointTrackNumber = 0xF7;
}
