/// <summary>
        /// Create a new SMIL container box. Please supply your own SMIL file.
        /// </summary>
        public SmoothSmil(byte[] SmilFile) : base("uuid")
        {
            _data = new System.IO.MemoryStream();
            BigEndianWriter ous = new BigEndianWriter(_data);

            // I have no idea what this GUID relates to or what it means.
            // I took this value from a socket capture. Many Bothans died to bring us this information.
            //Guid uuid_head = new Guid("A5 D4 0B 30 E8 14 11 DD BA 2F 08 00 20 0C 9A 66");
            ous.WriteForward(new byte[] { 0xA5, 0xD4, 0x0B, 0x30, 0xE8, 0x14, 0x11, 0xDD, 0xBA, 0x2F, 0x08, 0x00, 0x20, 0x0C, 0x9A, 0x66 });

            UInt32 blank = 0U;

            ous.Write(blank);
            ous.WriteForward(SmilFile);
        }
Beispiel #2
0
		/// <summary>
		/// Create a new timing box.
		/// </summary>
		/// <param name="Offset">Start timecode of this fragment (sum of previous 'FragmentTicks')</param>
		/// <param name="FragmentTicks">Total number of .Net ticks of the fragment</param>
		public SmoothFragmentTimer(long Offset, long FragmentTicks):base("uuid") {
			_data = new System.IO.MemoryStream();
			BigEndianWriter ous = new BigEndianWriter(_data);

			// This is the GUID for the timing box. Taken directly from network captures
			ous.WriteForward(new byte[] {
				0x6D, 0x1D, 0x9B, 0x05, 0x42, 0xD5, 0x44, 0xE6,
				0x80, 0xE2, 0x14, 0x1D, 0xAF, 0xF7, 0x57, 0xB2 // 16 bytes of 'type'
			});

			// Don't know what this is, but it's always this data when I've seen it. Maybe flags&version?
			ous.WriteForward(new byte[] {
				0x01, 0x00, 0x00, 0x00
			});

			// This relates to the 't' field of the 'c' element in .ism files.
			ous.Write((UInt64)Offset); // This is presentation offset.

			// This relates to the 'd' field of the 'c' element in .ism files.
			ous.Write((UInt64)FragmentTicks); // This is the fragment duration.
		}
Beispiel #3
0
        public dinf() : base("dinf")
        {
            _data = new System.IO.MemoryStream();
            BigEndianWriter ous = new BigEndianWriter(_data);

            byte[] minimum = new byte[] {
                0x00, 0x00, 0x00, 0x1C, 0x64, 0x72, 0x65, 0x66,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
                0x00, 0x00, 0x00, 0x0C, 0x75, 0x72, 0x6C, 0x20,
                0x00, 0x00, 0x00, 0x01
            };             // minimal dref>url (refers only to this file)

            ous.WriteForward(minimum);
        }
Beispiel #4
0
        /// <summary>
        /// Output the header data for this Box.
        /// Override this to add extra data if your sub-class adds extra fields
        /// </summary>
        /// <returns></returns>
        protected virtual byte[] selfData()
        {
            ulong        size = deepSize();
            MemoryStream ms   = new MemoryStream();

            BigEndianWriter ous = new BigEndianWriter(ms);

            if (size >= UInt32.MaxValue)
            {
                ous.Write((UInt32)1U);
                ous.Write((UInt32)_fourCC);
                ous.Write((UInt64)size);
            }
            else
            {
                ous.Write((UInt32)size);
                ous.Write((UInt32)_fourCC);
            }
            if (_flags != null)
            {
                ous.WriteForward(_flags);
            }
            return(ms.ToArray());
        }