isobmff-builder-0.3.0.0: A (bytestring-) builder for the ISO-14496-12 base media file format

Safe HaskellNone
LanguageHaskell2010

Data.ByteString.IsoBaseFileFormat.Boxes.MovieBox

Contents

Description

Meta data for a presentation of a movie.

Synopsis

Documentation

movieBox :: ValidBoxes (Movie version) ts => Boxes ts -> Box' (Movie version) Source #

Compose a set of boxes into a MovieBox

Example:

 xxx :: Box' Movie
 xxx = movieBox $
        Nested (movieHeaderBox (...))
        :. (trackBox $
             Nested (trackHeaderBox (TrackHeader ...))
             :. trackReferenceBox (TrackReference ...)
             :. trackGroupingIndication (TrackGroupingInd ...))

data Movie version Source #

The metadata for a presentation, a single Movie which occurs only once and top-level. It is pretty empty on it's own, but it contains nested boxes with all the relevant meta data.

Instances

BoxRules * (Movie version) Source # 

Associated Types

type RestrictedTo (Movie version) (t :: Movie version) :: Maybe [k] Source #

type IsTopLevelBox (Movie version) (t :: Movie version) :: Bool Source #

type RequiredNestedBoxes (Movie version) (t :: Movie version) :: [k] Source #

type GetCardinality (Movie version) (t :: Movie version) (c :: Movie version) :: Cardinality Source #

IsBoxType' * (Movie version) Source # 

Associated Types

type BoxContent (Movie version) (t :: Movie version) :: * Source #

Methods

toBoxType' :: proxy t -> BoxType Source #

type RestrictedTo * (Movie version) Source # 
type RestrictedTo * (Movie version) = Just [*] ([] *)
type IsTopLevelBox * (Movie version) Source # 
type IsTopLevelBox * (Movie version) = True
type RequiredNestedBoxes * (Movie version) Source # 
type RequiredNestedBoxes * (Movie version) = (:) * (MovieHeader version) ([] *)
type BoxContent * (Movie version) Source # 
type BoxContent * (Movie version) = ()
type GetCardinality * (Movie version) c Source # 
type GetCardinality * (Movie version) c = ExactlyOnce

mvhd Box

movieHeaderBox :: KnownNat version => MovieHeader version -> Box' (MovieHeader version) Source #

Construct a MovieHeader box.

data MovieHeader version where Source #

Movie meta data, indexed by a version.

Constructors

