コード例 #1
0
ファイル: BluRaySupParser.cs プロジェクト: Markomas/PgsToSrt
        /// <summary>
        /// parse an PDS packet which contain palette info
        /// </summary>
        /// <param name="buffer">Buffer of raw byte data, starting right after segment</param>
        /// <param name="segment">object containing info about the current segment</param>
        /// <returns>number of valid palette entries (-1 for fault)</returns>
        private static PdsData ParsePds(byte[] buffer, SupSegment segment)
        {
            int paletteId = buffer[0];  // 8bit palette ID (0..7)
            // 8bit palette version number (incremented for each palette change)
            int paletteUpdate = buffer[1];

            var p = new PaletteInfo {
                PaletteSize = (segment.Size - 2) / 5
            };

            if (p.PaletteSize <= 0)
            {
                return new PdsData {
                           Message = "Empty palette"
                }
            }
            ;

            p.PaletteBuffer = new byte[p.PaletteSize * 5];
            Buffer.BlockCopy(buffer, 2, p.PaletteBuffer, 0, p.PaletteSize * 5); // save palette buffer in palette object

            return(new PdsData
            {
                Message = "PalId: " + paletteId + ", update: " + paletteUpdate + ", " + p.PaletteSize + " entries",
                PaletteId = paletteId,
                PaletteVersion = paletteUpdate,
                PaletteInfo = p,
            });
        }
コード例 #2
0
 public PaletteInfo(PaletteInfo paletteInfo)
 {
     PaletteSize   = paletteInfo.PaletteSize;
     PaletteBuffer = new byte[paletteInfo.PaletteBuffer.Length];
     Buffer.BlockCopy(paletteInfo.PaletteBuffer, 0, PaletteBuffer, 0, PaletteBuffer.Length);
 }