コード例 #1
0
ファイル: AribB36.cs プロジェクト: zzfeed/subtitleedit
            public CaptionText(byte[] buffer, int index, string languageCode)
            {
                DataGroupId             = (byte)(buffer[index] >> 2);
                DataGroupVersion        = (byte)(buffer[index] & 0b00000011);
                DataGroupLinkNumber     = buffer[index + 1];
                LastDataGroupLinkNumber = buffer[index + 2];
                DataGroupSize           = (buffer[index + 3] << 8) + buffer[index + 4];
                DataUnitLoopLength      = (buffer[index + 12] << 16) + (buffer[index + 13] << 8) + buffer[index + 14];
                CaptionTextUnits        = new List <CaptionTextUnit>(1);
                var unitIndex = index + 15;
                int end       = unitIndex + DataUnitLoopLength;

                while (unitIndex < end)
                {
                    var unit = new CaptionTextUnit();
                    unit.UnitSeparator     = buffer[unitIndex++];
                    unit.DataUnitParameter = buffer[unitIndex++];
                    unit.DataUnitSize      = (buffer[unitIndex++] << 16) + (buffer[unitIndex++] << 8) + buffer[unitIndex++];
                    unit.AribText          = new AribText(buffer, unitIndex, languageCode, unit.DataUnitSize);
                    unitIndex += unit.DataUnitSize;
                    if (unit.UnitSeparator == 0x1f && unit.DataUnitParameter == 0x20 && unit.AribText.Texts.Count > 0) // DataUnitParameter 0x20=Text, 0x35=Bitmap data
                    {
                        CaptionTextUnits.Add(unit);
                    }
                }
            }
コード例 #2
0
ファイル: AribB36.cs プロジェクト: LeonCheung/subtitleedit
 public CaptionText(byte[] buffer, int index, string languageCode)
 {
     DataGroupId = (byte)(buffer[index] >> 2);
     DataGroupVersion = (byte)(buffer[index] & VobSub.Helper.B00000011);
     DataGroupLinkNumber = buffer[index + 1];
     LastDataGroupLinkNumber = buffer[index + 2];
     DataGroupSize = (buffer[index + 3] << 8) + buffer[index + 4];
     DataUnitLoopLength = (buffer[index + 12] << 16) + (buffer[index + 13] << 8) + buffer[index + 14];
     CaptionTextUnits = new List<CaptionTextUnit>(1);
     var unitIndex = index + 15;
     int end = unitIndex + DataUnitLoopLength;
     while (unitIndex < end)
     {
         var unit = new CaptionTextUnit();
         unit.UnitSeparator = buffer[unitIndex++];
         unit.DataUnitParameter = buffer[unitIndex++];
         unit.DataUnitSize = (buffer[unitIndex++] << 16) + (buffer[unitIndex++] << 8) + buffer[unitIndex++];
         unit.AribText = new AribText(buffer, unitIndex, languageCode, unit.DataUnitSize);
         unitIndex += unit.DataUnitSize;
         if (unit.UnitSeparator == 0x1f && unit.DataUnitParameter == 0x20 && unit.AribText.Texts.Count > 0) // DataUnitParameter 0x20=Text, 0x35=Bitmap data
         {
             CaptionTextUnits.Add(unit);
         }
     }
 }