internal static byte[] GetHeader(byte[] rawData, out SwfHeader header) { int offset = 0; header = new SwfHeader(); if (rawData.Length - offset < 8) { throw new ArgumentException("Data Length is less than 8 bytes"); } header.Compression = (SwfCompression)rawData[offset + 0]; if (!(Enum.GetValues(typeof(SwfCompression)).Cast <SwfCompression>().Contains(header.Compression) && rawData[offset + 1] == 0x57 && rawData[offset + 2] == 0x53)) { throw new ArgumentException("This Data is not SWF"); } header.Version = rawData[offset + 3]; header.FileLength = (int)TagUtilities.PickBytes(rawData, offset + 4, 4); rawData = header.Decompress(rawData); offset += 8; Rectangle rect; offset += Rectangle.GetRectangle(rawData, offset, out rect); header.FrameSize = rect; header.FrameRate = TagUtilities.PickBytes16(rawData, offset); offset += 2; header.FrameCount = TagUtilities.PickBytes16(rawData, offset); offset += 2; header.HeaderLength = offset; return(rawData); }