Struct TrackHeaderBox

Source
pub struct TrackHeaderBox {
Show 15 fields pub version: u8, pub flags: TrackHeaderBoxFlags, pub creation_time: u64, pub modification_time: u64, pub track_id: u32, pub reserved1: u32, pub duration: u64, pub reserved2: u64, pub layer: i16, pub alternate_group: i16, pub volume: FixedI16<U8>, pub reserved3: u16, pub matrix: [i32; 9], pub width: FixedU32<U16>, pub height: FixedU32<U16>,
}
Expand description

Track header box

ISO/IEC 14496-12 - 8.3.2

Fields§

§version: u8

An integer that specifies the version of this box.

Part of full box header.

§flags: TrackHeaderBoxFlags

The flags for this box.

Part of full box header.

§creation_time: u64

An integer that declares the creation time of this track (in seconds since midnight, Jan. 1, 1904, in UTC time).

§modification_time: u64

An integer that declares the most recent time the track was modified (in seconds since midnight, Jan. 1, 1904, in UTC time).

§track_id: u32

An integer that uniquely identifies this track over the entire life-time of this presentation; track_IDs are never re-used and cannot be zero.

§reserved1: u32

Reserved 32 bits, must be set to 0.

§duration: u64

An integer that indicates the duration of this track (in the timescale indicated in the MovieHeaderBox) This duration field may be indefinite (all 1s) when either there is no edit list and the MediaHeaderBox duration is indefinite (i.e. all 1s), or when an indefinitely repeated edit list is desired (see subclause 8.6.6 for repeated edits). If there is no edit list and the duration is not indefinite, then the duration shall be equal to the media duration given in the MediaHeaderBox, converted into the timescale in the MovieHeaderBox. Otherwise the value of this field is equal to the sum of the durations of all of the track’s edits (possibly including repetitions).

§reserved2: u64

Reserved 64 bits, must be set to 0.

§layer: i16

Specifies the front-to-back ordering of video tracks; tracks with lower numbers are closer to the viewer. 0 is the normal value, and -1 would be in front of track 0, and so on

§alternate_group: i16

An integer that specifies a group or collection of tracks. If this field is 0 there is no information on possible relations to other tracks. If this field is not 0, it should be the same for tracks that contain alternate data for one another and different for tracks belonging to different such groups. Only one track within an alternate group should be played or streamed at any one time, and shall be distinguishable from other tracks in the group via attributes such as bitrate, codec, language, packet size etc. A group may have only one member.

§volume: FixedI16<U8>

Specifies the track’s relative audio volume. Full volume is 1.0 and is the normal value. Its value is irrelevant for a purely visual track. Tracks may be composed by combining them according to their volume, and then using the overall MovieHeaderBox volume setting; or more complex audio composition (e.g. MPEG-4 BIFS) may be used.

§reserved3: u16

Reserved 16 bits, must be set to 0.

§matrix: [i32; 9]

Provides a transformation matrix for the video; (u,v,w) are restricted here to (0,0,1), hex (0,0,0x40000000).

§width: FixedU32<U16>

width and height are track-dependent as follows:

For text and subtitle tracks, they may, depending on the coding format, describe the suggested size of the rendering area. For such tracks, the value 0x0 may also be used to indicate that the data may be rendered at any size, that no preferred size has been indicated and that the actual size may be determined by the external context or by reusing the width and height of another track. For those tracks, the flag TrackSizeIsAspectRatio may also be used.

For non-visual tracks (e.g. audio), they should be set to zero.

For all other tracks, they specify the track’s visual presentation size. These need not be the same as the pixel dimensions of the images, which is documented in the sample description(s); all images in the sequence are scaled to this size, before any overall transformation of the track represented by the matrix. The pixel dimensions of the images are the default values.

§height: FixedU32<U16>

See width.

Implementations§

Source§

impl TrackHeaderBox

Source

pub fn new( creation_time: u64, modification_time: u64, track_id: u32, duration: u64, dimensions: Option<(u32, u32)>, ) -> Self

