public AsfProperties(AsfHeaderObject header, ReadStyle style) : base(style) { duration = TimeSpan.Zero; //codecId = 0; //channels = 0; //sampleRate = 0; //bytesPerSecond = 0; foreach (AsfObject obj in header.Children) { if (obj is AsfFilePropertiesObject) { duration = ((AsfFilePropertiesObject)obj).PlayDuration; } if (obj is AsfStreamPropertiesObject && bytesPerSecond == 0) { AsfStreamPropertiesObject stream = (AsfStreamPropertiesObject)obj; if (!stream.StreamType.Equals(AsfGuid.AsfAudioMedia)) { continue; } ByteVector data = stream.TypeSpecificData; codecId = data.Mid(0, 2).ToShort(false); channels = data.Mid(2, 2).ToShort(false); sampleRate = data.Mid(4, 4).ToUInt(false); bytesPerSecond = data.Mid(8, 4).ToUInt(false); } } }
public AsfObject[] ReadObjects(uint count, long position) { ArrayList l = new ArrayList(); for (int i = 0; i < (int)count; i++) { Seek(position); AsfGuid id = ReadGuid(); AsfObject obj; if (id.Equals(AsfGuid.AsfFilePropertiesObject)) { obj = new AsfFilePropertiesObject(this, position); } else if (id.Equals(AsfGuid.AsfStreamPropertiesObject)) { obj = new AsfStreamPropertiesObject(this, position); } else if (id.Equals(AsfGuid.AsfContentDescriptionObject)) { obj = new AsfContentDescriptionObject(this, position); } else if (id.Equals(AsfGuid.AsfExtendedContentDescriptionObject)) { obj = new AsfExtendedContentDescriptionObject(this, position); } else if (id.Equals(AsfGuid.AsfPaddingObject)) { obj = new AsfPaddingObject(this, position); } else { obj = new AsfUnknownObject(this, position); } l.Add(obj); position += obj.OriginalSize; } return((AsfObject[])l.ToArray(typeof(AsfObject))); }
public AsfObject[] ReadObjects(uint count, long position) { ArrayList l = new ArrayList(); for (int i = 0; i < (int)count; i++) { Seek(position); AsfGuid id = ReadGuid(); AsfObject obj; if (id.Equals(AsfGuid.AsfFilePropertiesObject)) obj = new AsfFilePropertiesObject(this, position); else if (id.Equals(AsfGuid.AsfStreamPropertiesObject)) obj = new AsfStreamPropertiesObject(this, position); else if (id.Equals(AsfGuid.AsfContentDescriptionObject)) obj = new AsfContentDescriptionObject(this, position); else if (id.Equals(AsfGuid.AsfExtendedContentDescriptionObject)) obj = new AsfExtendedContentDescriptionObject(this, position); else if (id.Equals(AsfGuid.AsfPaddingObject)) obj = new AsfPaddingObject(this, position); else obj = new AsfUnknownObject(this, position); l.Add(obj); position += obj.OriginalSize; } return (AsfObject[])l.ToArray(typeof(AsfObject)); }