public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
         base.Write(writer);
         writer.WriteUInt32(EntryCount);
         if (SttsCountsReader != null)
         {
             for (int i = 0; i < EntryCount; i++)
             {
                 writer.WriteUInt32(SttsCountsReader.ReadUInt32());
                 writer.WriteUInt32(SttsTimeDeltaReader.ReadUInt32());
             }
         }
         else if ((SampleCount != null) && (SampleDelta != null) && (SampleCount.Length == EntryCount) && (SampleDelta.Length == EntryCount))
         {
             for (int i = 0; i < EntryCount; i++)
             {
                 writer.WriteUInt32(SampleCount[i]);
                 writer.WriteUInt32(SampleDelta[i]);
             }
         }
         else
         {
             throw new Exception("Nothing to write");
         }
     }
 }
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer)) {
                base.Write(writer);

                writer.WriteUInt32(TrackId);
                if (EnumUtils.IsBitSet <TrackFragmentHeaderBoxFlags>((TrackFragmentHeaderBoxFlags)base.Flags, TrackFragmentHeaderBoxFlags.BaseDataOffsetPresent))
                {
                    writer.WriteUInt64(BaseDataOffset);
                }
                if (EnumUtils.IsBitSet <TrackFragmentHeaderBoxFlags>((TrackFragmentHeaderBoxFlags)base.Flags, TrackFragmentHeaderBoxFlags.SampleDescriptionIndexPresent))
                {
                    writer.WriteUInt32(SampleDescriptionIndex);
                }
                if (EnumUtils.IsBitSet <TrackFragmentHeaderBoxFlags>((TrackFragmentHeaderBoxFlags)base.Flags, TrackFragmentHeaderBoxFlags.DefaultSampleDurationPresent))
                {
                    writer.WriteUInt32(DefaultSampleDuration);
                }
                if (EnumUtils.IsBitSet <TrackFragmentHeaderBoxFlags>((TrackFragmentHeaderBoxFlags)base.Flags, TrackFragmentHeaderBoxFlags.DefaultSampleSizePresent))
                {
                    writer.WriteUInt32(DefaultSampleSize);
                }
                if (EnumUtils.IsBitSet <TrackFragmentHeaderBoxFlags>((TrackFragmentHeaderBoxFlags)base.Flags, TrackFragmentHeaderBoxFlags.DefaultSampleFlagsPresent))
                {
                    writer.WriteUInt32(DefaultSampleFlags);
                }
            }
        }
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
         base.Write(writer);
         writer.WriteUInt32(EntryCount);
         if (SyncSampleReader != null)
         {
             for (int i = 0; i < EntryCount; i++)
             {
                 writer.WriteUInt32(SyncSampleReader.ReadUInt32());
             }
         }
         else if ((SampleNumbers != null) && (EntryCount == SampleNumbers.Length))
         {
             for (int i = 0; i < EntryCount; i++)
             {
                 writer.WriteUInt32(SampleNumbers[i]);
             }
         }
         else
         {
             throw new Exception("SyncSampleMapBox.Write: nothing to write");
         }
     }
 }
Beispiel #4
0
        /// <summary>
        /// Write - write the ChunkOffsetBox to output file.
        /// For every chunk offset written out, add fixup.
        /// ChunkOffset data is either stored in a temp file, or in the chunkOffsetArray.
        /// Data is in the temp file if we are  using PrepareSampleWriting, and in the chunkOffsetArray
        /// if we are simply copying boxes as they are, no recoding.
        /// </summary>
        /// <param name="writer"></param>
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer))
            {
                base.Write(writer);

                writer.WriteUInt32(entryCount);
                if (entryCount > 0)
                {
                    if (ChunkOffsetReader != null)
                    {
                        ChunkOffsetReader.BaseStream.Position = 0L;
                        for (int i = 0; i < entryCount; i++)
                        {
                            uint offs = (uint)(ChunkOffsetReader.ReadUInt32() + fixup);
                            writer.WriteUInt32(offs);
                        }
                    }
                    else if ((chunkOffsetArray != null) && (entryCount == chunkOffsetArray.Length))
                    {
                        for (int i = 0; i < entryCount; i++)
                        {
                            writer.WriteUInt32((uint)(chunkOffsetArray[i] + fixup));
                        }
                    }
                    else
                    {
                        throw new Exception("ChunkOffsetBox.Write: nothing to write");
                    }
                }
            }
        }
