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); }
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); }
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); }
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); }
/// <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); }
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); }
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); } }
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); }
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); }
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); }
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); }
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); } }
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.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); }
public static void WritePageHeader(Stream stream, DateTime ts) { stream.WriteBEUInt64(PAGE_HEADER); WriteTimeStamp(stream, ts); }
/// <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; }
public static void WriteTimeStamp(Stream stream, DateTime ts) { var nix = ts.ToMicrosecondsSinceUnixEpochStart(); stream.WriteBEUInt64((ulong)nix); }
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); } } }
public static void WritePageHeader(Stream stream, DateTime ts) { stream.WriteBEUInt64(PAGE_HEADER); WriteTimeStamp(stream, ts); }