Ejemplo n.º 1
0
        /// <inheritdoc />
        /// <summary>
        /// </summary>
        /// <param name="bytes"></param>
        /// <param name="start"></param>
        /// <param name="finish"></param>
        public TrackFragmentBox(byte[] bytes, int start, int finish) : base(Mp4Identifier.Traf)
        {
            while (start < finish)
            {
                var mp4Box = Mp4Utils.GetBox(bytes, ref start, finish);

                switch (mp4Box?.Mp4Identifier)
                {
                case null:
                    continue;

                case Mp4Identifier.Tfhd:
                    Tfhd = mp4Box as TrackFragmentHeaderBox;
                    break;

                case Mp4Identifier.Sdtp:
                    Sdtp = mp4Box as SampleDependencyTypeBox;
                    break;

                case Mp4Identifier.Trun:
                    Trun = mp4Box as TrackRunBox;
                    break;

                case Mp4Identifier.Tfrf:
                    Tfrf = mp4Box as TfrfBox;
                    break;

                case Mp4Identifier.Tfxd:
                    Tfxd = mp4Box as TfxdBox;
                    break;
                }
            }
        }
Ejemplo n.º 2
0
        public void parseHeader(out DateTime creationTime, out DateTime modificationTime, out TimeSpan duration, out uint timescale)
        {
            creationTime     = Mp4Utils.time(creation_time);
            modificationTime = Mp4Utils.time(modification_time);
            timescale        = BinaryPrimitives.ReverseEndianness(scale);
            double seconds = ((double)BinaryPrimitives.ReverseEndianness(dur)) / timescale;

            duration = TimeSpan.FromSeconds(seconds);
        }
Ejemplo n.º 3
0
        /// <inheritdoc />
        /// <summary>
        /// </summary>
        /// <param name="bytes"></param>
        /// <param name="start"></param>
        /// <param name="finish"></param>
        public TfrfBox(byte[] bytes, int start, int finish) : base(Mp4Identifier.Tfrf)
        {
            Version = Mp4Utils.ReadReverseBytes(bytes, 1, ref start, finish)[0];
            Flags   = Mp4Utils.ReadReverseBytes(bytes, 3, ref start, finish);

            var length = (int)Mp4Utils.ReadReverseBytes(bytes, 1, ref start, finish)[0];

            Array = new Element[length];

            for (var index = 0; index < length; index++)
            {
                Array[index] = new Element(bytes, Version, ref start, finish);
            }
        }
Ejemplo n.º 4
0
        /// <inheritdoc />
        /// <summary>
        /// </summary>
        /// <param name="bytes"></param>
        /// <param name="start"></param>
        /// <param name="finish"></param>
        public MovieFragmentBox(byte[] bytes, int start, int finish) : base(Mp4Identifier.Moof)
        {
            while (start < finish)
            {
                var mp4Box = Mp4Utils.GetBox(bytes, ref start, finish);

                switch (mp4Box?.Mp4Identifier)
                {
                case null:
                    continue;

                case Mp4Identifier.Traf:
                    TrackFragmentBox = mp4Box as TrackFragmentBox;
                    break;

                case Mp4Identifier.Mfhd:
                    MovieFragmentHeaderBox = mp4Box as MovieFragmentHeaderBox;
                    break;
                }
            }
        }
Ejemplo n.º 5
0
        /// <summary>
        /// </summary>
        /// <param name="boxBytes"></param>
        /// <param name="start"></param>
        /// <param name="finish"></param>
        public Fragment(byte[] boxBytes, int start, int finish)
        {
            while (start < finish)
            {
                var mp4Box = Mp4Utils.GetBox(boxBytes, ref start, finish);

                switch (mp4Box?.Mp4Identifier)
                {
                case null:
                    continue;

                case Mp4Identifier.Mdat:
                    MediaDataBox = mp4Box as MediaDataBox;
                    break;

                case Mp4Identifier.Moof:
                    MovieFragmentBox = mp4Box as MovieFragmentBox;
                    break;
                }
            }
        }