private TS_BITMAP_DATA_EX Create_TS_BITMAP_DATA_EX(TSBitmapDataExFlags_Values flags, byte codecId) { TS_BITMAP_DATA_EX tsBitmapDataEx = new TS_BITMAP_DATA_EX(); tsBitmapDataEx.bpp = 32; // Hard code tsBitmapDataEx.flags = flags; tsBitmapDataEx.reserved = 0; // It Must be set to zero. tsBitmapDataEx.codecID = codecId; tsBitmapDataEx.width = 0; tsBitmapDataEx.height = 0; // bitmapDataLength and bitmapData was handled in call method. if(flags.HasFlag(TSBitmapDataExFlags_Values.EX_COMPRESSED_BITMAP_HEADER_PRESENT)) { tsBitmapDataEx.exBitmapDataHeader = Create_TS_COMPRESSED_BITMAP_HEADER_EX(); } return tsBitmapDataEx; }
/// <summary> /// Parse TS_BITMAP_DATA_EX /// (parser index is updated according to parsed length) /// </summary> /// <param name="data">data to be parsed</param> /// <param name="currentIndex">current parser index</param> /// <returns>TS_BITMAP_DATA_EX</returns> private TS_BITMAP_DATA_EX ParseTsBitmapDataEx(byte[] data, ref int currentIndex) { TS_BITMAP_DATA_EX bitmapDataEx = new TS_BITMAP_DATA_EX(); // TS_BITMAP_DATA_EX: bpp bitmapDataEx.bpp = ParseByte(data, ref currentIndex); // TS_BITMAP_DATA_EX: flags bitmapDataEx.flags = (TSBitmapDataExFlags_Values)ParseByte(data, ref currentIndex); // TS_BITMAP_DATA_EX: reserved bitmapDataEx.reserved = ParseByte(data, ref currentIndex); // TS_BITMAP_DATA_EX: codecID bitmapDataEx.codecID = ParseByte(data, ref currentIndex); // TS_BITMAP_DATA_EX: width bitmapDataEx.width = ParseUInt16(data, ref currentIndex, false); // TS_BITMAP_DATA_EX: height bitmapDataEx.height = ParseUInt16(data, ref currentIndex, false); // TS_BITMAP_DATA_EX: bitmapDataLength bitmapDataEx.bitmapDataLength = ParseUInt32(data, ref currentIndex, false); if (IsFlagExist((byte)bitmapDataEx.flags, (byte)TSBitmapDataExFlags_Values.EX_COMPRESSED_BITMAP_HEADER_PRESENT)) { bitmapDataEx.exBitmapDataHeader = ParseExBitmapdataHeader(data, ref currentIndex); } // TS_BITMAP_DATA_EX: bitmapData bitmapDataEx.bitmapData = GetBytes(data, ref currentIndex, (int)bitmapDataEx.bitmapDataLength); return bitmapDataEx; }
/// <summary> /// Parse TS_BITMAP_DATA_EX /// (parser index is updated according to parsed length) /// </summary> /// <param name="data">data to be parsed</param> /// <param name="currentIndex">current parser index</param> /// <returns>TS_BITMAP_DATA_EX</returns> private TS_BITMAP_DATA_EX ParseTsBitmapDataEx(byte[] data, ref int currentIndex) { TS_BITMAP_DATA_EX bitmapDataEx = new TS_BITMAP_DATA_EX(); // TS_BITMAP_DATA_EX: bpp bitmapDataEx.bpp = ParseByte(data, ref currentIndex); // TS_BITMAP_DATA_EX: reserved1 bitmapDataEx.reserved1 = ParseByte(data, ref currentIndex); // TS_BITMAP_DATA_EX: reserved2 bitmapDataEx.reserved2 = ParseByte(data, ref currentIndex); // TS_BITMAP_DATA_EX: codecID bitmapDataEx.codecID = ParseByte(data, ref currentIndex); // TS_BITMAP_DATA_EX: width bitmapDataEx.width = ParseUInt16(data, ref currentIndex, false); // TS_BITMAP_DATA_EX: height bitmapDataEx.height = ParseUInt16(data, ref currentIndex, false); // TS_BITMAP_DATA_EX: bitmapDataLength bitmapDataEx.bitmapDataLength = ParseUInt32(data, ref currentIndex, false); // TS_BITMAP_DATA_EX: bitmapData bitmapDataEx.bitmapData = GetBytes(data, ref currentIndex, (int)bitmapDataEx.bitmapDataLength); return bitmapDataEx; }