Beispiel #5
0
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
         base.Write(writer);
         writer.WriteUInt32(TrackID);
         writer.WriteUInt32(DefaultSampleDescriptionIndex);
         writer.WriteUInt32(DefaultSampleDuration);
         writer.WriteUInt32(DefaultSampleSize);
         writer.WriteUInt32(DefaultSampleFlags);
     }
 }
Beispiel #6
0
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer)) {
                base.Write(writer);

                writer.Write(major_brand);
                writer.WriteUInt32(minor_version);
                foreach (uint brand in compatible_brands)
                {
                    writer.WriteUInt32(brand);
                }
            }
        }
Beispiel #7
0
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer))
            {
                base.Write(writer);
                if (Version == 1)
                {
                    writer.WriteUInt64(creationTime);
                    writer.WriteUInt64(modificationTime);
                    writer.WriteUInt32(TrackID);
                    writer.WriteUInt32((uint)0);
                    writer.WriteUInt64(Duration);
                }
                else
                {
                    writer.WriteUInt32((uint)creationTime);
                    writer.WriteUInt32((uint)modificationTime);
                    writer.WriteUInt32(TrackID);
                    writer.WriteUInt32((uint)0);
                    writer.WriteUInt32((uint)Duration);
                }

                for (int x = 0; x < 2; x++)
                {
                    writer.WriteUInt32((uint)0);
                }
                writer.Write(Layer);
                writer.Write(AlternateGroup);
                writer.Write(_volume);
                writer.Write((UInt16)0);
                this.Matrix.Write(writer);
                writer.Write(_width);
                writer.Write(_height);
            }
        }
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer)) {
     base.Write(writer);
     writer.WriteUInt32(SequenceNumber);
       }
 }
Beispiel #9
0
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer)) {
         base.Write(writer);
         writer.WriteUInt32(TrackId);
         uint num = 0;
         num = (uint)((LengthSizeOfTrafNum << 4) | (LengthSizeOfTrunNum << 2) | LengthSizeOfSampleNum);
         writer.WriteUInt32(num);
         writer.WriteUInt32(NumberOfEntry);
         for (int i = 0; i < this.NumberOfEntry; i++)
         {
             TrackFragmentRandomAccessEntry item = TrackFragmentRandomAccessEntries[i];
             item.Write(writer, base.Version, this.LengthSizeOfTrafNum, this.LengthSizeOfTrunNum, this.LengthSizeOfSampleNum);
         }
     }
 }
Beispiel #10
0
 public void Write(BoxWriter writer)
 {
     for (int i = 0; i < 9; i++)
     {
         writer.WriteUInt32(matrix[i]);
     }
 }
Beispiel #11
0
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer)) {
         base.Write(writer);
         writer.WriteUInt32(MfraSize);
     }
 }
 public void Write(BoxWriter writer, uint flags)
 {
     if (EnumUtils.IsBitSet<TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags) flags, TrackFragmentRunBoxFlags.SampleDurationPresent)) {
       writer.WriteUInt32(SampleDuration);
       }
       if (EnumUtils.IsBitSet<TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags) flags, TrackFragmentRunBoxFlags.SampleSizePresent)) {
       writer.WriteUInt32(SampleSize);
       }
       if (!EnumUtils.IsBitSet<TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags)flags, TrackFragmentRunBoxFlags.FirstSampleFlagsPresent) &&
     EnumUtils.IsBitSet<TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags)flags, TrackFragmentRunBoxFlags.SampleFlagsPresent))
       {
     writer.WriteUInt32(SampleFlags);
       }
       if (EnumUtils.IsBitSet<TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags) flags, TrackFragmentRunBoxFlags.SampleCompositionTimeOffsetsPresent)) {
       writer.WriteUInt32(SampleCompositionTimeOffset);
       }
 }
