1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
namespace TagLib.Mpeg4
{
public class IsoSampleEntry : Box
{
//////////////////////////////////////////////////////////////////////////
// private properties
//////////////////////////////////////////////////////////////////////////
private ushort data_reference_index;
//////////////////////////////////////////////////////////////////////////
// public methods
//////////////////////////////////////////////////////////////////////////
public IsoSampleEntry (BoxHeader header, Box parent) : base (header, parent)
{
File.Seek (base.DataPosition + 6);
data_reference_index = (ushort) File.ReadBlock (2).ToShort ();
}
//////////////////////////////////////////////////////////////////////////
// public properties
//////////////////////////////////////////////////////////////////////////
public ushort DataReferenceIndex {get {return data_reference_index;}}
protected override long DataPosition {get {return base.DataPosition + 8;}}
protected override ulong DataSize {get {return base.DataSize - 8;}}
}
// Audio Sequences
public class IsoAudioSampleEntry : IsoSampleEntry
{
//////////////////////////////////////////////////////////////////////////
// private properties
//////////////////////////////////////////////////////////////////////////
private ushort channel_count;
private ushort sample_size;
private uint sample_rate;
//////////////////////////////////////////////////////////////////////////
// public methods
//////////////////////////////////////////////////////////////////////////
public IsoAudioSampleEntry (BoxHeader header, Box parent) : base (header, parent)
{
File.Seek (base.DataPosition + 8);
channel_count = (ushort) File.ReadBlock (2).ToShort ();
sample_size = (ushort) File.ReadBlock (2).ToShort ();
File.Seek (base.DataPosition + 16);
sample_rate = (uint) File.ReadBlock (4).ToUInt ();
}
//////////////////////////////////////////////////////////////////////////
// public properties
//////////////////////////////////////////////////////////////////////////
public ushort ChannelCount {get {return channel_count;}}
public ushort SampleSize {get {return sample_size;}}
public uint SampleRate {get {return sample_rate >> 16;}}
public override bool HasChildren {get {return true;}}
protected override long DataPosition {get {return base.DataPosition + 20;}}
protected override ulong DataSize {get {return base.DataSize - 20;}}
}
}
|