mirror of
https://github.com/aaru-dps/Aaru.Decoders.git
synced 2025-12-16 19:24:32 +00:00
Reformatted.
This commit is contained in:
256
CD/ATIP.cs
256
CD/ATIP.cs
@@ -224,14 +224,14 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static CDATIP? Decode(byte[] CDATIPResponse)
|
||||
{
|
||||
if (CDATIPResponse == null)
|
||||
if(CDATIPResponse == null)
|
||||
return null;
|
||||
|
||||
CDATIP decoded = new CDATIP();
|
||||
|
||||
BigEndianBitConverter.IsLittleEndian = BitConverter.IsLittleEndian;
|
||||
|
||||
if (CDATIPResponse.Length != 32 && CDATIPResponse.Length != 28)
|
||||
if(CDATIPResponse.Length != 32 && CDATIPResponse.Length != 28)
|
||||
{
|
||||
DicConsole.DebugWriteLine("CD ATIP decoder", "Expected CD ATIP size (32 bytes) is not received size ({0} bytes), not decoding", CDATIPResponse.Length);
|
||||
return null;
|
||||
@@ -276,7 +276,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
decoded.Reserved8 = CDATIPResponse[23];
|
||||
decoded.Reserved9 = CDATIPResponse[27];
|
||||
|
||||
if (CDATIPResponse.Length >= 32)
|
||||
if(CDATIPResponse.Length >= 32)
|
||||
{
|
||||
decoded.S4Values = new byte[3];
|
||||
Array.Copy(CDATIPResponse, 28, decoded.S4Values, 0, 3);
|
||||
@@ -288,21 +288,21 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static string Prettify(CDATIP? CDATIPResponse)
|
||||
{
|
||||
if (CDATIPResponse == null)
|
||||
if(CDATIPResponse == null)
|
||||
return null;
|
||||
|
||||
CDATIP response = CDATIPResponse.Value;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
if (response.DDCD)
|
||||
if(response.DDCD)
|
||||
{
|
||||
sb.AppendFormat("Indicative Target Writing Power: 0x{0:X2}", response.ITWP).AppendLine();
|
||||
if (response.DiscType)
|
||||
if(response.DiscType)
|
||||
sb.AppendLine("Disc is DDCD-RW");
|
||||
else
|
||||
sb.AppendLine("Disc is DDCD-R");
|
||||
switch (response.ReferenceSpeed)
|
||||
switch(response.ReferenceSpeed)
|
||||
{
|
||||
case 2:
|
||||
sb.AppendLine("Reference speed is 4x");
|
||||
@@ -321,9 +321,9 @@ namespace DiscImageChef.Decoders.CD
|
||||
else
|
||||
{
|
||||
sb.AppendFormat("Indicative Target Writing Power: 0x{0:X2}", response.ITWP & 0x07).AppendLine();
|
||||
if (response.DiscType)
|
||||
if(response.DiscType)
|
||||
{
|
||||
switch (response.DiscSubType)
|
||||
switch(response.DiscSubType)
|
||||
{
|
||||
case 0:
|
||||
sb.AppendLine("Disc is CD-RW");
|
||||
@@ -353,7 +353,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
sb.AppendFormat("Unknown CD-RW disc subtype: {0}", response.DiscSubType).AppendLine();
|
||||
break;
|
||||
}
|
||||
switch (response.ReferenceSpeed)
|
||||
switch(response.ReferenceSpeed)
|
||||
{
|
||||
case 1:
|
||||
sb.AppendLine("Reference speed is 2x");
|
||||
@@ -366,7 +366,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
else
|
||||
{
|
||||
sb.AppendLine("Disc is CD-R");
|
||||
switch (response.DiscSubType)
|
||||
switch(response.DiscSubType)
|
||||
{
|
||||
case 0:
|
||||
sb.AppendLine("Disc is normal speed (CLV) CD-R");
|
||||
@@ -398,7 +398,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
}
|
||||
}
|
||||
|
||||
if (response.URU)
|
||||
if(response.URU)
|
||||
sb.AppendLine("Disc use is unrestricted");
|
||||
else
|
||||
sb.AppendLine("Disc use is restricted");
|
||||
@@ -415,13 +415,13 @@ namespace DiscImageChef.Decoders.CD
|
||||
sb.AppendFormat("S4 value: 0x{0:X6}", (response.S4Values[0] << 16) + (response.S4Values[1] << 8) + response.S4Values[2]).AppendLine();
|
||||
}
|
||||
|
||||
if (response.LeadInStartMin == 97)
|
||||
if(response.LeadInStartMin == 97)
|
||||
{
|
||||
int type = response.LeadInStartFrame % 10;
|
||||
int frm = response.LeadInStartFrame - type;
|
||||
string manufacturer = "";
|
||||
|
||||
if (response.DiscType)
|
||||
if(response.DiscType)
|
||||
sb.AppendLine("Disc uses phase change");
|
||||
else
|
||||
{
|
||||
@@ -431,287 +431,287 @@ namespace DiscImageChef.Decoders.CD
|
||||
sb.AppendLine("Disc uses short strategy type dye (Phthalocyanine, etc...)");
|
||||
}
|
||||
|
||||
switch (response.LeadInStartSec)
|
||||
switch(response.LeadInStartSec)
|
||||
{
|
||||
case 15:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "TDK Corporation";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Ritek Co.";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Mitsubishi Chemical Corporation";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "NAN-YA Plastics Corporation";
|
||||
break;
|
||||
case 16:
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Shenzen SG&Gast Digital Optical Discs";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Grand Advance Technology Ltd.";
|
||||
break;
|
||||
case 17:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Moser Baer India Limited";
|
||||
break;
|
||||
case 18:
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Wealth Fair Investment Ltd.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "Taroko International Co. Ltd.";
|
||||
break;
|
||||
case 20:
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "CDA Datenträger Albrechts GmbH";
|
||||
break;
|
||||
case 21:
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Grupo Condor S.L.";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Bestdisc Technology Corporation";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "Optical Disc Manufacturing Equipment";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Sound Sound Multi-Media Development Ltd.";
|
||||
break;
|
||||
case 22:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Woongjin Media Corp.";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Seantram Technology Inc.";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Advanced Digital Media";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "EXIMPO";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "CIS Technology Inc.";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Hong Kong Digital Technology Co., Ltd.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "Acer Media Technology, Inc.";
|
||||
break;
|
||||
case 23:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Matsushita Electric Industrial Co., Ltd.";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Doremi Media Co., Ltd.";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Nacar Media s.r.l.";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Audio Distributors Co., Ltd.";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "Victor Company of Japan, Ltd.";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Optrom Inc.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "Customer Pressing Oosterhout";
|
||||
break;
|
||||
case 24:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Taiyo Yuden Company Ltd.";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "SONY Corporation";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Computer Support Italy s.r.l.";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Unitech Japan Inc.";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "kdg mediatech AG";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Guann Yinn Co., Ltd.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "Harmonic Hall Optical Disc Ltd.";
|
||||
break;
|
||||
case 25:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "MPO";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Hitachi Maxell, Ltd.";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Infodisc Technology Co. Ltd.";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "Vivastar AG";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "AMS Technology Inc.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "Xcitec Inc.";
|
||||
break;
|
||||
case 26:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Fornet International Pte Ltd.";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "POSTECH Corporation";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "SKC Co., Ltd.";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Optical Disc Corporation";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "FUJI Photo Film Co., Ltd.";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Lead Data Inc.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "CMC Magnetics Corporation";
|
||||
break;
|
||||
case 27:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Digital Storage Technology Co., Ltd.";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Plasmon Data systems Ltd.";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Princo Corporation";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Pioneer Video Corporation";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "Kodak Japan Ltd.";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Mitsui Chemicals, Inc.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "Ricoh Company Ltd.";
|
||||
break;
|
||||
case 28:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Opti.Me.S. S.p.A.";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Gigastore Corporation";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Multi Media Masters & Machinary SA";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Auvistar Industry Co., Ltd.";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "King Pro Mediatek Inc.";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Delphi Technology Inc.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "Friendly CD-Tek Co.";
|
||||
break;
|
||||
case 29:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Taeil Media Co., Ltd.";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Vanguard Disc Inc.";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Unidisc Technology Co., Ltd.";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Hile Optical Disc Technology Corp.";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "Viva Magnetics Ltd.";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "General Magnetics Ltd.";
|
||||
break;
|
||||
case 30:
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "CDA Datenträger Albrechts GmbH";
|
||||
break;
|
||||
case 31:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Ritek Co.";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Grand Advance Technology Ltd.";
|
||||
break;
|
||||
case 32:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "TDK Corporation";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Prodisc Technology Inc.";
|
||||
break;
|
||||
case 34:
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Mitsubishi Chemical Corporation";
|
||||
break;
|
||||
case 42:
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Advanced Digital Media";
|
||||
break;
|
||||
case 45:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Fornet International Pte Ltd.";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Unitech Japan Inc.";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Acer Media Technology, Inc.";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "CIS Technology Inc.";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Guann Yinn Co., Ltd.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "Xcitec Inc.";
|
||||
break;
|
||||
case 46:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Taiyo Yuden Company Ltd.";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Hong Kong Digital Technology Co., Ltd.";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Multi Media Masters & Machinary SA";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Computer Support Italy s.r.l.";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "FUJI Photo Film Co., Ltd.";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Auvistar Industry Co., Ltd.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "CMC Magnetics Corporation";
|
||||
break;
|
||||
case 47:
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Hitachi Maxell, Ltd.";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Princo Corporation";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "POSTECH Corporation";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Ritek Co.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "Prodisc Technology Inc.";
|
||||
break;
|
||||
case 48:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "Ricoh Company Ltd.";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Kodak Japan Ltd.";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Plasmon Data systems Ltd.";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Pioneer Video Corporation";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "Digital Storage Technology Co., Ltd.";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Mitsui Chemicals, Inc.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "Lead Data Inc.";
|
||||
break;
|
||||
case 49:
|
||||
if (frm == 00)
|
||||
if(frm == 00)
|
||||
manufacturer = "TDK Corporation";
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Gigastore Corporation";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "King Pro Mediatek Inc.";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "Opti.Me.S. S.p.A.";
|
||||
if (frm == 40)
|
||||
if(frm == 40)
|
||||
manufacturer = "Victor Company of Japan, Ltd.";
|
||||
if (frm == 60)
|
||||
if(frm == 60)
|
||||
manufacturer = "Matsushita Electric Industrial Co., Ltd.";
|
||||
break;
|
||||
case 50:
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Vanguard Disc Inc.";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Mitsubishi Chemical Corporation";
|
||||
if (frm == 30)
|
||||
if(frm == 30)
|
||||
manufacturer = "CDA Datenträger Albrechts GmbH";
|
||||
break;
|
||||
case 51:
|
||||
if (frm == 10)
|
||||
if(frm == 10)
|
||||
manufacturer = "Grand Advance Technology Ltd.";
|
||||
if (frm == 20)
|
||||
if(frm == 20)
|
||||
manufacturer = "Infodisc Technology Co. Ltd.";
|
||||
if (frm == 50)
|
||||
if(frm == 50)
|
||||
manufacturer = "Hile Optical Disc Technology Corp.";
|
||||
break;
|
||||
}
|
||||
|
||||
if (manufacturer != "")
|
||||
if(manufacturer != "")
|
||||
sb.AppendFormat("Disc manufactured by: {0}", manufacturer).AppendLine();
|
||||
}
|
||||
|
||||
|
||||
@@ -193,7 +193,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static CDText? Decode(byte[] CDTextResponse)
|
||||
{
|
||||
if (CDTextResponse == null)
|
||||
if(CDTextResponse == null)
|
||||
return null;
|
||||
|
||||
CDText decoded = new CDText();
|
||||
@@ -205,16 +205,16 @@ namespace DiscImageChef.Decoders.CD
|
||||
decoded.Reserved2 = CDTextResponse[3];
|
||||
decoded.DataPacks = new CDTextPack[(decoded.DataLength - 2) / 18];
|
||||
|
||||
if (decoded.DataLength == 2)
|
||||
if(decoded.DataLength == 2)
|
||||
return null;
|
||||
|
||||
if (decoded.DataLength + 2 != CDTextResponse.Length)
|
||||
if(decoded.DataLength + 2 != CDTextResponse.Length)
|
||||
{
|
||||
DicConsole.DebugWriteLine("CD-TEXT decoder", "Expected CD-TEXT size ({0} bytes) is not received size ({1} bytes), not decoding", decoded.DataLength + 2, CDTextResponse.Length);
|
||||
return null;
|
||||
}
|
||||
|
||||
for (int i = 0; i < ((decoded.DataLength - 2) / 18); i++)
|
||||
for(int i = 0; i < ((decoded.DataLength - 2) / 18); i++)
|
||||
{
|
||||
decoded.DataPacks[i].HeaderID1 = CDTextResponse[0 + i * 18 + 4];
|
||||
decoded.DataPacks[i].HeaderID2 = CDTextResponse[1 + i * 18 + 4];
|
||||
@@ -232,22 +232,22 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static string Prettify(CDText? CDTextResponse)
|
||||
{
|
||||
if (CDTextResponse == null)
|
||||
if(CDTextResponse == null)
|
||||
return null;
|
||||
|
||||
CDText response = CDTextResponse.Value;
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
#if DEBUG
|
||||
#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
|
||||
#endif
|
||||
|
||||
foreach (CDTextPack descriptor in response.DataPacks)
|
||||
foreach(CDTextPack descriptor in response.DataPacks)
|
||||
{
|
||||
if ((descriptor.HeaderID1 & 0x80) != 0x80)
|
||||
if((descriptor.HeaderID1 & 0x80) != 0x80)
|
||||
{
|
||||
// Ignore NOPs
|
||||
if((descriptor.HeaderID1 & 0x80) != 0)
|
||||
@@ -255,12 +255,12 @@ namespace DiscImageChef.Decoders.CD
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (descriptor.HeaderID1)
|
||||
switch(descriptor.HeaderID1)
|
||||
{
|
||||
case 0x80:
|
||||
{
|
||||
sb.Append("CD-Text pack contains title for ");
|
||||
if (descriptor.HeaderID2 == 0x00)
|
||||
if(descriptor.HeaderID2 == 0x00)
|
||||
sb.AppendLine("album");
|
||||
else
|
||||
sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
|
||||
@@ -269,7 +269,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
case 0x81:
|
||||
{
|
||||
sb.Append("CD-Text pack contains performer for ");
|
||||
if (descriptor.HeaderID2 == 0x00)
|
||||
if(descriptor.HeaderID2 == 0x00)
|
||||
sb.AppendLine("album");
|
||||
else
|
||||
sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
|
||||
@@ -278,7 +278,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
case 0x82:
|
||||
{
|
||||
sb.Append("CD-Text pack contains songwriter for ");
|
||||
if (descriptor.HeaderID2 == 0x00)
|
||||
if(descriptor.HeaderID2 == 0x00)
|
||||
sb.AppendLine("album");
|
||||
else
|
||||
sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
|
||||
@@ -286,7 +286,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
}
|
||||
case 0x83:
|
||||
{
|
||||
if (descriptor.HeaderID2 == 0x00)
|
||||
if(descriptor.HeaderID2 == 0x00)
|
||||
sb.AppendLine("album");
|
||||
else
|
||||
sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
|
||||
@@ -295,7 +295,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
case 0x84:
|
||||
{
|
||||
sb.Append("CD-Text pack contains arranger for ");
|
||||
if (descriptor.HeaderID2 == 0x00)
|
||||
if(descriptor.HeaderID2 == 0x00)
|
||||
sb.AppendLine("album");
|
||||
else
|
||||
sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
|
||||
@@ -304,7 +304,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
case 0x85:
|
||||
{
|
||||
sb.Append("CD-Text pack contains content provider's message for ");
|
||||
if (descriptor.HeaderID2 == 0x00)
|
||||
if(descriptor.HeaderID2 == 0x00)
|
||||
sb.AppendLine("album");
|
||||
else
|
||||
sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
|
||||
@@ -344,7 +344,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
}
|
||||
case 0x8E:
|
||||
{
|
||||
if (descriptor.HeaderID2 == 0x00)
|
||||
if(descriptor.HeaderID2 == 0x00)
|
||||
sb.AppendLine("CD-Text pack contains UPC");
|
||||
else
|
||||
sb.AppendFormat("track {0}", descriptor.HeaderID2).AppendLine();
|
||||
@@ -357,7 +357,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
}
|
||||
}
|
||||
|
||||
switch (descriptor.HeaderID1)
|
||||
switch(descriptor.HeaderID1)
|
||||
{
|
||||
case 0x80:
|
||||
case 0x81:
|
||||
@@ -369,7 +369,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
case 0x87:
|
||||
case 0x8E:
|
||||
{
|
||||
if (descriptor.DBCC)
|
||||
if(descriptor.DBCC)
|
||||
sb.AppendLine("Double Byte Character Code is used");
|
||||
sb.AppendFormat("Block number {0}", descriptor.BlockNumber).AppendLine();
|
||||
sb.AppendFormat("Character position {0}", descriptor.CharacterPosition).AppendLine();
|
||||
|
||||
@@ -152,7 +152,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static CDFullTOC? Decode(byte[] CDFullTOCResponse)
|
||||
{
|
||||
if (CDFullTOCResponse == null)
|
||||
if(CDFullTOCResponse == null)
|
||||
return null;
|
||||
|
||||
CDFullTOC decoded = new CDFullTOC();
|
||||
@@ -164,13 +164,13 @@ namespace DiscImageChef.Decoders.CD
|
||||
decoded.LastCompleteSession = CDFullTOCResponse[3];
|
||||
decoded.TrackDescriptors = new TrackDataDescriptor[(decoded.DataLength - 2) / 11];
|
||||
|
||||
if (decoded.DataLength + 2 != CDFullTOCResponse.Length)
|
||||
if(decoded.DataLength + 2 != CDFullTOCResponse.Length)
|
||||
{
|
||||
DicConsole.DebugWriteLine("CD full TOC decoder", "Expected CDFullTOC size ({0} bytes) is not received size ({1} bytes), not decoding", decoded.DataLength + 2, CDFullTOCResponse.Length);
|
||||
return null;
|
||||
}
|
||||
|
||||
for (int i = 0; i < ((decoded.DataLength - 2) / 11); i++)
|
||||
for(int i = 0; i < ((decoded.DataLength - 2) / 11); i++)
|
||||
{
|
||||
decoded.TrackDescriptors[i].SessionNumber = CDFullTOCResponse[0 + i * 11 + 4];
|
||||
decoded.TrackDescriptors[i].ADR = (byte)((CDFullTOCResponse[1 + i * 11 + 4] & 0xF0) >> 4);
|
||||
@@ -193,7 +193,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static string Prettify(CDFullTOC? CDFullTOCResponse)
|
||||
{
|
||||
if (CDFullTOCResponse == null)
|
||||
if(CDFullTOCResponse == null)
|
||||
return null;
|
||||
|
||||
CDFullTOC response = CDFullTOCResponse.Value;
|
||||
@@ -204,9 +204,9 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
sb.AppendFormat("First complete session number: {0}", response.FirstCompleteSession).AppendLine();
|
||||
sb.AppendFormat("Last complete session number: {0}", response.LastCompleteSession).AppendLine();
|
||||
foreach (TrackDataDescriptor descriptor in response.TrackDescriptors)
|
||||
foreach(TrackDataDescriptor descriptor in response.TrackDescriptors)
|
||||
{
|
||||
if ((descriptor.CONTROL & 0x08) == 0x08 ||
|
||||
if((descriptor.CONTROL & 0x08) == 0x08 ||
|
||||
(descriptor.ADR != 1 && descriptor.ADR != 5 && descriptor.ADR != 4 && descriptor.ADR != 6) ||
|
||||
descriptor.TNO != 0)
|
||||
{
|
||||
@@ -233,19 +233,19 @@ namespace DiscImageChef.Decoders.CD
|
||||
lastSession = descriptor.SessionNumber;
|
||||
}
|
||||
|
||||
switch (descriptor.ADR)
|
||||
switch(descriptor.ADR)
|
||||
{
|
||||
case 1:
|
||||
case 4:
|
||||
{
|
||||
switch (descriptor.POINT)
|
||||
switch(descriptor.POINT)
|
||||
{
|
||||
case 0xA0:
|
||||
{
|
||||
if (descriptor.ADR == 4)
|
||||
if(descriptor.ADR == 4)
|
||||
{
|
||||
sb.AppendFormat("First video track number: {0}", descriptor.PMIN).AppendLine();
|
||||
switch (descriptor.PSEC)
|
||||
switch(descriptor.PSEC)
|
||||
{
|
||||
case 0x10:
|
||||
sb.AppendLine("CD-V single in NTSC format with digital stereo sound");
|
||||
@@ -276,7 +276,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
else
|
||||
{
|
||||
sb.AppendFormat("First track number: {0} (", descriptor.PMIN);
|
||||
switch ((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
{
|
||||
case TOC_CONTROL.TwoChanNoPreEmph:
|
||||
sb.Append(StereoNoPre);
|
||||
@@ -305,12 +305,12 @@ namespace DiscImageChef.Decoders.CD
|
||||
}
|
||||
case 0xA1:
|
||||
{
|
||||
if (descriptor.ADR == 4)
|
||||
if(descriptor.ADR == 4)
|
||||
sb.AppendFormat("Last video track number: {0}", descriptor.PMIN).AppendLine();
|
||||
else
|
||||
{
|
||||
sb.AppendFormat("Last track number: {0} (", descriptor.PMIN);
|
||||
switch ((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
{
|
||||
case TOC_CONTROL.TwoChanNoPreEmph:
|
||||
sb.Append(StereoNoPre);
|
||||
@@ -344,7 +344,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
sb.AppendFormat("Lead-out start position: {0:D2}:{1:D2}:{2:D2}", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME).AppendLine();
|
||||
//sb.AppendFormat("Absolute time: {3:D2}:{0:D2}:{1:D2}:{2:D2}", descriptor.Min, descriptor.Sec, descriptor.Frame, descriptor.HOUR).AppendLine();
|
||||
|
||||
switch ((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
{
|
||||
case TOC_CONTROL.TwoChanNoPreEmph:
|
||||
case TOC_CONTROL.TwoChanPreEmph:
|
||||
@@ -372,15 +372,15 @@ namespace DiscImageChef.Decoders.CD
|
||||
}
|
||||
default:
|
||||
{
|
||||
if (descriptor.POINT >= 0x01 && descriptor.POINT <= 0x63)
|
||||
if(descriptor.POINT >= 0x01 && descriptor.POINT <= 0x63)
|
||||
{
|
||||
if (descriptor.ADR == 4)
|
||||
if(descriptor.ADR == 4)
|
||||
sb.AppendFormat("Video track {3} starts at: {0:D2}:{1:D2}:{2:D2}", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME, descriptor.POINT).AppendLine();
|
||||
else
|
||||
{
|
||||
string type = "Audio";
|
||||
|
||||
if ((TOC_CONTROL)(descriptor.CONTROL & 0x0D) == TOC_CONTROL.DataTrack ||
|
||||
if((TOC_CONTROL)(descriptor.CONTROL & 0x0D) == TOC_CONTROL.DataTrack ||
|
||||
(TOC_CONTROL)(descriptor.CONTROL & 0x0D) == TOC_CONTROL.DataTrackIncremental)
|
||||
type = "Data";
|
||||
|
||||
@@ -389,7 +389,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
else
|
||||
sb.AppendFormat("{4} track {3} starts at: {0:D2}:{1:D2}:{2:D2} (", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME, descriptor.POINT, type);
|
||||
|
||||
switch ((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
{
|
||||
case TOC_CONTROL.TwoChanNoPreEmph:
|
||||
sb.Append(StereoNoPre);
|
||||
@@ -436,11 +436,11 @@ namespace DiscImageChef.Decoders.CD
|
||||
}
|
||||
case 5:
|
||||
{
|
||||
switch (descriptor.POINT)
|
||||
switch(descriptor.POINT)
|
||||
{
|
||||
case 0xB0:
|
||||
{
|
||||
if (descriptor.PHOUR > 0)
|
||||
if(descriptor.PHOUR > 0)
|
||||
{
|
||||
sb.AppendFormat("Start of next possible program in the recordable area of the disc: {3:D2}:{0:D2}:{1:D2}:{2:D2}", descriptor.Min, descriptor.Sec, descriptor.Frame, descriptor.HOUR).AppendLine();
|
||||
sb.AppendFormat("Maximum start of outermost Lead-out in the recordable area of the disc: {3:D2}:{0:D2}:{1:D2}:{2:D2}", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME, descriptor.PHOUR).AppendLine();
|
||||
@@ -474,7 +474,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
case 0xC0:
|
||||
{
|
||||
sb.AppendFormat("Optimum recording power: 0x{0:X2}", descriptor.Min).AppendLine();
|
||||
if (descriptor.PHOUR > 0)
|
||||
if(descriptor.PHOUR > 0)
|
||||
sb.AppendFormat("Start time of the first Lead-in area in the disc: {3:D2}:{0:D2}:{1:D2}:{2:D2}", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME, descriptor.PHOUR).AppendLine();
|
||||
else
|
||||
sb.AppendFormat("Start time of the first Lead-in area in the disc: {0:D2}:{1:D2}:{2:D2}", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME).AppendLine();
|
||||
@@ -494,7 +494,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
}
|
||||
case 0xCF:
|
||||
{
|
||||
if (descriptor.PHOUR > 0)
|
||||
if(descriptor.PHOUR > 0)
|
||||
{
|
||||
sb.AppendFormat("Start position of outer part lead-in area: {3:D2}:{0:D2}:{1:D2}:{2:D2}", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME, descriptor.PHOUR).AppendLine();
|
||||
sb.AppendFormat("Stop position of inner part lead-out area: {3:D2}:{0:D2}:{1:D2}:{2:D2}", descriptor.Min, descriptor.Sec, descriptor.Frame, descriptor.HOUR).AppendLine();
|
||||
@@ -508,7 +508,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
}
|
||||
default:
|
||||
{
|
||||
if (descriptor.POINT >= 0x01 && descriptor.POINT <= 0x40)
|
||||
if(descriptor.POINT >= 0x01 && descriptor.POINT <= 0x40)
|
||||
{
|
||||
sb.AppendFormat("Start time for interval that should be skipped: {0:D2}:{1:D2}:{2:D2}", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME).AppendLine();
|
||||
sb.AppendFormat("Ending time for interval that should be skipped: {0:D2}:{1:D2}:{2:D2}", descriptor.Min, descriptor.Sec, descriptor.Frame).AppendLine();
|
||||
|
||||
28
CD/PMA.cs
28
CD/PMA.cs
@@ -139,7 +139,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static CDPMA? Decode(byte[] CDPMAResponse)
|
||||
{
|
||||
if (CDPMAResponse == null)
|
||||
if(CDPMAResponse == null)
|
||||
return null;
|
||||
|
||||
CDPMA decoded = new CDPMA();
|
||||
@@ -151,13 +151,13 @@ namespace DiscImageChef.Decoders.CD
|
||||
decoded.Reserved2 = CDPMAResponse[3];
|
||||
decoded.PMADescriptors = new CDPMADescriptors[(decoded.DataLength - 2) / 11];
|
||||
|
||||
if (decoded.DataLength + 2 != CDPMAResponse.Length)
|
||||
if(decoded.DataLength + 2 != CDPMAResponse.Length)
|
||||
{
|
||||
DicConsole.DebugWriteLine("CD PMA decoder", "Expected CDPMA size ({0} bytes) is not received size ({1} bytes), not decoding", decoded.DataLength + 2, CDPMAResponse.Length);
|
||||
return null;
|
||||
}
|
||||
|
||||
for (int i = 0; i < ((decoded.DataLength - 2) / 11); i++)
|
||||
for(int i = 0; i < ((decoded.DataLength - 2) / 11); i++)
|
||||
{
|
||||
decoded.PMADescriptors[i].Reserved = CDPMAResponse[0 + i * 11 + 4];
|
||||
decoded.PMADescriptors[i].ADR = (byte)((CDPMAResponse[1 + i * 11 + 4] & 0xF0) >> 4);
|
||||
@@ -179,34 +179,34 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static string Prettify(CDPMA? CDPMAResponse)
|
||||
{
|
||||
if (CDPMAResponse == null)
|
||||
if(CDPMAResponse == null)
|
||||
return null;
|
||||
|
||||
CDPMA response = CDPMAResponse.Value;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
#if DEBUG
|
||||
#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
|
||||
#endif
|
||||
|
||||
foreach (CDPMADescriptors descriptor in response.PMADescriptors)
|
||||
foreach(CDPMADescriptors descriptor in response.PMADescriptors)
|
||||
{
|
||||
#if DEBUG
|
||||
#if DEBUG
|
||||
if(descriptor.Reserved != 0)
|
||||
sb.AppendFormat("Reserved = 0x{0:X2}", descriptor.Reserved).AppendLine();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
switch (descriptor.ADR)
|
||||
switch(descriptor.ADR)
|
||||
{
|
||||
case 1:
|
||||
if (descriptor.POINT > 0)
|
||||
if(descriptor.POINT > 0)
|
||||
{
|
||||
sb.AppendFormat("Track {0}", descriptor.POINT);
|
||||
switch ((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
{
|
||||
case TOC_CONTROL.TwoChanNoPreEmph:
|
||||
sb.Append(" (Stereo audio track with no pre-emphasis)");
|
||||
@@ -227,11 +227,11 @@ namespace DiscImageChef.Decoders.CD
|
||||
sb.Append(" (Data track, recorded incrementally)");
|
||||
break;
|
||||
}
|
||||
if (descriptor.PHOUR > 0)
|
||||
if(descriptor.PHOUR > 0)
|
||||
sb.AppendFormat(" starts at {3}:{0:D2}:{1:D2}:{2:D2}", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME, descriptor.PHOUR);
|
||||
else
|
||||
sb.AppendFormat(" starts at {0:D2}:{1:D2}:{2:D2}", descriptor.PMIN, descriptor.PSEC, descriptor.PFRAME);
|
||||
if (descriptor.PHOUR > 0)
|
||||
if(descriptor.PHOUR > 0)
|
||||
sb.AppendFormat(" and ends at {3}:{0:D2}:{1:D2}:{2:D2}", descriptor.Min, descriptor.Sec, descriptor.Frame, descriptor.HOUR);
|
||||
else
|
||||
sb.AppendFormat(" and ends at {0:D2}:{1:D2}:{2:D2}", descriptor.Min, descriptor.Sec, descriptor.Frame);
|
||||
|
||||
@@ -114,7 +114,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static CDSessionInfo? Decode(byte[] CDSessionInfoResponse)
|
||||
{
|
||||
if (CDSessionInfoResponse == null)
|
||||
if(CDSessionInfoResponse == null)
|
||||
return null;
|
||||
|
||||
CDSessionInfo decoded = new CDSessionInfo();
|
||||
@@ -126,13 +126,13 @@ namespace DiscImageChef.Decoders.CD
|
||||
decoded.LastCompleteSession = CDSessionInfoResponse[3];
|
||||
decoded.TrackDescriptors = new TrackDataDescriptor[(decoded.DataLength - 2) / 8];
|
||||
|
||||
if (decoded.DataLength + 2 != CDSessionInfoResponse.Length)
|
||||
if(decoded.DataLength + 2 != CDSessionInfoResponse.Length)
|
||||
{
|
||||
DicConsole.DebugWriteLine("CD Session Info decoder", "Expected CDSessionInfo size ({0} bytes) is not received size ({1} bytes), not decoding", decoded.DataLength + 2, CDSessionInfoResponse.Length);
|
||||
return null;
|
||||
}
|
||||
|
||||
for (int i = 0; i < ((decoded.DataLength - 2) / 8); i++)
|
||||
for(int i = 0; i < ((decoded.DataLength - 2) / 8); i++)
|
||||
{
|
||||
decoded.TrackDescriptors[i].Reserved1 = CDSessionInfoResponse[0 + i * 8 + 4];
|
||||
decoded.TrackDescriptors[i].ADR = (byte)((CDSessionInfoResponse[1 + i * 8 + 4] & 0xF0) >> 4);
|
||||
@@ -147,7 +147,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static string Prettify(CDSessionInfo? CDSessionInfoResponse)
|
||||
{
|
||||
if (CDSessionInfoResponse == null)
|
||||
if(CDSessionInfoResponse == null)
|
||||
return null;
|
||||
|
||||
CDSessionInfo response = CDSessionInfoResponse.Value;
|
||||
@@ -156,7 +156,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
sb.AppendFormat("First complete session number: {0}", response.FirstCompleteSession).AppendLine();
|
||||
sb.AppendFormat("Last complete session number: {0}", response.LastCompleteSession).AppendLine();
|
||||
foreach (TrackDataDescriptor descriptor in response.TrackDescriptors)
|
||||
foreach(TrackDataDescriptor descriptor in response.TrackDescriptors)
|
||||
{
|
||||
sb.AppendFormat("First track number in last complete session: {0}", descriptor.TrackNumber).AppendLine();
|
||||
sb.AppendFormat("Track starts at LBA {0}, or MSF {1:X2}:{2:X2}:{3:X2}", descriptor.TrackStartAddress,
|
||||
@@ -164,7 +164,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
(descriptor.TrackStartAddress & 0x00FF0000) >> 16,
|
||||
(descriptor.TrackStartAddress & 0xFF000000) >> 24).AppendLine();
|
||||
|
||||
switch ((TOC_ADR)descriptor.ADR)
|
||||
switch((TOC_ADR)descriptor.ADR)
|
||||
{
|
||||
case TOC_ADR.NoInformation:
|
||||
sb.AppendLine("Q subchannel mode not given");
|
||||
@@ -184,7 +184,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
sb.AppendFormat("Reserved flags 0x{0:X2} set", descriptor.CONTROL).AppendLine();
|
||||
else
|
||||
{
|
||||
switch ((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
{
|
||||
case TOC_CONTROL.TwoChanNoPreEmph:
|
||||
sb.AppendLine("Stereo audio track with no pre-emphasis");
|
||||
@@ -206,17 +206,17 @@ namespace DiscImageChef.Decoders.CD
|
||||
break;
|
||||
}
|
||||
|
||||
if ((descriptor.CONTROL & (byte)TOC_CONTROL.CopyPermissionMask) == (byte)TOC_CONTROL.CopyPermissionMask)
|
||||
if((descriptor.CONTROL & (byte)TOC_CONTROL.CopyPermissionMask) == (byte)TOC_CONTROL.CopyPermissionMask)
|
||||
sb.AppendLine("Digital copy of track is permitted");
|
||||
else
|
||||
sb.AppendLine("Digital copy of track is prohibited");
|
||||
|
||||
#if DEBUG
|
||||
#if DEBUG
|
||||
if(descriptor.Reserved1 != 0)
|
||||
sb.AppendFormat("Reserved1 = 0x{0:X2}", descriptor.Reserved1).AppendLine();
|
||||
if(descriptor.Reserved2 != 0)
|
||||
sb.AppendFormat("Reserved2 = 0x{0:X2}", descriptor.Reserved2).AppendLine();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
sb.AppendLine();
|
||||
}
|
||||
|
||||
24
CD/TOC.cs
24
CD/TOC.cs
@@ -116,7 +116,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static CDTOC? Decode(byte[] CDTOCResponse)
|
||||
{
|
||||
if (CDTOCResponse == null)
|
||||
if(CDTOCResponse == null)
|
||||
return null;
|
||||
|
||||
CDTOC decoded = new CDTOC();
|
||||
@@ -128,13 +128,13 @@ namespace DiscImageChef.Decoders.CD
|
||||
decoded.LastTrack = CDTOCResponse[3];
|
||||
decoded.TrackDescriptors = new CDTOCTrackDataDescriptor[(decoded.DataLength - 2) / 8];
|
||||
|
||||
if (decoded.DataLength + 2 != CDTOCResponse.Length)
|
||||
if(decoded.DataLength + 2 != CDTOCResponse.Length)
|
||||
{
|
||||
DicConsole.DebugWriteLine("CD TOC decoder", "Expected CDTOC size ({0} bytes) is not received size ({1} bytes), not decoding", decoded.DataLength + 2, CDTOCResponse.Length);
|
||||
return null;
|
||||
}
|
||||
|
||||
for (int i = 0; i < ((decoded.DataLength - 2) / 8); i++)
|
||||
for(int i = 0; i < ((decoded.DataLength - 2) / 8); i++)
|
||||
{
|
||||
decoded.TrackDescriptors[i].Reserved1 = CDTOCResponse[0 + i * 8 + 4];
|
||||
decoded.TrackDescriptors[i].ADR = (byte)((CDTOCResponse[1 + i * 8 + 4] & 0xF0) >> 4);
|
||||
@@ -149,7 +149,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
public static string Prettify(CDTOC? CDTOCResponse)
|
||||
{
|
||||
if (CDTOCResponse == null)
|
||||
if(CDTOCResponse == null)
|
||||
return null;
|
||||
|
||||
CDTOC response = CDTOCResponse.Value;
|
||||
@@ -158,10 +158,10 @@ namespace DiscImageChef.Decoders.CD
|
||||
|
||||
sb.AppendFormat("First track number in first complete session: {0}", response.FirstTrack).AppendLine();
|
||||
sb.AppendFormat("Last track number in last complete session: {0}", response.LastTrack).AppendLine();
|
||||
foreach (CDTOCTrackDataDescriptor descriptor in response.TrackDescriptors)
|
||||
foreach(CDTOCTrackDataDescriptor descriptor in response.TrackDescriptors)
|
||||
{
|
||||
if (descriptor.TrackNumber == 0xAA)
|
||||
sb.AppendLine("Track number: Lead-Out");
|
||||
if(descriptor.TrackNumber == 0xAA)
|
||||
sb.AppendLine("Track number: Lead-Out");
|
||||
else
|
||||
sb.AppendFormat("Track number: {0}", descriptor.TrackNumber).AppendLine();
|
||||
sb.AppendFormat("Track starts at LBA {0}, or MSF {1:X2}:{2:X2}:{3:X2}", descriptor.TrackStartAddress,
|
||||
@@ -169,7 +169,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
(descriptor.TrackStartAddress & 0x00FF0000) >> 16,
|
||||
(descriptor.TrackStartAddress & 0xFF000000) >> 24).AppendLine();
|
||||
|
||||
switch ((TOC_ADR)descriptor.ADR)
|
||||
switch((TOC_ADR)descriptor.ADR)
|
||||
{
|
||||
case TOC_ADR.NoInformation:
|
||||
sb.AppendLine("Q subchannel mode not given");
|
||||
@@ -195,7 +195,7 @@ namespace DiscImageChef.Decoders.CD
|
||||
sb.AppendFormat("Reserved flags 0x{0:X2} set", descriptor.CONTROL).AppendLine();
|
||||
else
|
||||
{
|
||||
switch ((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
switch((TOC_CONTROL)(descriptor.CONTROL & 0x0D))
|
||||
{
|
||||
case TOC_CONTROL.TwoChanNoPreEmph:
|
||||
sb.AppendLine("Stereo audio track with no pre-emphasis");
|
||||
@@ -217,17 +217,17 @@ namespace DiscImageChef.Decoders.CD
|
||||
break;
|
||||
}
|
||||
|
||||
if ((descriptor.CONTROL & (byte)TOC_CONTROL.CopyPermissionMask) == (byte)TOC_CONTROL.CopyPermissionMask)
|
||||
if((descriptor.CONTROL & (byte)TOC_CONTROL.CopyPermissionMask) == (byte)TOC_CONTROL.CopyPermissionMask)
|
||||
sb.AppendLine("Digital copy of track is permitted");
|
||||
else
|
||||
sb.AppendLine("Digital copy of track is prohibited");
|
||||
|
||||
#if DEBUG
|
||||
#if DEBUG
|
||||
if(descriptor.Reserved1 != 0)
|
||||
sb.AppendFormat("Reserved1 = 0x{0:X2}", descriptor.Reserved1).AppendLine();
|
||||
if(descriptor.Reserved2 != 0)
|
||||
sb.AppendFormat("Reserved2 = 0x{0:X2}", descriptor.Reserved2).AppendLine();
|
||||
#endif
|
||||
#endif
|
||||
|
||||
sb.AppendLine();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user