Beispiel #13
0
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
         base.Write(writer);
         writer.WriteUInt32(EntryCount);
         if (ChunkGroupReader != null)
         {
             for (int i = 0; i < EntryCount; i++)
             {
                 writer.WriteUInt32(ChunkGroupReader.ReadUInt32());
                 writer.WriteUInt32(ChunkGroupReader.ReadUInt32());
                 writer.WriteUInt32(ChunkGroupReader.ReadUInt32());
             }
         }
         else if ((ChunkEntries != null) && (ChunkEntries.Length == EntryCount))
         {
             for (int i = 0; i < EntryCount; i++)
             {
                 writer.WriteUInt32(ChunkEntries[i].firstChunk);
                 writer.WriteUInt32(ChunkEntries[i].samplesPerChunk);
                 writer.WriteUInt32(ChunkEntries[i].sampleDescriptionIndex);
             }
         }
         else
         {
             throw new Exception("SampleToChunkBox.Write: Nothing to write");
         }
     }
 }
 public void Write(BoxWriter writer, uint flags)
 {
     if (EnumUtils.IsBitSet <TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags)flags, TrackFragmentRunBoxFlags.SampleDurationPresent))
     {
         writer.WriteUInt32(SampleDuration);
     }
     if (EnumUtils.IsBitSet <TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags)flags, TrackFragmentRunBoxFlags.SampleSizePresent))
     {
         writer.WriteUInt32(SampleSize);
     }
     if (!EnumUtils.IsBitSet <TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags)flags, TrackFragmentRunBoxFlags.FirstSampleFlagsPresent) &&
         EnumUtils.IsBitSet <TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags)flags, TrackFragmentRunBoxFlags.SampleFlagsPresent))
     {
         writer.WriteUInt32(SampleFlags);
     }
     if (EnumUtils.IsBitSet <TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags)flags, TrackFragmentRunBoxFlags.SampleCompositionTimeOffsetsPresent))
     {
         writer.WriteUInt32(SampleCompositionTimeOffset);
     }
 }
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
     base.Write(writer);
     if (Version == 1)
         writer.WriteUInt64(FragmentDuration);
     else
         writer.WriteUInt32((uint)FragmentDuration);
     }
 }
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer)) {
                base.Write(writer);

                writer.WriteUInt32(SampleCount);
                if (EnumUtils.IsBitSet <TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags)base.Flags, TrackFragmentRunBoxFlags.DataOffsetPresent))
                {
                    writer.WriteUInt32(DataOffset);
                }
                if (EnumUtils.IsBitSet <TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags)base.Flags, TrackFragmentRunBoxFlags.FirstSampleFlagsPresent))
                {
                    writer.WriteUInt32(FirstSampleFlags);
                }
                for (int i = 0; i < this.SampleCount; i++)
                {
                    TrackFragmentRunSample item = Samples[i];
                    item.Write(writer, base.Flags);
                }
            }
        }
Beispiel #17
0
        public override void Write(BoxWriter writer)
        {
            if (this.EntryCount == 0)
            {
                // this means we had no CTTS's which were different and thus this file
                // doesn't need them and most likely has no b-frames...
                return;
            }

            using (new SizeCalculator(this, writer))
            {
                base.Write(writer);
                writer.WriteUInt32(EntryCount);
                if (EntryCount > 0)
                {
                    if (CompToSampleStream != null)
                    {
                        CompToSampleStream.Position = 0L;
                        CompToSampleReader          = new BinaryReader(CompToSampleStream);
                        for (int i = 0; i < EntryCount; i++)
                        {
                            writer.WriteUInt32(CompToSampleReader.ReadUInt32());
                            writer.WriteUInt32(CompToSampleReader.ReadUInt32());
                        }
                        CompToSampleStream.Close();
                        CompToSampleStream.Dispose();
                    }
                    else
                    {
                        for (int i = 0; i < EntryCount; i++)
                        {
                            writer.WriteUInt32(SampleCount[i]);
                            writer.WriteUInt32(SampleOffset[i]);
                        }
                    }
                }
            }
        }
Beispiel #18
0
 public virtual void Write(BoxWriter writer)
 {
     Common.Logger.Instance.Info("[Box::Write] writing a box of type [" + this.Type + ", " + this.GetType().Name + "], size [" + this.Size + "], offset [" + Offset + "], details: " + this.ToString());
     if (this.expectedType == BoxTypes.Any)
     {
         return;
     }
     writer.WriteUInt32(this.size);
     writer.WriteBoxType(expectedType);
     if (this.size == 1)
     {
         writer.WriteUInt64(largeSize);
     }
 }
