예제 #1
0
        private bool IsSupportedFileFormat(ReadOnlySpan <byte> header)
        {
            if (header.Length >= HeaderSize &&
                FormatDetectorUtils.IsMp4OrMovHeader(header.Slice(4)))
            {
                var subHeader = header.Slice(8);
                return
                    // MP4 Base Media v1 [IS0 14496-12:2003]
                    ((
                         subHeader[0] == 0x69 &&    // i
                         subHeader[1] == 0x73 &&    // s
                         subHeader[2] == 0x6F &&    // o
                         subHeader[3] == 0x6D       // m
                         )
                     ||
                     // MP4 Base Media v2 [ISO 14496-12:2005]
                     (
                         subHeader[0] == 0x69 &&    // i
                         subHeader[1] == 0x73 &&    // s
                         subHeader[2] == 0x6F &&    // o
                         subHeader[3] == 0x32       // 2
                     )
                     ||
                     // MP4 Base w/ AVC ext [ISO 14496-12:2005]
                     (
                         subHeader[0] == 0x61 &&    // a
                         subHeader[1] == 0x76 &&    // v
                         subHeader[2] == 0x63 &&    // c
                         subHeader[3] == 0x31       // 1
                     )
                     ||
                     // MP4 v1 [ISO 14496-1:ch13]
                     (
                         subHeader[0] == 0x6D &&    // m
                         subHeader[1] == 0x70 &&    // p
                         subHeader[2] == 0x34 &&    // 4
                         subHeader[3] == 0x31       // 1
                     )
                     ||
                     // MP4 v2 [ISO 14496-14]
                     (
                         subHeader[0] == 0x6D &&    // m
                         subHeader[1] == 0x70 &&    // p
                         subHeader[2] == 0x34 &&    // 4
                         subHeader[3] == 0x32       // 2
                     )
                     ||
                     // MPEG v4 system
                     // Dynamic Adaptive Streaming over HTTP
                     (
                         subHeader[0] == 0x64 &&    // d
                         subHeader[1] == 0x61 &&    // a
                         subHeader[2] == 0x73 &&    // s
                         subHeader[3] == 0x68       // h
                     ));
            }

            return(false);
        }
예제 #2
0
        private bool IsSupportedFileFormat(ReadOnlySpan <byte> header)
        {
            if (header.Length >= HeaderSize &&
                FormatDetectorUtils.IsMkvOrWebmHeader(header))
            {
                return(header.Slice(4).IndexOf(_matroskaMarker) > -1);
            }

            return(false);
        }
        private bool IsSupportedFileFormat(ReadOnlySpan <byte> header)
        {
            if (header.Length >= HeaderSize &&
                FormatDetectorUtils.IsMp4OrMovHeader(header.Slice(4)))
            {
                return
                    (header[8] == 0x71 &&   // q
                     header[9] == 0x74);    // t
            }

            return(false);
        }