Esempio n. 1
0
        protected override void SaveToStream(Stream stream)
        {
            if (Version==0 && 
                (_CreationTime > uint.MaxValue || 
                _ModificationTime > uint.MaxValue || 
                Duration > uint.MaxValue)) Version = 1;

            base.SaveToStream(stream);

            if (Version == 1)
            {
                stream.WriteBEUInt64(_CreationTime);
                stream.WriteBEUInt64(_ModificationTime);
                stream.WriteBEUInt32(TimeScale);
                stream.WriteBEUInt64(Duration);
            }
            else // if(Version == 0)
            {
                stream.WriteBEUInt32(checked((uint)_CreationTime));
                stream.WriteBEUInt32(checked((uint)_ModificationTime));
                stream.WriteBEUInt32(TimeScale);
                stream.WriteBEUInt32(checked((uint)Duration));
            }
            stream.WriteBEInt32(_Rate);
            stream.WriteBEInt16(_Volume);
            stream.WriteBytes(Reserved);
            for (int i = 0; i < 9; i++) stream.WriteBEInt32(Matrix[i]);
            stream.WriteBytes(PreDefined);
            stream.WriteBEUInt32(NextTrackID);
        }
Esempio n. 2
0
        protected override void SaveToStream(Stream stream)
        {
            base.SaveToStream(stream);

            if (Version == 1)
            {
                stream.WriteBEUInt64(MovieHeaderBox.Convert1904Time(CreationTime));
                stream.WriteBEUInt64(MovieHeaderBox.Convert1904Time(ModificationTime));
                stream.WriteBEUInt32(TrackID);
                stream.WriteBEUInt32(_Reserved1);
                stream.WriteBEUInt64(Duration);
            }
            else // if (Version == 0)
            {
                stream.WriteBEUInt32((uint)MovieHeaderBox.Convert1904Time(CreationTime));
                stream.WriteBEUInt32((uint)MovieHeaderBox.Convert1904Time(ModificationTime));
                stream.WriteBEUInt32(TrackID);
                stream.WriteBEUInt32(_Reserved1);
                stream.WriteBEUInt32((uint)Duration);
            }
            for (int i = 0; i < 2; i++)
            {
                stream.WriteBEUInt32(_Reserved2[i]);
            }
            stream.WriteBEInt16(Layer);
            stream.WriteBEInt16(AlternateGroup);
            stream.WriteBEInt16(Volume);
            stream.WriteBEUInt16(_Reserved3);
            for (int i = 0; i < 9; i++)
            {
                stream.WriteBEInt32(_Matrix[i]);
            }
            stream.WriteBEUInt32(Width);
            stream.WriteBEUInt32(Height);
        }
Esempio n. 3
0
        protected override void SaveToStream(Stream stream)
        {
            base.SaveToStream(stream);

            if (Version == 1)
            {
                stream.WriteBEUInt64(MovieHeaderBox.Convert1904Time(CreationTime));
                stream.WriteBEUInt64(MovieHeaderBox.Convert1904Time(ModificationTime));
                stream.WriteBEUInt32(TrackID);
                stream.WriteBEUInt32(_Reserved1);
                stream.WriteBEUInt64(Duration);
            }
            else // if (Version == 0)
            {
                stream.WriteBEUInt32((uint)MovieHeaderBox.Convert1904Time(CreationTime));
                stream.WriteBEUInt32((uint)MovieHeaderBox.Convert1904Time(ModificationTime));
                stream.WriteBEUInt32(TrackID);
                stream.WriteBEUInt32(_Reserved1);
                stream.WriteBEUInt32((uint)Duration);
            }
            for(int i=0; i<2; i++) stream.WriteBEUInt32(_Reserved2[i]);
            stream.WriteBEInt16(Layer);
            stream.WriteBEInt16(AlternateGroup);
            stream.WriteBEInt16(Volume);
            stream.WriteBEUInt16(_Reserved3);
            for (int i = 0; i < 9; i++) stream.WriteBEInt32(_Matrix[i]);
            stream.WriteBEUInt32(Width);
            stream.WriteBEUInt32(Height);
        }