MovieHeader :: KnownNat version => (((((((Versioned MovieHeaderTimesV0 MovieHeaderTimesV1 version :+ Template (I32 "rate") 65536) :+ Template (I16 "volume") 256) :+ Constant (I16 "reserved") 0) :+ Constant (I32Arr "reserved" 2) '[0, 0]) :+ Constant (I32Arr "matrix" 9) '[65536, 0, 0, 0, 65536, 0, 0, 0, 1073741824]) :+ Template (U32Arr "pre_defined" 6) '[0, 0, 0, 0, 0, 0]) :+ U32 "next_track_ID") -> MovieHeader version 

Instances

IsBoxContent (MovieHeader version) Source # 
BoxRules * (MovieHeader version) Source # 

Associated Types

type RestrictedTo (MovieHeader version) (t :: MovieHeader version) :: Maybe [k] Source #

type IsTopLevelBox (MovieHeader version) (t :: MovieHeader version) :: Bool Source #

type RequiredNestedBoxes (MovieHeader version) (t :: MovieHeader version) :: [k] Source #

type GetCardinality (MovieHeader version) (t :: MovieHeader version) (c :: MovieHeader version) :: Cardinality Source #

KnownNat version => IsBoxType' * (MovieHeader version) Source # 

Associated Types

type BoxContent (MovieHeader version) (t :: MovieHeader version) :: * Source #

Methods

toBoxType' :: proxy t -> BoxType Source #

type RestrictedTo * (MovieHeader version) Source # 
type RestrictedTo * (MovieHeader version) = Just [*] ((:) * (Movie version) ([] *))
type IsTopLevelBox * (MovieHeader version) Source # 
type IsTopLevelBox * (MovieHeader version) = False
type RequiredNestedBoxes * (MovieHeader version) Source # 
type RequiredNestedBoxes * (MovieHeader version) = [] *
type BoxContent * (MovieHeader version) Source # 
type BoxContent * (MovieHeader version) = FullBox Nat version (MovieHeader version)
type GetCardinality * (MovieHeader version) any Source # 

type MovieHeaderTimesV0 = MovieHeaderTimes (Scalar Word32) Source #

Time and timing information about a movie (32bit version).

type MovieHeaderTimesV1 = MovieHeaderTimes (Scalar Word64) Source #

Time and timing information about a movie (64bit version).

type MovieHeaderTimes uint = ((uint "creation_time" :+ uint "modification_time") :+ U32 "timescale") :+ uint "duration" Source #

Time and timing information about a movie.

trak Box

track :: ValidBoxes (Track version) ts => Boxes ts -> Box' (Track version) Source #

Compose a Track box from the given boxes.

data Track version Source #

Container box for tracks.

Instances

BoxRules * (Track version) Source # 

Associated Types

type RestrictedTo (Track version) (t :: Track version) :: Maybe [k] Source #

type IsTopLevelBox (Track version) (t :: Track version) :: Bool Source #

type RequiredNestedBoxes (Track version) (t :: Track version) :: [k] Source #

type GetCardinality (Track version) (t :: Track version) (c :: Track version) :: Cardinality Source #

IsBoxType' * (Track version) Source # 

Associated Types

type BoxContent (Track version) (t :: Track version) :: * Source #

Methods

toBoxType' :: proxy t -> BoxType Source #

type RestrictedTo * (Track version) Source # 
type RestrictedTo * (Track version) = Just [*] ((:) * (Movie version) ([] *))
type IsTopLevelBox * (Track version) Source # 
type IsTopLevelBox * (Track version) = False
type RequiredNestedBoxes * (Track version) Source # 
type RequiredNestedBoxes * (Track version) = [] *
type BoxContent * (Track version) Source # 
type BoxContent * (Track version) = ()
type GetCardinality * (Track version) any Source # 
type GetCardinality * (Track version) any = ExactlyOnce

tkhd Box

trackHeader :: KnownNat version => TrackHeader version -> Box' (TrackHeader version) Source #

Create a TrackHeader box.

data TrackHeader version where Source #

Track meta data, indexed by a version.

Constructors

TrackHeader :: ((((((((Versioned TrackHeaderTimesV0 TrackHeaderTimesV1 version :+ Constant (I32Arr "reserved" 2) '[0, 0]) :+ Template (I16 "layer") 0) :+ Template (I16 "alternate_group") 0) :+ Template (I16 "volume") 256) :+ Constant (I16 "reserved") 0) :+ Template (I32Arr "matrix" 9) '[65536, 0, 0, 0, 65536, 0, 0, 0, 1073741824]) :+ I32 "width") :+ I32 "height") -> TrackHeader version 

Instances

IsBoxContent (TrackHeader version) Source # 
BoxRules * (TrackHeader version) Source # 

Associated Types

type RestrictedTo (TrackHeader version) (t :: TrackHeader version) :: Maybe [k] Source #

type IsTopLevelBox (TrackHeader version) (t :: TrackHeader version) :: Bool Source #

type RequiredNestedBoxes (TrackHeader version) (t :: TrackHeader version) :: [k] Source #

type GetCardinality (TrackHeader version) (t :: TrackHeader version) (c :: TrackHeader version) :: Cardinality Source #

KnownNat version => IsBoxType' * (TrackHeader version) Source # 

Associated Types

type BoxContent (TrackHeader version) (t :: TrackHeader version) :: * Source #

Methods

toBoxType' :: proxy t -> BoxType Source #

type RestrictedTo * (TrackHeader version) Source # 
type RestrictedTo * (TrackHeader version) = Just [*] ((:) * (Track version) ([] *))
type IsTopLevelBox * (TrackHeader version) Source # 
type IsTopLevelBox * (TrackHeader version) = False
type RequiredNestedBoxes * (TrackHeader version) Source # 
type RequiredNestedBoxes * (TrackHeader version) = [] *
type BoxContent * (TrackHeader version) Source # 
type BoxContent * (TrackHeader version) = FullBox Nat version (TrackHeader version)
type GetCardinality * (TrackHeader version) any Source # 

type TrackHeaderTimesV0 = TrackHeaderTimes (Scalar Word32) Source #

Time and timing information about a track (32bit version).

type TrackHeaderTimesV1 = TrackHeaderTimes (Scalar Word64) Source #

Time and timing information about a track (64bit version).

type TrackHeaderTimes uint = (((uint "creation_time" :+ uint "modification_time") :+ U32 "track_ID") :+ Constant (U32 "reserved") 0) :+ uint "duration" Source #

Time and timing information about a track.