Beispiel #19
0
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
         base.Write(writer);
         writer.WriteUInt32(sampleSize);
         writer.WriteUInt32(SampleCount);
         if (SampleSizeReader != null)
         {
             if ((sampleSize == 0) && (SampleCount > 0))
             {
                 if (SampleCount * 4 != SampleSizeReader.BaseStream.Length)
                 {
                     throw new Exception("Inconsistent SampleSizeBox array size");
                 }
                 for (int i = 0; i < sampleCount; i++)
                 {
                     writer.WriteUInt32(SampleSizeReader.ReadUInt32());
                 }
             }
         }
         else if ((SampleSizeArray != null) && (SampleCount == SampleSizeArray.Length))
         {
             if ((sampleSize == 0) && (SampleCount > 0))
             {
                 for (int i = 0; i < sampleCount; i++)
                 {
                     writer.WriteUInt32(SampleSizeArray[i]);
                 }
             }
         }
         // don't throw an exception here (it won't be caught because we are inside multiple levels of using blocks;
         // let SiceCalculator detect the problem.
         //else throw new Exception("SampleSizeBox.Write: nothing to write");
     }
 }
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
         base.Write(writer);
         if (Version == 1)
         {
             writer.WriteUInt64(FragmentDuration);
         }
         else
         {
             writer.WriteUInt32((uint)FragmentDuration);
         }
     }
 }
Beispiel #21
0
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer))
            {
                base.Write(writer);
                if (Version == 1)
                {
                    writer.WriteUInt64(creationTime);
                    writer.WriteUInt64(modificationTime);
                    writer.WriteUInt32(TimeScale);
                    writer.WriteUInt64(Duration);
                }
                else
                {
                    writer.WriteUInt32((uint)creationTime);
                    writer.WriteUInt32((uint)modificationTime);
                    writer.WriteUInt32(TimeScale);
                    writer.WriteUInt32((uint)Duration);
                }

                writer.Write((Int16)language);
                writer.Write((Int16)0);
            }
        }
Beispiel #22
0
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer))
            {
                base.Write(writer);

                if (Version == 1)
                {
                    writer.WriteUInt64(creationTime);
                    writer.WriteUInt64(modificationTime);
                    writer.WriteUInt32(TimeScale);
                    writer.WriteUInt64(Duration);
                }
                else
                {
                    writer.WriteUInt32((uint)creationTime);
                    writer.WriteUInt32((uint)modificationTime);
                    writer.WriteUInt32((uint)TimeScale);
                    writer.WriteUInt32((uint)Duration);
                }

                writer.Write(rate[0]);
                writer.Write(rate[1]);
                writer.Write(volume, 0, 2);

                writer.Write((short)0);
                for (int x = 0; x < 2; x++)
                {
                    writer.WriteUInt32((uint)0);
                }
                this.Matrix.Write(writer);
                for (int x = 0; x < 6; x++)
                {
                    writer.WriteUInt32((uint)0);
                }

                writer.WriteUInt32(NextTrackID);
            }
        }
Beispiel #23
0
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
         base.Write(writer);
         writer.WriteUInt32(EntryCount);
         if (EntryCount > 0)
         {
             foreach (DataEntry entry in DataEntry)
             {
                 if (entry.DataEntryUrlBox != null)
                 {
                     entry.DataEntryUrlBox.Write(writer);
                 }
                 if (entry.DataEntryUrnBox != null)
                 {
                     entry.DataEntryUrnBox.Write(writer);
                 }
             }
         }
     }
 }
        public void Write(BoxWriter writer, byte version, uint LengthSizeOfTrafNum, uint LengthSizeOfTrunNum, uint LengthSizeOfSampleNum)
        {
            if (version == 1) {
              ulong tmpTime = Time - BaseTime;
              writer.WriteUInt64(tmpTime);
              writer.WriteUInt64(MoofOffset);
            } else {
              writer.WriteUInt32((uint)Time);
              writer.WriteUInt32((uint)MoofOffset);
            }

            switch (((LengthSizeOfTrafNum + 1) * 8)) {
              case 0x18:
                  //this.TrafNumber = reader.ReadUInt24();
                  writer.WriteUInt24(TrafNumber);
                  break;

              case 0x20:
                  //this.TrafNumber = reader.ReadUInt32();
                  writer.WriteUInt32(TrafNumber);
                  break;

              case 8:
                  //this.TrafNumber = reader.ReadByte();
                  writer.Write((byte)TrafNumber);
                  break;

              case 0x10:
                  //this.TrafNumber = reader.ReadUInt16();
                  writer.WriteUInt16((UInt16)TrafNumber);
                  break;
            }

            switch (((LengthSizeOfTrunNum + 1) * 8)) {
              case 0x18:
                  //this.TrunNumber = reader.ReadUInt24();
                  writer.WriteUInt24(TrunNumber);
                  break;

              case 0x20:
                  //this.TrunNumber = reader.ReadUInt32();
                  writer.WriteUInt32(TrunNumber);
                  break;

              case 8:
                  //this.TrunNumber = reader.ReadByte();
                  writer.Write((byte)TrunNumber);
                  break;

              case 0x10:
                  //this.TrunNumber = reader.ReadUInt16();
                  writer.WriteUInt16((UInt16)TrunNumber);
                  break;
            }

            switch (((LengthSizeOfSampleNum + 1) * 8)) {
              case 8:
                  //this.SampleNumber = reader.ReadByte();
                  writer.Write((byte)SampleNumber);
                  return;

              case 0x10:
                  //this.SampleNumber = reader.ReadUInt16();
                  writer.WriteUInt16((UInt16)SampleNumber);
                  break;

              case 0x18:
                  //this.SampleNumber = reader.ReadUInt24();
                  writer.WriteUInt24(SampleNumber);
                  return;

              case 0x20:
                  //this.SampleNumber = reader.ReadUInt32();
                  writer.WriteUInt32(SampleNumber);
                  return;
            }
        }
