Safe Haskell | None |
---|---|
Language | Haskell2010 |
Meta data for a presentation of a movie.
- movieHeader :: (KnownNat version, ValidBox brand (MovieHeader version)) => MovieHeader version -> Box brand (MovieHeader version)
- data MovieHeader version where
- MovieHeader :: KnownNat version => (Timing version :+ (Template (I32 "rate") 65536 :+ (Template (I16 "volume") 256 :+ (Constant (I16 "reserved") 0 :+ (Constant (I32Arr "reserved" 2) '[0, 0] :+ (Template (I32Arr "matrix" 9) '[65536, 0, 0, 0, 65536, 0, 0, 0, 1073741824] :+ (Template (U32Arr "pre_defined" 6) '[0, 0, 0, 0, 0, 0] :+ Template (U32 "next_track_ID") 4294967295))))))) -> MovieHeader version
- type MovieHeaderTimesV0 = MovieHeaderTimes (Scalar Word32)
- type MovieHeaderTimesV1 = MovieHeaderTimes (Scalar Word64)
- type MovieHeaderTimes uint = uint "creation_time" :+ (uint "modification_time" :+ (TimeScale :+ uint "duration"))
mvhd
Box
movieHeader :: (KnownNat version, ValidBox brand (MovieHeader version)) => MovieHeader version -> Box brand (MovieHeader version) Source #
Construct a MovieHeader
box.
data MovieHeader version where Source #
Movie meta data, indexed by a version.
The rate
field is a 16.16 fix point number, 1.0 indicates the preferred
normal playback rate. volume
is also a fix point number, albeit smaller
with only 8.8. A volume of 1.0 is the full (loudest) volume. matrix
is the
video image transformation matrix. The next_track_ID
indicates the next
available track id, if the track ID is (0xFFFFFFFF) then the system must
search through all tracks associated with this presentation and figure it
out, 0 is not allowed.
MovieHeader :: KnownNat version => (Timing version :+ (Template (I32 "rate") 65536 :+ (Template (I16 "volume") 256 :+ (Constant (I16 "reserved") 0 :+ (Constant (I32Arr "reserved" 2) '[0, 0] :+ (Template (I32Arr "matrix" 9) '[65536, 0, 0, 0, 65536, 0, 0, 0, 1073741824] :+ (Template (U32Arr "pre_defined" 6) '[0, 0, 0, 0, 0, 0] :+ Template (U32 "next_track_ID") 4294967295))))))) -> MovieHeader version |
IsBoxContent (MovieHeader version) Source # | |
KnownNat version => IsBoxType * (MovieHeader version) Source # | |
type BoxContent * (MovieHeader version) 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" :+ (TimeScale :+ uint "duration")) Source #
Time and timing information about a movie.
The creation/modification times are in seconds since midnight, Jan. 1, 1904, in UTC time. Time scale declares the time coordinate system, it specifies the number of time units that pass one second. The time coordinate system is used by e.g. the duration field, which by the way contains the duration of the longest track, if known, or simply the equivalent of 1s.