Files
seanime-docker/seanime-2.9.10/internal/mkvparser/structs.go
2025-09-20 14:08:38 +01:00

116 lines
2.6 KiB
Go

package mkvparser
import (
"time"
)
// Info element and its children
type Info struct {
Title string
MuxingApp string
WritingApp string
TimecodeScale uint64
Duration float64
DateUTC time.Time
}
// TrackEntry represents a track in the MKV file
type TrackEntry struct {
TrackNumber uint64
TrackUID uint64
TrackType uint64
FlagEnabled uint64
FlagDefault uint64
FlagForced uint64
DefaultDuration uint64
Name string
Language string
LanguageIETF string
CodecID string
CodecPrivate []byte
Video *VideoTrack
Audio *AudioTrack
ContentEncodings *ContentEncodings
}
// VideoTrack contains video-specific track data
type VideoTrack struct {
PixelWidth uint64
PixelHeight uint64
}
// AudioTrack contains audio-specific track data
type AudioTrack struct {
SamplingFrequency float64
Channels uint64
BitDepth uint64
}
// ContentEncodings contains information about how the track data is encoded
type ContentEncodings struct {
ContentEncoding []ContentEncoding
}
// ContentEncoding describes a single encoding applied to the track data
type ContentEncoding struct {
ContentEncodingOrder uint64
ContentEncodingScope uint64
ContentEncodingType uint64
ContentCompression *ContentCompression
}
// ContentCompression describes how the track data is compressed
type ContentCompression struct {
ContentCompAlgo uint64
ContentCompSettings []byte
}
// ChapterAtom represents a single chapter point
type ChapterAtom struct {
ChapterUID uint64
ChapterTimeStart uint64
ChapterTimeEnd uint64
ChapterDisplay []ChapterDisplay
}
// ChapterDisplay contains displayable chapter information
type ChapterDisplay struct {
ChapString string
ChapLanguage []string
ChapLanguageIETF []string
}
// AttachedFile represents a file attached to the MKV container
type AttachedFile struct {
FileDescription string
FileName string
FileMimeType string
FileData []byte
FileUID uint64
}
// Block represents a data block in the MKV file
type Block struct {
TrackNumber uint64
Timecode int16
Data [][]byte
}
// BlockGroup represents a group of blocks with additional information
type BlockGroup struct {
Block Block
BlockDuration uint64
}
// Cluster represents a cluster of blocks in the MKV file
type Cluster struct {
Timecode uint64
SimpleBlock []Block
BlockGroup []BlockGroup
}
// Tracks element and its children
type Tracks struct {
TrackEntry []TrackEntry `ebml:"TrackEntry"`
}