Beispiel #25
0
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
       {
     base.Write(writer);
     writer.WriteUInt32(EntryCount);
     if (ChunkGroupReader != null)
     {
       for (int i = 0; i < EntryCount; i++)
       {
     writer.WriteUInt32(ChunkGroupReader.ReadUInt32());
     writer.WriteUInt32(ChunkGroupReader.ReadUInt32());
     writer.WriteUInt32(ChunkGroupReader.ReadUInt32());
       }
     }
     else if ((ChunkEntries != null) && (ChunkEntries.Length == EntryCount))
     {
       for (int i = 0; i < EntryCount; i++)
       {
     writer.WriteUInt32(ChunkEntries[i].firstChunk);
     writer.WriteUInt32(ChunkEntries[i].samplesPerChunk);
     writer.WriteUInt32(ChunkEntries[i].sampleDescriptionIndex);
       }
     }
     else throw new Exception("SampleToChunkBox.Write: Nothing to write");
       }
 }
Beispiel #26
0
 public void Write(BoxWriter writer)
 {
     for (int i = 0; i < 9; i++) writer.WriteUInt32(matrix[i]);
 }
Beispiel #27
0
        public void Write(BoxWriter writer, byte version, uint LengthSizeOfTrafNum, uint LengthSizeOfTrunNum, uint LengthSizeOfSampleNum)
        {
            if (version == 1)
            {
                ulong tmpTime = Time - BaseTime;
                writer.WriteUInt64(tmpTime);
                writer.WriteUInt64(MoofOffset);
            }
            else
            {
                writer.WriteUInt32((uint)Time);
                writer.WriteUInt32((uint)MoofOffset);
            }

            switch (((LengthSizeOfTrafNum + 1) * 8))
            {
            case 0x18:
                //this.TrafNumber = reader.ReadUInt24();
                writer.WriteUInt24(TrafNumber);
                break;

            case 0x20:
                //this.TrafNumber = reader.ReadUInt32();
                writer.WriteUInt32(TrafNumber);
                break;

            case 8:
                //this.TrafNumber = reader.ReadByte();
                writer.Write((byte)TrafNumber);
                break;

            case 0x10:
                //this.TrafNumber = reader.ReadUInt16();
                writer.WriteUInt16((UInt16)TrafNumber);
                break;
            }

            switch (((LengthSizeOfTrunNum + 1) * 8))
            {
            case 0x18:
                //this.TrunNumber = reader.ReadUInt24();
                writer.WriteUInt24(TrunNumber);
                break;

            case 0x20:
                //this.TrunNumber = reader.ReadUInt32();
                writer.WriteUInt32(TrunNumber);
                break;

            case 8:
                //this.TrunNumber = reader.ReadByte();
                writer.Write((byte)TrunNumber);
                break;

            case 0x10:
                //this.TrunNumber = reader.ReadUInt16();
                writer.WriteUInt16((UInt16)TrunNumber);
                break;
            }

            switch (((LengthSizeOfSampleNum + 1) * 8))
            {
            case 8:
                //this.SampleNumber = reader.ReadByte();
                writer.Write((byte)SampleNumber);
                return;

            case 0x10:
                //this.SampleNumber = reader.ReadUInt16();
                writer.WriteUInt16((UInt16)SampleNumber);
                break;

            case 0x18:
                //this.SampleNumber = reader.ReadUInt24();
                writer.WriteUInt24(SampleNumber);
                return;

            case 0x20:
                //this.SampleNumber = reader.ReadUInt32();
                writer.WriteUInt32(SampleNumber);
                return;
            }
        }
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer)) {
            base.Write(writer);

            writer.WriteUInt32(SampleCount);
            if (EnumUtils.IsBitSet<TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags)base.Flags, TrackFragmentRunBoxFlags.DataOffsetPresent))
            {
              writer.WriteUInt32(DataOffset);
            }
            if (EnumUtils.IsBitSet<TrackFragmentRunBoxFlags>((TrackFragmentRunBoxFlags)base.Flags, TrackFragmentRunBoxFlags.FirstSampleFlagsPresent))
            {
              writer.WriteUInt32(FirstSampleFlags);
            }
            for (int i = 0; i < this.SampleCount; i++) {
              TrackFragmentRunSample item = Samples[i];
              item.Write(writer, base.Flags);
            }

              }
        }
