module Data.ByteString.IsoBaseFileFormat.Boxes.TrackExtends where
import Data.ByteString.IsoBaseFileFormat.Box
import Data.ByteString.IsoBaseFileFormat.Util.FullBox
import Data.ByteString.IsoBaseFileFormat.ReExports
trackExtendsUnknownDuration :: Word32 -> Word32 -> Box (FullBox TrackExtends 0)
trackExtendsUnknownDuration trackId descrIndex = trackExtends trackId descrIndex
  0 0 0 0 0 0 0 False 0
trackExtends
  :: Word32 
  -> Word32 
  -> Word32 
  -> Word32 
  -> B 2    
  -> B 2    
  -> B 2    
  -> B 2    
  -> B 3    
  -> Bool   
  -> Word16 
  -> Box (FullBox TrackExtends 0)
trackExtends =
   wrapBitBuilderWithSize (fullBox 0 . MkTrackExtends) (Proxy @TrackExtendsBody)
newtype TrackExtends where
  MkTrackExtends :: BuilderWithSize -> TrackExtends
  deriving (IsBoxContent)
instance IsBox TrackExtends
type instance BoxTypeSymbol TrackExtends = "trex"
type TrackExtendsBody =
     'RecordField ("track_ID"                         @:: FieldU32)
 :+: 'RecordField ("default_sample_description_index" @:: FieldU32)
 :+: 'RecordField ("default_sample_duration"          @:: FieldU32)
 :+: 'RecordField ("default_sample_size"              @:: FieldU32)
 :+: TrackExtendsDefaultSampleFlags
type TrackExtendsDefaultSampleFlags =
      "reserved"                    @: Field 4 := 0
  .+: "is_leading"                  @: Field 2
  .+: "sample_depends_on"           @: Field 2
  .+: "sample_is_depended_on"       @: Field 2
  .+: "sample_has_redundancy"       @: Field 2
  .+: "sample_padding_value"        @: Field 3
  .+: "sample_is_non_sync_sample"   @: Flag
  .+: "sample_degradation_priority" @: FieldU16
  .+: 'EmptyBitRecord