Beispiel #1
0
        public static string Prettify(BurstCuttingArea?BCAResponse)
        {
            if (BCAResponse == null)
            {
                return(null);
            }

            BurstCuttingArea response = BCAResponse.Value;

            StringBuilder sb = new StringBuilder();

            #if DEBUG
            if (response.Reserved1 != 0)
            {
                sb.AppendFormat("Reserved1 = 0x{0:X2}", response.Reserved1).AppendLine();
            }
            if (response.Reserved2 != 0)
            {
                sb.AppendFormat("Reserved2 = 0x{0:X2}", response.Reserved2).AppendLine();
            }
            #endif

            sb.AppendFormat("Blu-ray Burst Cutting Area in hex follows:");
            sb.AppendLine(PrintHex.ByteArrayToHexArrayString(response.BCA, 80));

            return(sb.ToString());
        }
Beispiel #2
0
        public static BurstCuttingArea?Decode(byte[] BCAResponse)
        {
            if (BCAResponse == null)
            {
                return(null);
            }

            if (BCAResponse.Length != 68)
            {
                DicConsole.DebugWriteLine("BD BCA decoder", "Found incorrect Blu-ray BCA size ({0} bytes)",
                                          BCAResponse.Length);
                return(null);
            }

            BurstCuttingArea decoded = new BurstCuttingArea
            {
                DataLength = BigEndianBitConverter.ToUInt16(BCAResponse, 0),
                Reserved1  = BCAResponse[2],
                Reserved2  = BCAResponse[3],
                BCA        = new byte[64]
            };

            Array.Copy(BCAResponse, 4, decoded.BCA, 0, 64);

            return(decoded);
        }