Beispiel #29
0
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer))
            {
            base.Write(writer);
            if (Version == 1)
            {
                writer.WriteUInt64(creationTime);
                writer.WriteUInt64(modificationTime);
                writer.WriteUInt32(TimeScale);
                writer.WriteUInt64(Duration);
            }
            else
            {
                writer.WriteUInt32((uint)creationTime);
                writer.WriteUInt32((uint)modificationTime);
                writer.WriteUInt32(TimeScale);
                writer.WriteUInt32((uint)Duration);
            }

            writer.Write((Int16)language);
            writer.Write((Int16)0);
            }
        }
Beispiel #30
0
        /// <summary>
        /// Write - write the ChunkOffsetBox to output file.
        /// For every chunk offset written out, add fixup.
        /// ChunkOffset data is either stored in a temp file, or in the chunkOffsetArray.
        /// Data is in the temp file if we are  using PrepareSampleWriting, and in the chunkOffsetArray
        /// if we are simply copying boxes as they are, no recoding.
        /// </summary>
        /// <param name="writer"></param>
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer))
            {
            base.Write(writer);

            writer.WriteUInt32(entryCount);
            if (entryCount > 0)
            {
              if (ChunkOffsetReader != null)
              {
                ChunkOffsetReader.BaseStream.Position = 0L;
                for (int i = 0; i < entryCount; i++)
                {
                  uint offs = (uint)(ChunkOffsetReader.ReadUInt32() + fixup);
                  writer.WriteUInt32(offs);
                }
              }
              else if ((chunkOffsetArray != null) && (entryCount == chunkOffsetArray.Length))
              {
                for (int i = 0; i < entryCount; i++)
                {
                  writer.WriteUInt32((uint)(chunkOffsetArray[i] + fixup));
                }
              }
              else throw new Exception("ChunkOffsetBox.Write: nothing to write");
            }
            }
        }
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer)) {
     base.Write(writer);
     writer.WriteUInt32(TrackId);
     uint num = 0;
     num = (uint)((LengthSizeOfTrafNum << 4) | (LengthSizeOfTrunNum << 2) | LengthSizeOfSampleNum);
     writer.WriteUInt32(num);
     writer.WriteUInt32(NumberOfEntry);
     for (int i=0; i<this.NumberOfEntry; i++) {
       TrackFragmentRandomAccessEntry item = TrackFragmentRandomAccessEntries[i];
       item.Write(writer, base.Version, this.LengthSizeOfTrafNum, this.LengthSizeOfTrunNum, this.LengthSizeOfSampleNum);
     }
       }
 }
Beispiel #32
0
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
     base.Write(writer);
     writer.WriteUInt32(EntryCount);
     if (SyncSampleReader != null)
     {
       for (int i = 0; i < EntryCount; i++)
       {
         writer.WriteUInt32(SyncSampleReader.ReadUInt32());
       }
     }
     else if ((SampleNumbers != null) && (EntryCount == SampleNumbers.Length))
     {
       for (int i = 0; i < EntryCount; i++)
       {
         writer.WriteUInt32(SampleNumbers[i]);
       }
     }
     else throw new Exception("SyncSampleMapBox.Write: nothing to write");
     }
 }