Creates a new TrackHeaderBox with the specified parameters.

All other fields are initialized to their default values.

Trait Implementations§

Source§

impl Debug for TrackHeaderBox

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Deserialize<'a> for TrackHeaderBox

Source§

fn deserialize<R>(reader: R) -> Result<Self>
where R: ZeroCopyReader<'a>,

Deserialize a value from the given zero-copy reader.
Source§

impl<'a> DeserializeSeed<'a, BoxHeader> for TrackHeaderBox

Source§

fn deserialize_seed<R>(reader: R, _seed: BoxHeader) -> Result<Self>
where R: ZeroCopyReader<'a>,

Deserialize a value from the given zero-copy reader using the provided seed.
Source§

impl IsoBox for TrackHeaderBox

Source§

const TYPE: BoxType

The box type of this box.
Source§

fn add_header_size(payload_size: usize) -> usize

This function calculates the header size, adds it to the given payload size and return the result. Read more
Source§

fn box_header(&self) -> BoxHeader

Constructs a BoxHeader for this box.
Source§

fn serialize_box_header<W>(&self, writer: W) -> Result<()>
where W: Write,

Serializes the box header returned by IsoBox::box_header to the given writer.
Source§

impl IsoSized for TrackHeaderBox

Source§

fn size(&self) -> usize

Returns the size of the type when serialized.
Source§

impl PartialEq for TrackHeaderBox

Source§

fn eq(&self, other: &TrackHeaderBox) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Serialize for TrackHeaderBox

Source§

fn serialize<W>(&self, writer: W) -> Result<()>
where W: Write,

Serialize the value into the given writer.
Source§

impl Eq for TrackHeaderBox

Source§

impl StructuralPartialEq for TrackHeaderBox

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Az for T

Source§

fn az<Dst>(self) -> Dst
where T: Cast<Dst>,

Casts the value.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<Src, Dst> CastFrom<Src> for Dst
where Src: Cast<Dst>,

Source§

fn cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> CheckedAs for T

Source§

fn checked_as<Dst>(self) -> Option<Dst>
where T: CheckedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> CheckedCastFrom<Src> for Dst
where Src: CheckedCast<Dst>,

Source§

fn checked_cast_from(src: Src) -> Option<Dst>

Casts the value.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<Src, Dst> LosslessTryInto<Dst> for Src
where Dst: LosslessTryFrom<Src>,

Source§

fn lossless_try_into(self) -> Option<Dst>

Performs the conversion.
Source§

impl<Src, Dst> LossyInto<Dst> for Src
where Dst: LossyFrom<Src>,

Source§

fn lossy_into(self) -> Dst

Performs the conversion.
Source§

impl<T> OverflowingAs for T

Source§

fn overflowing_as<Dst>(self) -> (Dst, bool)
where T: OverflowingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> OverflowingCastFrom<Src> for Dst
where Src: OverflowingCast<Dst>,

Source§

fn overflowing_cast_from(src: Src) -> (Dst, bool)

Casts the value.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> SaturatingAs for T

Source§

fn saturating_as<Dst>(self) -> Dst
where T: SaturatingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> SaturatingCastFrom<Src> for Dst
where Src: SaturatingCast<Dst>,

Source§

fn saturating_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> UnwrappedAs for T

Source§

fn unwrapped_as<Dst>(self) -> Dst
where T: UnwrappedCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> UnwrappedCastFrom<Src> for Dst
where Src: UnwrappedCast<Dst>,

Source§

fn unwrapped_cast_from(src: Src) -> Dst

Casts the value.
Source§

impl<T> WrappingAs for T

Source§

fn wrapping_as<Dst>(self) -> Dst
where T: WrappingCast<Dst>,

Casts the value.
Source§

impl<Src, Dst> WrappingCastFrom<Src> for Dst
where Src: WrappingCast<Dst>,

Source§

fn wrapping_cast_from(src: Src) -> Dst

Casts the value.