Esempio n. 4
0
        protected override void SaveToStream(Stream stream)
        {
            base.SaveToStream(stream);

            stream.WriteBEUInt32(ReferenceId);
            stream.WriteBEUInt32(Timescale);

            if (Version == 1)
            {
                stream.WriteBEUInt64(EarliestPresentationTime);
                stream.WriteBEUInt64(FirstOffset);
            }
            else // v0
            {
                stream.WriteBEUInt32((uint)EarliestPresentationTime);
                stream.WriteBEUInt32((uint)FirstOffset);
            }

            stream.WriteBEUInt16(Reserved1);
            stream.WriteBEUInt16(ReferenceCount);

            for (int i = 0; i < Entries.Length; i++)
            {
                ref SegmentIndexEntry entry = ref Entries[i];

                entry.WriteTo(stream);
            }
Esempio n. 5
0
        /// <summary>
        /// Serialize the frame to the given stream returning the byte size of the frame
        /// </summary>
        public int Serialize(Stream stream)
        {
            //MAGIC
            stream.WriteBEUShort(MAGIC);

            //VERSION
            stream.WriteByte(VERSION);

            //TYPE
            stream.WriteByte((byte)m_Type);

            //FORMAT
            stream.WriteBEInt32(m_Format);

            //ONEWAY
            stream.WriteByte(m_OneWay ? (byte)1 : (byte)0);

            //REQUEST GUID
            stream.WriteBEUInt64(m_RequestID.ID);

            //HEADERSCONTENT
            stream.WriteBEInt32(m_HeadersContentLength);
            if (m_HeadersContentLength > 0)
            {
                var hbuf = HEADERS_ENCODING.GetBytes(m_HeadersContent);
                stream.Write(hbuf, 0, hbuf.Length);
            }

            return(Length);
        }
Esempio n. 6
0
        protected override void SaveToStream(Stream stream)
        {
            if(FragmentDuration > UInt32.MaxValue) Version = 1;

            base.SaveToStream(stream);

            if (Version == 1) stream.WriteBEUInt64(FragmentDuration);
            else stream.WriteBEUInt32((uint)FragmentDuration);
        }
Esempio n. 7
0
        protected override void SaveToStream(Stream stream)
        {
            TrackFragmentFlags newFlags = 0;

            if (BaseDataOffset.HasValue)
            {
                newFlags |= TrackFragmentFlags.BaseDataOffsetPresent;
            }
            if (SampleDescriptionIndex.HasValue)
            {
                newFlags |= TrackFragmentFlags.SampleDrescriptionIndexPresent;
            }
            if (DefaultSampleDuration.HasValue)
            {
                newFlags |= TrackFragmentFlags.DefaultSampleDurationPresent;
            }
            if (DefaultSampleSize.HasValue)
            {
                newFlags |= TrackFragmentFlags.DefaultSampleSizePresent;
            }
            if (DefaultSampleFlags != null)
            {
                newFlags |= TrackFragmentFlags.DefaultSampleFlagsPresent;
            }
            if (DurationIsEmpty)
            {
                newFlags |= TrackFragmentFlags.DurationIsEmpty;
            }

            Flags = newFlags;

            base.SaveToStream(stream);

            stream.WriteBEUInt32(TrackID);
            if (BaseDataOffset.HasValue)
            {
                stream.WriteBEUInt64(BaseDataOffset.Value);
            }
            if (SampleDescriptionIndex.HasValue)
            {
                stream.WriteBEUInt32(SampleDescriptionIndex.Value);
            }
            if (DefaultSampleDuration.HasValue)
            {
                stream.WriteBEUInt32(DefaultSampleDuration.Value);
            }
            if (DefaultSampleSize.HasValue)
            {
                stream.WriteBEUInt32(DefaultSampleSize.Value);
            }
            if (DefaultSampleFlags != null)
            {
                stream.WriteBEUInt32(DefaultSampleFlags._flags);
            }
        }
        protected override void SaveToStream(Stream stream)
        {
            base.SaveToStream(stream);

            stream.WriteBEUInt32((uint)_Entries.Count);

            foreach (ChunkLargeOffsetEntry chunkLargeOffsetEntry in _Entries)
            {
                stream.WriteBEUInt64(chunkLargeOffsetEntry.ChunkOffset);
            }
        }
Esempio n. 9
0
        protected override void SaveToStream(Stream stream)
        {
            base.SaveToStream(stream);

            stream.WriteBEUInt32((uint)Entries.Length);

            for (int i = 0; i < Entries.Length; i++)
            {
                ref ChunkLargeOffsetEntry entry = ref Entries[i];

                stream.WriteBEUInt64(entry.ChunkOffset);
            }
Esempio n. 10
0
        protected override void SaveToStream(Stream stream)
        {
            base.SaveToStream(stream);

            if (Version == 1)
            {
                stream.WriteBEUInt64(MovieHeaderBox.Convert1904Time(CreationTime));
                stream.WriteBEUInt64(MovieHeaderBox.Convert1904Time(ModificationTime));
                stream.WriteBEUInt32(TimeScale);
                stream.WriteBEUInt64(Duration);
            }
            else // if (Version == 0)
            {
                stream.WriteBEUInt32((uint)MovieHeaderBox.Convert1904Time(CreationTime));
                stream.WriteBEUInt32((uint)MovieHeaderBox.Convert1904Time(ModificationTime));
                stream.WriteBEUInt32(TimeScale);
                stream.WriteBEUInt32((uint)Duration);
            }

            stream.WriteBEUInt16(ConvertThreeLetterLanguageCode(Language));
            stream.WriteBEUInt16(Predefined);
        }
Esempio n. 11
0
        protected override void SaveToStream(Stream stream)
        {
            base.SaveToStream(stream);

            if (Version == 1)
            {
                stream.WriteBEUInt64(MovieHeaderBox.Convert1904Time(CreationTime));
                stream.WriteBEUInt64(MovieHeaderBox.Convert1904Time(ModificationTime));
                stream.WriteBEUInt32(TimeScale);
                stream.WriteBEUInt64(Duration);
            }
            else // if (Version == 0)
            {
                stream.WriteBEUInt32((uint)MovieHeaderBox.Convert1904Time(CreationTime));
                stream.WriteBEUInt32((uint)MovieHeaderBox.Convert1904Time(ModificationTime));
                stream.WriteBEUInt32(TimeScale);
                stream.WriteBEUInt32((uint)Duration);
            }

            stream.WriteBEUInt16(ConvertThreeLetterLanguageCode(Language));
            stream.WriteBEUInt16(Predefined);
        }
Esempio n. 12
0
        protected override void SaveToStream(Stream stream)
        {
            if (Version == 0 &&
                (_CreationTime > uint.MaxValue ||
                 _ModificationTime > uint.MaxValue ||
                 Duration > uint.MaxValue))
            {
                Version = 1;
            }

            base.SaveToStream(stream);

            if (Version == 1)
            {
                stream.WriteBEUInt64(_CreationTime);
                stream.WriteBEUInt64(_ModificationTime);
                stream.WriteBEUInt32(TimeScale);
                stream.WriteBEUInt64(Duration);
            }
            else // if(Version == 0)
            {
                stream.WriteBEUInt32(checked ((uint)_CreationTime));
                stream.WriteBEUInt32(checked ((uint)_ModificationTime));
                stream.WriteBEUInt32(TimeScale);
                stream.WriteBEUInt32(checked ((uint)Duration));
            }
            stream.WriteBEInt32(_Rate);
            stream.WriteBEInt16(_Volume);
            stream.WriteBytes(Reserved);
            for (int i = 0; i < 9; i++)
            {
                stream.WriteBEInt32(Matrix[i]);
            }
            stream.WriteBytes(PreDefined);
            stream.WriteBEUInt32(NextTrackID);
        }
Esempio n. 13
0
        protected override void SaveToStream(Stream stream)
        {
            if (FragmentDuration > uint.MaxValue)
            {
                Version = 1;
            }

            base.SaveToStream(stream);

            if (Version == 1)
            {
                stream.WriteBEUInt64(FragmentDuration);
            }
            else
            {
                stream.WriteBEUInt32((uint)FragmentDuration);
            }
        }
Esempio n. 14
0
        protected override void SaveToStream(Stream stream)
        {
            TrackFragmentFlags newFlags = 0;
            if (BaseDataOffset.HasValue) newFlags |= TrackFragmentFlags.BaseDataOffsetPresent;
            if (SampleDescriptionIndex.HasValue) newFlags |= TrackFragmentFlags.SampleDrescriptionIndexPresent;
            if (DefaultSampleDuration.HasValue) newFlags |= TrackFragmentFlags.DefaultSampleDurationPresent;
            if (DefaultSampleSize.HasValue) newFlags |= TrackFragmentFlags.DefaultSampleSizePresent;
            if (DefaultSampleFlags != null) newFlags |= TrackFragmentFlags.DefaultSampleFlagsPresent;
            if (DurationIsEmpty) newFlags |= TrackFragmentFlags.DurationIsEmpty;

            Flags = newFlags;

            base.SaveToStream(stream);

            stream.WriteBEUInt32(TrackID);
            if (BaseDataOffset.HasValue) stream.WriteBEUInt64(BaseDataOffset.Value);
            if (SampleDescriptionIndex.HasValue) stream.WriteBEUInt32(SampleDescriptionIndex.Value);
            if (DefaultSampleDuration.HasValue) stream.WriteBEUInt32(DefaultSampleDuration.Value);
            if (DefaultSampleSize.HasValue) stream.WriteBEUInt32(DefaultSampleSize.Value);
            if (DefaultSampleFlags!=null) stream.WriteBEUInt32(DefaultSampleFlags._flags);
        }
Esempio n. 15
0
        protected override void SaveToStream(Stream stream)
        {
            base.SaveToStream(stream);

            stream.WriteBEInt32(Entries.Length);

            for (int i = 0; i < Entries.Length; i++)
            {
                ref EditListEntry entry = ref Entries[i];

                if (Version == 1)
                {
                    stream.WriteBEUInt64(entry.SegmentDuration);
                    stream.WriteBEInt64(entry.MediaTime);
                }
                else
                {
                    stream.WriteBEUInt32((uint)entry.SegmentDuration);
                    stream.WriteBEInt32((int)entry.MediaTime);
                }

                stream.WriteBEInt16(entry.MediaRateInteger);
                stream.WriteBEInt16(entry.MediaRateFraction);
            }
Esempio n. 16
0
 public static void WritePageHeader(Stream stream, DateTime ts)
 {
     stream.WriteBEUInt64(PAGE_HEADER);
     WriteTimeStamp(stream, ts);
 }
Esempio n. 17
0
            /// <summary>
            /// Serialize the frame to the given stream returning the byte size of the frame
            /// </summary>
            public int Serialize(Stream stream)
            {
                //MAGIC
                stream.WriteBEUShort(MAGIC);
                
                //VERSION
                stream.WriteByte( VERSION );

                //TYPE
                stream.WriteByte( (byte)m_Type );

                //FORMAT
                stream.WriteBEInt32( m_Format );

                //ONEWAY
                stream.WriteByte( m_OneWay ? (byte)1 : (byte)0 ); 

                //REQUEST GUID
                stream.WriteBEUInt64( m_RequestID.ID );

                //HEADERSCONTENT
                stream.WriteBEInt32(m_HeadersContentLength);
                if (m_HeadersContentLength>0)
                {
                    var hbuf = HEADERS_ENCODING.GetBytes( m_HeadersContent );
                    stream.Write( hbuf, 0, hbuf.Length );
                }

                return Length;
            }
Esempio n. 18
0
        public static void WriteTimeStamp(Stream stream, DateTime ts)
        {
            var nix = ts.ToMicrosecondsSinceUnixEpochStart();

            stream.WriteBEUInt64((ulong)nix);
        }
Esempio n. 19
0
 public static void WriteTimeStamp(Stream stream, DateTime ts)
 {
     var nix = ts.ToMicrosecondsSinceUnixEpochStart();
       stream.WriteBEUInt64((ulong)nix);
 }
        protected override void SaveToStream(Stream stream)
        {
            if ((from entry in _Entries select Math.Max(entry.Time, entry.MoofOffset)).Max() > UInt32.MaxValue)
            {
                Version = 1;
            }
            else
            {
                Version = 0;
            }

            uint MaxTrafNumber = (from entry in _Entries select entry.TrafNumber).Max();

            if (MaxTrafNumber > 16777215)
            {
                SizeOfTrafNumber = 4;
            }
            else if (MaxTrafNumber > UInt16.MaxValue)
            {
                SizeOfTrafNumber = 3;
            }
            else if (MaxTrafNumber > Byte.MaxValue)
            {
                SizeOfTrafNumber = 2;
            }
            else
            {
                SizeOfTrafNumber = 1;
            }

            uint MaxTrunNumber = (from entry in _Entries select entry.TrunNumber).Max();

            if (MaxTrunNumber > 16777215)
            {
                SizeOfTrunNumber = 4;
            }
            else if (MaxTrunNumber > UInt16.MaxValue)
            {
                SizeOfTrunNumber = 3;
            }
            else if (MaxTrunNumber > Byte.MaxValue)
            {
                SizeOfTrunNumber = 2;
            }
            else
            {
                SizeOfTrunNumber = 1;
            }

            uint MaxSampleNumber = (from entry in _Entries select entry.SampleNumber).Max();

            if (MaxSampleNumber > 16777215)
            {
                SizeOfSampleNumber = 4;
            }
            else if (MaxSampleNumber > UInt16.MaxValue)
            {
                SizeOfSampleNumber = 3;
            }
            else if (MaxSampleNumber > Byte.MaxValue)
            {
                SizeOfSampleNumber = 2;
            }
            else
            {
                SizeOfSampleNumber = 1;
            }

            base.SaveToStream(stream);

            stream.WriteBEUInt32(TrackID);
            stream.Write(Reserved, 0, 3);
            stream.WriteOneByte(_SizeOf);

            stream.WriteBEUInt32((uint)_Entries.Count);
            foreach (var entry in _Entries)
            {
                if (Version == 0x01)
                {
                    stream.WriteBEUInt64(entry.Time);
                    stream.WriteBEUInt64(entry.MoofOffset);
                }
                else
                {
                    stream.WriteBEUInt32((uint)entry.Time);
                    stream.WriteBEUInt32((uint)entry.MoofOffset);
                }

                if (SizeOfTrafNumber == 1)
                {
                    stream.WriteOneByte((byte)entry.TrafNumber);
                }
                else if (SizeOfTrafNumber == 2)
                {
                    stream.WriteBEUInt16((ushort)entry.TrafNumber);
                }
                else if (SizeOfTrafNumber == 3)
                {
                    stream.WriteBEUInt24((uint)entry.TrafNumber);
                }
                else
                {
                    stream.WriteBEUInt32((uint)entry.TrafNumber);
                }

                if (SizeOfTrunNumber == 1)
                {
                    stream.WriteOneByte((byte)entry.TrunNumber);
                }
                else if (SizeOfTrunNumber == 2)
                {
                    stream.WriteBEUInt16((ushort)entry.TrunNumber);
                }
                else if (SizeOfTrunNumber == 3)
                {
                    stream.WriteBEUInt24((uint)entry.TrunNumber);
                }
                else
                {
                    stream.WriteBEUInt32((uint)entry.TrunNumber);
                }

                if (SizeOfSampleNumber == 1)
                {
                    stream.WriteOneByte((byte)entry.SampleNumber);
                }
                else if (SizeOfSampleNumber == 2)
                {
                    stream.WriteBEUInt16((ushort)entry.SampleNumber);
                }
                else if (SizeOfSampleNumber == 3)
                {
                    stream.WriteBEUInt24((uint)entry.SampleNumber);
                }
                else
                {
                    stream.WriteBEUInt32((uint)entry.SampleNumber);
                }
            }
        }
Esempio n. 21
0
 public static void WritePageHeader(Stream stream, DateTime ts)
 {
     stream.WriteBEUInt64(PAGE_HEADER);
       WriteTimeStamp(stream, ts);
 }