Beispiel #33
0
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer))
            {
            base.Write(writer);
            if (Version == 1)
            {
                writer.WriteUInt64(creationTime);
                writer.WriteUInt64(modificationTime);
                writer.WriteUInt32(TrackID);
                writer.WriteUInt32((uint)0);
                writer.WriteUInt64(Duration);
            }
            else
            {
                writer.WriteUInt32((uint)creationTime);
                writer.WriteUInt32((uint)modificationTime);
                writer.WriteUInt32(TrackID);
                writer.WriteUInt32((uint)0);
                writer.WriteUInt32((uint)Duration);
            }

            for (int x = 0; x < 2; x++) writer.WriteUInt32((uint)0);
            writer.Write(Layer);
            writer.Write(AlternateGroup);
            writer.Write(_volume);
            writer.Write((UInt16)0);
            this.Matrix.Write(writer);
            writer.Write(_width);
            writer.Write(_height);
            }
        }
Beispiel #34
0
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
     base.Write(writer);
     writer.WriteUInt32(TrackID);
     writer.WriteUInt32(DefaultSampleDescriptionIndex);
     writer.WriteUInt32(DefaultSampleDuration);
     writer.WriteUInt32(DefaultSampleSize);
     writer.WriteUInt32(DefaultSampleFlags);
     }
 }
Beispiel #35
0
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer)) {
            base.Write(writer);

            writer.Write(major_brand);
            writer.WriteUInt32(minor_version);
            foreach (uint brand in compatible_brands) {
              writer.WriteUInt32(brand);
            }
              }
        }
        public override void Write(BoxWriter writer)
        {
            if (this.EntryCount == 0) {
                // this means we had no CTTS's which were different and thus this file
                // doesn't need them and most likely has no b-frames...
                return;
            }

            using (new SizeCalculator(this, writer))
            {
            base.Write(writer);
            writer.WriteUInt32(EntryCount);
            if (EntryCount > 0)
            {
              if (CompToSampleStream != null)
              {
                CompToSampleStream.Position = 0L;
                CompToSampleReader = new BinaryReader(CompToSampleStream);
                for (int i = 0; i < EntryCount; i++)
                {
                  writer.WriteUInt32(CompToSampleReader.ReadUInt32());
                  writer.WriteUInt32(CompToSampleReader.ReadUInt32());
                }
                CompToSampleStream.Close();
                CompToSampleStream.Dispose();
              }
              else
              {
                for (int i = 0; i < EntryCount; i++)
                {
                  writer.WriteUInt32(SampleCount[i]);
                  writer.WriteUInt32(SampleOffset[i]);
                }
              }
            }
            }
        }
Beispiel #37
0
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
       {
       base.Write(writer);
       writer.WriteUInt32(sampleSize);
       writer.WriteUInt32(SampleCount);
       if (SampleSizeReader != null)
       {
     if ((sampleSize == 0) && (SampleCount > 0))
     {
       if (SampleCount * 4 != SampleSizeReader.BaseStream.Length)
         throw new Exception("Inconsistent SampleSizeBox array size");
       for (int i = 0; i < sampleCount; i++)
         writer.WriteUInt32(SampleSizeReader.ReadUInt32());
     }
       }
       else if ((SampleSizeArray != null) && (SampleCount == SampleSizeArray.Length))
       {
     if ((sampleSize == 0) && (SampleCount > 0))
     {
       for (int i = 0; i < sampleCount; i++)
         writer.WriteUInt32(SampleSizeArray[i]);
     }
       }
       // don't throw an exception here (it won't be caught because we are inside multiple levels of using blocks;
       // let SiceCalculator detect the problem.
       //else throw new Exception("SampleSizeBox.Write: nothing to write");
        }
 }
Beispiel #38
0
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
     base.Write(writer);
     writer.WriteUInt32(EntryCount);
     if (EntryCount > 0)
     foreach (DataEntry entry in DataEntry)
     {
       if (entry.DataEntryUrlBox != null)
       {
         entry.DataEntryUrlBox.Write(writer);
       }
       if (entry.DataEntryUrnBox != null)
       {
         entry.DataEntryUrnBox.Write(writer);
       }
     }
     }
 }
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
     base.Write(writer);
     writer.WriteUInt32(EntryCount);
     if (SttsCountsReader != null)
     {
       for (int i = 0; i < EntryCount; i++)
       {
         writer.WriteUInt32(SttsCountsReader.ReadUInt32());
         writer.WriteUInt32(SttsTimeDeltaReader.ReadUInt32());
       }
     }
     else if ((SampleCount != null) && (SampleDelta != null) && (SampleCount.Length == EntryCount) && (SampleDelta.Length == EntryCount))
     {
       for (int i = 0; i < EntryCount; i++)
       {
         writer.WriteUInt32(SampleCount[i]);
         writer.WriteUInt32(SampleDelta[i]);
       }
     }
     else throw new Exception("Nothing to write");
     }
 }
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
     base.Write(writer);
     writer.WriteUInt32(hSpacing);
     writer.WriteUInt32(vSpacing);
     }
 }
