Exemple #1
0
        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);
                }
            }
        }
Exemple #2
0
        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)));
        }
Exemple #3
0
		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));
		}