Beispiel #41
0
 public virtual void Write(BoxWriter writer)
 {
     Common.Logger.Instance.Info("[Box::Write] writing a box of type [" + this.Type + ", " + this.GetType().Name + "], size [" + this.Size + "], offset [" + Offset + "], details: " + this.ToString());
       if (this.expectedType == BoxTypes.Any)  return;
       writer.WriteUInt32(this.size);
       writer.WriteBoxType(expectedType);
       if (this.size == 1)
       {
     writer.WriteUInt64(largeSize);
       }
 }
Beispiel #42
0
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer))
            {
            base.Write(writer);

            if (Version == 1)
            {
                writer.WriteUInt64(creationTime);
                writer.WriteUInt64(modificationTime);
                writer.WriteUInt32(TimeScale);
                writer.WriteUInt64(Duration);
            }
            else
            {
                writer.WriteUInt32((uint)creationTime);
                writer.WriteUInt32((uint)modificationTime);
                writer.WriteUInt32((uint)TimeScale);
                writer.WriteUInt32((uint)Duration);
            }

            writer.Write(rate[0]);
            writer.Write(rate[1]);
            writer.Write(volume, 0, 2);

            writer.Write((short)0);
            for (int x = 0; x < 2; x++) writer.WriteUInt32((uint)0);
            this.Matrix.Write(writer);
            for (int x = 0; x < 6; x++) writer.WriteUInt32((uint)0);

            writer.WriteUInt32(NextTrackID);
            }
        }
        public override void Write(BoxWriter writer)
        {
            using (new SizeCalculator(this, writer)) {
            base.Write(writer);

            writer.WriteUInt32(TrackId);
            if (EnumUtils.IsBitSet<TrackFragmentHeaderBoxFlags>((TrackFragmentHeaderBoxFlags)base.Flags, TrackFragmentHeaderBoxFlags.BaseDataOffsetPresent))
            {
                writer.WriteUInt64(BaseDataOffset);
            }
            if (EnumUtils.IsBitSet<TrackFragmentHeaderBoxFlags>((TrackFragmentHeaderBoxFlags)base.Flags, TrackFragmentHeaderBoxFlags.SampleDescriptionIndexPresent))
            {
                writer.WriteUInt32(SampleDescriptionIndex);
            }
            if (EnumUtils.IsBitSet<TrackFragmentHeaderBoxFlags>((TrackFragmentHeaderBoxFlags) base.Flags, TrackFragmentHeaderBoxFlags.DefaultSampleDurationPresent)) {
                writer.WriteUInt32(DefaultSampleDuration);
            }
            if (EnumUtils.IsBitSet<TrackFragmentHeaderBoxFlags>((TrackFragmentHeaderBoxFlags) base.Flags, TrackFragmentHeaderBoxFlags.DefaultSampleSizePresent)) {
                writer.WriteUInt32(DefaultSampleSize);
            }
            if (EnumUtils.IsBitSet<TrackFragmentHeaderBoxFlags>((TrackFragmentHeaderBoxFlags) base.Flags, TrackFragmentHeaderBoxFlags.DefaultSampleFlagsPresent)) {
                writer.WriteUInt32(DefaultSampleFlags);
            }
              }
        }
 public override void Write(BoxWriter writer)
 {
     using (new SizeCalculator(this, writer))
     {
     base.Write(writer);
     writer.WriteUInt32(CleanApertureWidthN);
     writer.WriteUInt32(CleanApertureWidthD);
     writer.WriteUInt32(CleanApertureHeightN);
     writer.WriteUInt32(CleanApertureHeightD);
     writer.WriteUInt32(HorizOffN);
     writer.WriteUInt32(HorizOffD);
     writer.WriteUInt32(VertOffN);
     writer.WriteUInt32(VertOffD);
     }
 }