mirror of
https://github.com/aaru-dps/Aaru.git
synced 2025-12-16 19:24:25 +00:00
Code restyling.
This commit is contained in:
230
CD/ATIP.cs
230
CD/ATIP.cs
@@ -57,8 +57,8 @@ namespace Aaru.Decoders.CD
|
||||
CDATIPResponse.Length != 28)
|
||||
{
|
||||
AaruConsole.DebugWriteLine("CD ATIP decoder",
|
||||
"Expected CD ATIP size (32 bytes) is not received size ({0} bytes), not decoding",
|
||||
CDATIPResponse.Length);
|
||||
"Expected CD ATIP size (32 bytes) is not received size ({0} bytes), not decoding",
|
||||
CDATIPResponse.Length);
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -322,169 +322,169 @@ namespace Aaru.Decoders.CD
|
||||
case 15:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"TDK Corporation";
|
||||
case 10: return"Ritek Co.";
|
||||
case 20: return"Mitsubishi Chemical Corporation";
|
||||
case 30: return"NAN-YA Plastics Corporation";
|
||||
case 00: return "TDK Corporation";
|
||||
case 10: return "Ritek Co.";
|
||||
case 20: return "Mitsubishi Chemical Corporation";
|
||||
case 30: return "NAN-YA Plastics Corporation";
|
||||
}
|
||||
|
||||
break;
|
||||
case 16:
|
||||
switch(frm)
|
||||
{
|
||||
case 20: return"Shenzen SG&Gast Digital Optical Discs";
|
||||
case 30: return"Grand Advance Technology Ltd.";
|
||||
case 20: return "Shenzen SG&Gast Digital Optical Discs";
|
||||
case 30: return "Grand Advance Technology Ltd.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 17:
|
||||
if(frm == 00)
|
||||
return"Moser Baer India Limited";
|
||||
return "Moser Baer India Limited";
|
||||
|
||||
break;
|
||||
case 18:
|
||||
switch(frm)
|
||||
{
|
||||
case 10: return"Wealth Fair Investment Ltd.";
|
||||
case 60: return"Taroko International Co. Ltd.";
|
||||
case 10: return "Wealth Fair Investment Ltd.";
|
||||
case 60: return "Taroko International Co. Ltd.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 20:
|
||||
if(frm == 10)
|
||||
return"CDA Datenträger Albrechts GmbH";
|
||||
return "CDA Datenträger Albrechts GmbH";
|
||||
|
||||
break;
|
||||
case 21:
|
||||
switch(frm)
|
||||
{
|
||||
case 10: return"Grupo Condor S.L.";
|
||||
case 30: return"Bestdisc Technology Corporation";
|
||||
case 40: return"Optical Disc Manufacturing Equipment";
|
||||
case 50: return"Sound Sound Multi-Media Development Ltd.";
|
||||
case 10: return "Grupo Condor S.L.";
|
||||
case 30: return "Bestdisc Technology Corporation";
|
||||
case 40: return "Optical Disc Manufacturing Equipment";
|
||||
case 50: return "Sound Sound Multi-Media Development Ltd.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 22:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"Woongjin Media Corp.";
|
||||
case 10: return"Seantram Technology Inc.";
|
||||
case 20: return"Advanced Digital Media";
|
||||
case 30: return"EXIMPO";
|
||||
case 40: return"CIS Technology Inc.";
|
||||
case 50: return"Hong Kong Digital Technology Co., Ltd.";
|
||||
case 60: return"Acer Media Technology, Inc.";
|
||||
case 00: return "Woongjin Media Corp.";
|
||||
case 10: return "Seantram Technology Inc.";
|
||||
case 20: return "Advanced Digital Media";
|
||||
case 30: return "EXIMPO";
|
||||
case 40: return "CIS Technology Inc.";
|
||||
case 50: return "Hong Kong Digital Technology Co., Ltd.";
|
||||
case 60: return "Acer Media Technology, Inc.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 23:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"Matsushita Electric Industrial Co., Ltd.";
|
||||
case 10: return"Doremi Media Co., Ltd.";
|
||||
case 20: return"Nacar Media s.r.l.";
|
||||
case 30: return"Audio Distributors Co., Ltd.";
|
||||
case 40: return"Victor Company of Japan, Ltd.";
|
||||
case 50: return"Optrom Inc.";
|
||||
case 60: return"Customer Pressing Oosterhout";
|
||||
case 00: return "Matsushita Electric Industrial Co., Ltd.";
|
||||
case 10: return "Doremi Media Co., Ltd.";
|
||||
case 20: return "Nacar Media s.r.l.";
|
||||
case 30: return "Audio Distributors Co., Ltd.";
|
||||
case 40: return "Victor Company of Japan, Ltd.";
|
||||
case 50: return "Optrom Inc.";
|
||||
case 60: return "Customer Pressing Oosterhout";
|
||||
}
|
||||
|
||||
break;
|
||||
case 24:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"Taiyo Yuden Company Ltd.";
|
||||
case 10: return"SONY Corporation";
|
||||
case 20: return"Computer Support Italy s.r.l.";
|
||||
case 30: return"Unitech Japan Inc.";
|
||||
case 40: return"kdg mediatech AG";
|
||||
case 50: return"Guann Yinn Co., Ltd.";
|
||||
case 60: return"Harmonic Hall Optical Disc Ltd.";
|
||||
case 00: return "Taiyo Yuden Company Ltd.";
|
||||
case 10: return "SONY Corporation";
|
||||
case 20: return "Computer Support Italy s.r.l.";
|
||||
case 30: return "Unitech Japan Inc.";
|
||||
case 40: return "kdg mediatech AG";
|
||||
case 50: return "Guann Yinn Co., Ltd.";
|
||||
case 60: return "Harmonic Hall Optical Disc Ltd.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 25:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"MPO";
|
||||
case 20: return"Hitachi Maxell, Ltd.";
|
||||
case 30: return"Infodisc Technology Co. Ltd.";
|
||||
case 40: return"Vivastar AG";
|
||||
case 50: return"AMS Technology Inc.";
|
||||
case 60: return"Xcitec Inc.";
|
||||
case 00: return "MPO";
|
||||
case 20: return "Hitachi Maxell, Ltd.";
|
||||
case 30: return "Infodisc Technology Co. Ltd.";
|
||||
case 40: return "Vivastar AG";
|
||||
case 50: return "AMS Technology Inc.";
|
||||
case 60: return "Xcitec Inc.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 26:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"Fornet International Pte Ltd.";
|
||||
case 10: return"POSTECH Corporation";
|
||||
case 20: return"SKC Co., Ltd.";
|
||||
case 30: return"Optical Disc Corporation";
|
||||
case 40: return"FUJI Photo Film Co., Ltd.";
|
||||
case 50: return"Lead Data Inc.";
|
||||
case 60: return"CMC Magnetics Corporation";
|
||||
case 00: return "Fornet International Pte Ltd.";
|
||||
case 10: return "POSTECH Corporation";
|
||||
case 20: return "SKC Co., Ltd.";
|
||||
case 30: return "Optical Disc Corporation";
|
||||
case 40: return "FUJI Photo Film Co., Ltd.";
|
||||
case 50: return "Lead Data Inc.";
|
||||
case 60: return "CMC Magnetics Corporation";
|
||||
}
|
||||
|
||||
break;
|
||||
case 27:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"Digital Storage Technology Co., Ltd.";
|
||||
case 10: return"Plasmon Data systems Ltd.";
|
||||
case 20: return"Princo Corporation";
|
||||
case 30: return"Pioneer Video Corporation";
|
||||
case 40: return"Kodak Japan Ltd.";
|
||||
case 50: return"Mitsui Chemicals, Inc.";
|
||||
case 60: return"Ricoh Company Ltd.";
|
||||
case 00: return "Digital Storage Technology Co., Ltd.";
|
||||
case 10: return "Plasmon Data systems Ltd.";
|
||||
case 20: return "Princo Corporation";
|
||||
case 30: return "Pioneer Video Corporation";
|
||||
case 40: return "Kodak Japan Ltd.";
|
||||
case 50: return "Mitsui Chemicals, Inc.";
|
||||
case 60: return "Ricoh Company Ltd.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 28:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"Opti.Me.S. S.p.A.";
|
||||
case 10: return"Gigastore Corporation";
|
||||
case 20: return"Multi Media Masters & Machinary SA";
|
||||
case 30: return"Auvistar Industry Co., Ltd.";
|
||||
case 40: return"King Pro Mediatek Inc.";
|
||||
case 50: return"Delphi Technology Inc.";
|
||||
case 60: return"Friendly CD-Tek Co.";
|
||||
case 00: return "Opti.Me.S. S.p.A.";
|
||||
case 10: return "Gigastore Corporation";
|
||||
case 20: return "Multi Media Masters & Machinary SA";
|
||||
case 30: return "Auvistar Industry Co., Ltd.";
|
||||
case 40: return "King Pro Mediatek Inc.";
|
||||
case 50: return "Delphi Technology Inc.";
|
||||
case 60: return "Friendly CD-Tek Co.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 29:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"Taeil Media Co., Ltd.";
|
||||
case 10: return"Vanguard Disc Inc.";
|
||||
case 20: return"Unidisc Technology Co., Ltd.";
|
||||
case 30: return"Hile Optical Disc Technology Corp.";
|
||||
case 40: return"Viva Magnetics Ltd.";
|
||||
case 50: return"General Magnetics Ltd.";
|
||||
case 00: return "Taeil Media Co., Ltd.";
|
||||
case 10: return "Vanguard Disc Inc.";
|
||||
case 20: return "Unidisc Technology Co., Ltd.";
|
||||
case 30: return "Hile Optical Disc Technology Corp.";
|
||||
case 40: return "Viva Magnetics Ltd.";
|
||||
case 50: return "General Magnetics Ltd.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 30:
|
||||
if(frm == 10)
|
||||
return"CDA Datenträger Albrechts GmbH";
|
||||
return "CDA Datenträger Albrechts GmbH";
|
||||
|
||||
break;
|
||||
case 31:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"Ritek Co.";
|
||||
case 30: return"Grand Advance Technology Ltd.";
|
||||
case 00: return "Ritek Co.";
|
||||
case 30: return "Grand Advance Technology Ltd.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 32:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"TDK Corporation";
|
||||
case 10: return"Prodisc Technology Inc.";
|
||||
case 00: return "TDK Corporation";
|
||||
case 10: return "Prodisc Technology Inc.";
|
||||
}
|
||||
|
||||
break;
|
||||
@@ -492,97 +492,97 @@ namespace Aaru.Decoders.CD
|
||||
switch(frm)
|
||||
{
|
||||
case 20:
|
||||
case 22: return"Mitsubishi Chemical Corporation";
|
||||
case 22: return "Mitsubishi Chemical Corporation";
|
||||
}
|
||||
|
||||
break;
|
||||
case 42:
|
||||
if(frm == 20)
|
||||
return"Advanced Digital Media";
|
||||
return "Advanced Digital Media";
|
||||
|
||||
break;
|
||||
case 45:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"Fornet International Pte Ltd.";
|
||||
case 10: return"Unitech Japan Inc.";
|
||||
case 20: return"Acer Media Technology, Inc.";
|
||||
case 40: return"CIS Technology Inc.";
|
||||
case 50: return"Guann Yinn Co., Ltd.";
|
||||
case 60: return"Xcitec Inc.";
|
||||
case 00: return "Fornet International Pte Ltd.";
|
||||
case 10: return "Unitech Japan Inc.";
|
||||
case 20: return "Acer Media Technology, Inc.";
|
||||
case 40: return "CIS Technology Inc.";
|
||||
case 50: return "Guann Yinn Co., Ltd.";
|
||||
case 60: return "Xcitec Inc.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 46:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"Taiyo Yuden Company Ltd.";
|
||||
case 10: return"Hong Kong Digital Technology Co., Ltd.";
|
||||
case 20: return"Multi Media Masters & Machinary SA";
|
||||
case 30: return"Computer Support Italy s.r.l.";
|
||||
case 40: return"FUJI Photo Film Co., Ltd.";
|
||||
case 50: return"Auvistar Industry Co., Ltd.";
|
||||
case 60: return"CMC Magnetics Corporation";
|
||||
case 00: return "Taiyo Yuden Company Ltd.";
|
||||
case 10: return "Hong Kong Digital Technology Co., Ltd.";
|
||||
case 20: return "Multi Media Masters & Machinary SA";
|
||||
case 30: return "Computer Support Italy s.r.l.";
|
||||
case 40: return "FUJI Photo Film Co., Ltd.";
|
||||
case 50: return "Auvistar Industry Co., Ltd.";
|
||||
case 60: return "CMC Magnetics Corporation";
|
||||
}
|
||||
|
||||
break;
|
||||
case 47:
|
||||
switch(frm)
|
||||
{
|
||||
case 10: return"Hitachi Maxell, Ltd.";
|
||||
case 20: return"Princo Corporation";
|
||||
case 40: return"POSTECH Corporation";
|
||||
case 50: return"Ritek Co.";
|
||||
case 60: return"Prodisc Technology Inc.";
|
||||
case 10: return "Hitachi Maxell, Ltd.";
|
||||
case 20: return "Princo Corporation";
|
||||
case 40: return "POSTECH Corporation";
|
||||
case 50: return "Ritek Co.";
|
||||
case 60: return "Prodisc Technology Inc.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 48:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"Ricoh Company Ltd.";
|
||||
case 10: return"Kodak Japan Ltd.";
|
||||
case 20: return"Plasmon Data systems Ltd.";
|
||||
case 30: return"Pioneer Video Corporation";
|
||||
case 40: return"Digital Storage Technology Co., Ltd.";
|
||||
case 50: return"Mitsui Chemicals, Inc.";
|
||||
case 60: return"Lead Data Inc.";
|
||||
case 00: return "Ricoh Company Ltd.";
|
||||
case 10: return "Kodak Japan Ltd.";
|
||||
case 20: return "Plasmon Data systems Ltd.";
|
||||
case 30: return "Pioneer Video Corporation";
|
||||
case 40: return "Digital Storage Technology Co., Ltd.";
|
||||
case 50: return "Mitsui Chemicals, Inc.";
|
||||
case 60: return "Lead Data Inc.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 49:
|
||||
switch(frm)
|
||||
{
|
||||
case 00: return"TDK Corporation";
|
||||
case 10: return"Gigastore Corporation";
|
||||
case 20: return"King Pro Mediatek Inc.";
|
||||
case 30: return"Opti.Me.S. S.p.A.";
|
||||
case 40: return"Victor Company of Japan, Ltd.";
|
||||
case 60: return"Matsushita Electric Industrial Co., Ltd.";
|
||||
case 00: return "TDK Corporation";
|
||||
case 10: return "Gigastore Corporation";
|
||||
case 20: return "King Pro Mediatek Inc.";
|
||||
case 30: return "Opti.Me.S. S.p.A.";
|
||||
case 40: return "Victor Company of Japan, Ltd.";
|
||||
case 60: return "Matsushita Electric Industrial Co., Ltd.";
|
||||
}
|
||||
|
||||
break;
|
||||
case 50:
|
||||
switch(frm)
|
||||
{
|
||||
case 10: return"Vanguard Disc Inc.";
|
||||
case 20: return"Mitsubishi Chemical Corporation";
|
||||
case 30: return"CDA Datenträger Albrechts GmbH";
|
||||
case 10: return "Vanguard Disc Inc.";
|
||||
case 20: return "Mitsubishi Chemical Corporation";
|
||||
case 30: return "CDA Datenträger Albrechts GmbH";
|
||||
}
|
||||
|
||||
break;
|
||||
case 51:
|
||||
switch(frm)
|
||||
{
|
||||
case 10: return"Grand Advance Technology Ltd.";
|
||||
case 20: return"Infodisc Technology Co. Ltd.";
|
||||
case 50: return"Hile Optical Disc Technology Corp.";
|
||||
case 10: return "Grand Advance Technology Ltd.";
|
||||
case 20: return "Infodisc Technology Co. Ltd.";
|
||||
case 50: return "Hile Optical Disc Technology Corp.";
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return"";
|
||||
return "";
|
||||
}
|
||||
|
||||
public struct CDATIP
|
||||
|
||||
@@ -49,21 +49,36 @@ namespace Aaru.Decoders.CD
|
||||
public enum PackTypeIndicator : byte
|
||||
{
|
||||
/// <summary>Title of the track (or album if track == 0)</summary>
|
||||
Title = 0x80, /// <summary>Performer</summary>
|
||||
Performer = 0x81, /// <summary>Songwriter</summary>
|
||||
Songwriter = 0x82, /// <summary>Composer</summary>
|
||||
Composer = 0x83, /// <summary>Arranger</summary>
|
||||
Arranger = 0x84, /// <summary>Message from the content provider or artist</summary>
|
||||
Message = 0x85, /// <summary>Disc identification information</summary>
|
||||
DiscIdentification = 0x86, /// <summary>Genre identification</summary>
|
||||
GenreIdentification = 0x87, /// <summary>Table of content information</summary>
|
||||
TOCInformation = 0x88, /// <summary>Second table of content information</summary>
|
||||
SecondTOCInformation = 0x89, /// <summary>Reserved</summary>
|
||||
Reserved1 = 0x8A, /// <summary>Reserved</summary>
|
||||
Reserved2 = 0x8B, /// <summary>Reserved</summary>
|
||||
Reserved3 = 0x8C, /// <summary>Reserved for content provider only</summary>
|
||||
ReservedForContentProvider = 0x8D, /// <summary>UPC of album or ISRC of track</summary>
|
||||
UPCorISRC = 0x8E, /// <summary>Size information of the block</summary>
|
||||
Title = 0x80,
|
||||
/// <summary>Performer</summary>
|
||||
Performer = 0x81,
|
||||
/// <summary>Songwriter</summary>
|
||||
Songwriter = 0x82,
|
||||
/// <summary>Composer</summary>
|
||||
Composer = 0x83,
|
||||
/// <summary>Arranger</summary>
|
||||
Arranger = 0x84,
|
||||
/// <summary>Message from the content provider or artist</summary>
|
||||
Message = 0x85,
|
||||
/// <summary>Disc identification information</summary>
|
||||
DiscIdentification = 0x86,
|
||||
/// <summary>Genre identification</summary>
|
||||
GenreIdentification = 0x87,
|
||||
/// <summary>Table of content information</summary>
|
||||
TOCInformation = 0x88,
|
||||
/// <summary>Second table of content information</summary>
|
||||
SecondTOCInformation = 0x89,
|
||||
/// <summary>Reserved</summary>
|
||||
Reserved1 = 0x8A,
|
||||
/// <summary>Reserved</summary>
|
||||
Reserved2 = 0x8B,
|
||||
/// <summary>Reserved</summary>
|
||||
Reserved3 = 0x8C,
|
||||
/// <summary>Reserved for content provider only</summary>
|
||||
ReservedForContentProvider = 0x8D,
|
||||
/// <summary>UPC of album or ISRC of track</summary>
|
||||
UPCorISRC = 0x8E,
|
||||
/// <summary>Size information of the block</summary>
|
||||
BlockSizeInformation = 0x8F
|
||||
}
|
||||
|
||||
@@ -86,23 +101,23 @@ namespace Aaru.Decoders.CD
|
||||
if(decoded.DataLength + 2 != CDTextResponse.Length)
|
||||
{
|
||||
AaruConsole.DebugWriteLine("CD-TEXT decoder",
|
||||
"Expected CD-TEXT size ({0} bytes) is not received size ({1} bytes), not decoding",
|
||||
decoded.DataLength + 2, CDTextResponse.Length);
|
||||
"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++)
|
||||
{
|
||||
decoded.DataPacks[i].HeaderID1 = CDTextResponse[0 + i * 18 + 4];
|
||||
decoded.DataPacks[i].HeaderID2 = CDTextResponse[1 + i * 18 + 4];
|
||||
decoded.DataPacks[i].HeaderID3 = CDTextResponse[2 + i * 18 + 4];
|
||||
decoded.DataPacks[i].DBCC = Convert.ToBoolean(CDTextResponse[3 + i * 18 + 4] & 0x80);
|
||||
decoded.DataPacks[i].BlockNumber = (byte)((CDTextResponse[3 + i * 18 + 4] & 0x70) >> 4);
|
||||
decoded.DataPacks[i].CharacterPosition = (byte)(CDTextResponse[3 + i * 18 + 4] & 0x0F);
|
||||
decoded.DataPacks[i].HeaderID1 = CDTextResponse[0 + (i * 18) + 4];
|
||||
decoded.DataPacks[i].HeaderID2 = CDTextResponse[1 + (i * 18) + 4];
|
||||
decoded.DataPacks[i].HeaderID3 = CDTextResponse[2 + (i * 18) + 4];
|
||||
decoded.DataPacks[i].DBCC = Convert.ToBoolean(CDTextResponse[3 + (i * 18) + 4] & 0x80);
|
||||
decoded.DataPacks[i].BlockNumber = (byte)((CDTextResponse[3 + (i * 18) + 4] & 0x70) >> 4);
|
||||
decoded.DataPacks[i].CharacterPosition = (byte)(CDTextResponse[3 + (i * 18) + 4] & 0x0F);
|
||||
decoded.DataPacks[i].TextDataField = new byte[12];
|
||||
Array.Copy(CDTextResponse, 4 + i * 18 + 4, decoded.DataPacks[i].TextDataField, 0, 12);
|
||||
decoded.DataPacks[i].CRC = BigEndianBitConverter.ToUInt16(CDTextResponse, 16 + i * 18 + 4);
|
||||
Array.Copy(CDTextResponse, 4 + (i * 18) + 4, decoded.DataPacks[i].TextDataField, 0, 12);
|
||||
decoded.DataPacks[i].CRC = BigEndianBitConverter.ToUInt16(CDTextResponse, 16 + (i * 18) + 4);
|
||||
}
|
||||
|
||||
return decoded;
|
||||
|
||||
36
CD/Enums.cs
36
CD/Enums.cs
@@ -38,24 +38,36 @@ namespace Aaru.Decoders.CD
|
||||
public enum TocAdr : byte
|
||||
{
|
||||
/// <summary>Q Sub-channel mode information not supplied</summary>
|
||||
NoInformation = 0x00, /// <summary>Q Sub-channel encodes current position data</summary>
|
||||
CurrentPosition = 0x01, /// <summary>Q Sub-channel encodes the media catalog number</summary>
|
||||
MediaCatalogNumber = 0x02, /// <summary>Q Sub-channel encodes the ISRC</summary>
|
||||
ISRC = 0x03, /// <summary>Q Sub-channel encodes the start of an audio/data track (if found in TOC)</summary>
|
||||
TrackPointer = 0x01, /// <summary>Q Sub-channel encodes the start of a video track (if found in TOC) for CD-V</summary>
|
||||
NoInformation = 0x00,
|
||||
/// <summary>Q Sub-channel encodes current position data</summary>
|
||||
CurrentPosition = 0x01,
|
||||
/// <summary>Q Sub-channel encodes the media catalog number</summary>
|
||||
MediaCatalogNumber = 0x02,
|
||||
/// <summary>Q Sub-channel encodes the ISRC</summary>
|
||||
ISRC = 0x03,
|
||||
/// <summary>Q Sub-channel encodes the start of an audio/data track (if found in TOC)</summary>
|
||||
TrackPointer = 0x01,
|
||||
/// <summary>Q Sub-channel encodes the start of a video track (if found in TOC) for CD-V</summary>
|
||||
VideoTrackPointer = 0x04
|
||||
}
|
||||
|
||||
public enum TocControl : byte
|
||||
{
|
||||
/// <summary>Stereo audio, no pre-emphasis</summary>
|
||||
TwoChanNoPreEmph = 0x00, /// <summary>Stereo audio with pre-emphasis</summary>
|
||||
TwoChanPreEmph = 0x01, /// <summary>If mask applied, track can be copied</summary>
|
||||
CopyPermissionMask = 0x02, /// <summary>Data track, recorded uninterrumpted</summary>
|
||||
DataTrack = 0x04, /// <summary>Data track, recorded incrementally</summary>
|
||||
DataTrackIncremental = 0x05, /// <summary>Quadraphonic audio, no pre-emphasis</summary>
|
||||
FourChanNoPreEmph = 0x08, /// <summary>Quadraphonic audio with pre-emphasis</summary>
|
||||
FourChanPreEmph = 0x09, /// <summary>Reserved mask</summary>
|
||||
TwoChanNoPreEmph = 0x00,
|
||||
/// <summary>Stereo audio with pre-emphasis</summary>
|
||||
TwoChanPreEmph = 0x01,
|
||||
/// <summary>If mask applied, track can be copied</summary>
|
||||
CopyPermissionMask = 0x02,
|
||||
/// <summary>Data track, recorded uninterrumpted</summary>
|
||||
DataTrack = 0x04,
|
||||
/// <summary>Data track, recorded incrementally</summary>
|
||||
DataTrackIncremental = 0x05,
|
||||
/// <summary>Quadraphonic audio, no pre-emphasis</summary>
|
||||
FourChanNoPreEmph = 0x08,
|
||||
/// <summary>Quadraphonic audio with pre-emphasis</summary>
|
||||
FourChanPreEmph = 0x09,
|
||||
/// <summary>Reserved mask</summary>
|
||||
ReservedMask = 0x0C
|
||||
}
|
||||
}
|
||||
@@ -69,28 +69,28 @@ namespace Aaru.Decoders.CD
|
||||
if(decoded.DataLength + 2 != CDFullTOCResponse.Length)
|
||||
{
|
||||
AaruConsole.DebugWriteLine("CD full TOC decoder",
|
||||
"Expected CDFullTOC size ({0} bytes) is not received size ({1} bytes), not decoding",
|
||||
decoded.DataLength + 2, CDFullTOCResponse.Length);
|
||||
"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++)
|
||||
{
|
||||
decoded.TrackDescriptors[i].SessionNumber = CDFullTOCResponse[0 + i * 11 + 4];
|
||||
decoded.TrackDescriptors[i].ADR = (byte)((CDFullTOCResponse[1 + i * 11 + 4] & 0xF0) >> 4);
|
||||
decoded.TrackDescriptors[i].CONTROL = (byte)(CDFullTOCResponse[1 + i * 11 + 4] & 0x0F);
|
||||
decoded.TrackDescriptors[i].TNO = CDFullTOCResponse[2 + i * 11 + 4];
|
||||
decoded.TrackDescriptors[i].POINT = CDFullTOCResponse[3 + i * 11 + 4];
|
||||
decoded.TrackDescriptors[i].Min = CDFullTOCResponse[4 + i * 11 + 4];
|
||||
decoded.TrackDescriptors[i].Sec = CDFullTOCResponse[5 + i * 11 + 4];
|
||||
decoded.TrackDescriptors[i].Frame = CDFullTOCResponse[6 + i * 11 + 4];
|
||||
decoded.TrackDescriptors[i].Zero = CDFullTOCResponse[7 + i * 11 + 4];
|
||||
decoded.TrackDescriptors[i].HOUR = (byte)((CDFullTOCResponse[7 + i * 11 + 4] & 0xF0) >> 4);
|
||||
decoded.TrackDescriptors[i].PHOUR = (byte)(CDFullTOCResponse[7 + i * 11 + 4] & 0x0F);
|
||||
decoded.TrackDescriptors[i].PMIN = CDFullTOCResponse[8 + i * 11 + 4];
|
||||
decoded.TrackDescriptors[i].PSEC = CDFullTOCResponse[9 + i * 11 + 4];
|
||||
decoded.TrackDescriptors[i].PFRAME = CDFullTOCResponse[10 + i * 11 + 4];
|
||||
decoded.TrackDescriptors[i].SessionNumber = CDFullTOCResponse[0 + (i * 11) + 4];
|
||||
decoded.TrackDescriptors[i].ADR = (byte)((CDFullTOCResponse[1 + (i * 11) + 4] & 0xF0) >> 4);
|
||||
decoded.TrackDescriptors[i].CONTROL = (byte)(CDFullTOCResponse[1 + (i * 11) + 4] & 0x0F);
|
||||
decoded.TrackDescriptors[i].TNO = CDFullTOCResponse[2 + (i * 11) + 4];
|
||||
decoded.TrackDescriptors[i].POINT = CDFullTOCResponse[3 + (i * 11) + 4];
|
||||
decoded.TrackDescriptors[i].Min = CDFullTOCResponse[4 + (i * 11) + 4];
|
||||
decoded.TrackDescriptors[i].Sec = CDFullTOCResponse[5 + (i * 11) + 4];
|
||||
decoded.TrackDescriptors[i].Frame = CDFullTOCResponse[6 + (i * 11) + 4];
|
||||
decoded.TrackDescriptors[i].Zero = CDFullTOCResponse[7 + (i * 11) + 4];
|
||||
decoded.TrackDescriptors[i].HOUR = (byte)((CDFullTOCResponse[7 + (i * 11) + 4] & 0xF0) >> 4);
|
||||
decoded.TrackDescriptors[i].PHOUR = (byte)(CDFullTOCResponse[7 + (i * 11) + 4] & 0x0F);
|
||||
decoded.TrackDescriptors[i].PMIN = CDFullTOCResponse[8 + (i * 11) + 4];
|
||||
decoded.TrackDescriptors[i].PSEC = CDFullTOCResponse[9 + (i * 11) + 4];
|
||||
decoded.TrackDescriptors[i].PFRAME = CDFullTOCResponse[10 + (i * 11) + 4];
|
||||
}
|
||||
|
||||
return decoded;
|
||||
@@ -111,8 +111,8 @@ namespace Aaru.Decoders.CD
|
||||
sb.AppendFormat("Last complete session number: {0}", response.LastCompleteSession).AppendLine();
|
||||
|
||||
foreach(TrackDataDescriptor descriptor in response.TrackDescriptors)
|
||||
if((descriptor.CONTROL & 0x08) == 0x08 ||
|
||||
descriptor.ADR != 1 && descriptor.ADR != 5 && descriptor.ADR != 4 && descriptor.ADR != 6 ||
|
||||
if((descriptor.CONTROL & 0x08) == 0x08 ||
|
||||
(descriptor.ADR != 1 && descriptor.ADR != 5 && descriptor.ADR != 4 && descriptor.ADR != 6) ||
|
||||
descriptor.TNO != 0)
|
||||
{
|
||||
sb.AppendLine("Unknown TOC entry format, printing values as-is");
|
||||
|
||||
30
CD/PMA.cs
30
CD/PMA.cs
@@ -61,27 +61,27 @@ namespace Aaru.Decoders.CD
|
||||
if(decoded.DataLength + 2 != CDPMAResponse.Length)
|
||||
{
|
||||
AaruConsole.DebugWriteLine("CD PMA decoder",
|
||||
"Expected CDPMA size ({0} bytes) is not received size ({1} bytes), not decoding",
|
||||
decoded.DataLength + 2, CDPMAResponse.Length);
|
||||
"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++)
|
||||
{
|
||||
decoded.PMADescriptors[i].Reserved = CDPMAResponse[0 + i * 11 + 4];
|
||||
decoded.PMADescriptors[i].ADR = (byte)((CDPMAResponse[1 + i * 11 + 4] & 0xF0) >> 4);
|
||||
decoded.PMADescriptors[i].CONTROL = (byte)(CDPMAResponse[1 + i * 11 + 4] & 0x0F);
|
||||
decoded.PMADescriptors[i].TNO = CDPMAResponse[2 + i * 11 + 4];
|
||||
decoded.PMADescriptors[i].POINT = CDPMAResponse[3 + i * 11 + 4];
|
||||
decoded.PMADescriptors[i].Min = CDPMAResponse[4 + i * 11 + 4];
|
||||
decoded.PMADescriptors[i].Sec = CDPMAResponse[5 + i * 11 + 4];
|
||||
decoded.PMADescriptors[i].Frame = CDPMAResponse[6 + i * 11 + 4];
|
||||
decoded.PMADescriptors[i].HOUR = (byte)((CDPMAResponse[7 + i * 11 + 4] & 0xF0) >> 4);
|
||||
decoded.PMADescriptors[i].PHOUR = (byte)(CDPMAResponse[7 + i * 11 + 4] & 0x0F);
|
||||
decoded.PMADescriptors[i].PMIN = CDPMAResponse[8 + i * 11 + 4];
|
||||
decoded.PMADescriptors[i].PSEC = CDPMAResponse[9 + i * 11 + 4];
|
||||
decoded.PMADescriptors[i].PFRAME = CDPMAResponse[10 + i * 11 + 4];
|
||||
decoded.PMADescriptors[i].Reserved = CDPMAResponse[0 + (i * 11) + 4];
|
||||
decoded.PMADescriptors[i].ADR = (byte)((CDPMAResponse[1 + (i * 11) + 4] & 0xF0) >> 4);
|
||||
decoded.PMADescriptors[i].CONTROL = (byte)(CDPMAResponse[1 + (i * 11) + 4] & 0x0F);
|
||||
decoded.PMADescriptors[i].TNO = CDPMAResponse[2 + (i * 11) + 4];
|
||||
decoded.PMADescriptors[i].POINT = CDPMAResponse[3 + (i * 11) + 4];
|
||||
decoded.PMADescriptors[i].Min = CDPMAResponse[4 + (i * 11) + 4];
|
||||
decoded.PMADescriptors[i].Sec = CDPMAResponse[5 + (i * 11) + 4];
|
||||
decoded.PMADescriptors[i].Frame = CDPMAResponse[6 + (i * 11) + 4];
|
||||
decoded.PMADescriptors[i].HOUR = (byte)((CDPMAResponse[7 + (i * 11) + 4] & 0xF0) >> 4);
|
||||
decoded.PMADescriptors[i].PHOUR = (byte)(CDPMAResponse[7 + (i * 11) + 4] & 0x0F);
|
||||
decoded.PMADescriptors[i].PMIN = CDPMAResponse[8 + (i * 11) + 4];
|
||||
decoded.PMADescriptors[i].PSEC = CDPMAResponse[9 + (i * 11) + 4];
|
||||
decoded.PMADescriptors[i].PFRAME = CDPMAResponse[10 + (i * 11) + 4];
|
||||
}
|
||||
|
||||
return decoded;
|
||||
|
||||
@@ -61,22 +61,22 @@ namespace Aaru.Decoders.CD
|
||||
if(decoded.DataLength + 2 != CDSessionInfoResponse.Length)
|
||||
{
|
||||
AaruConsole.DebugWriteLine("CD Session Info decoder",
|
||||
"Expected CDSessionInfo size ({0} bytes) is not received size ({1} bytes), not decoding",
|
||||
decoded.DataLength + 2, CDSessionInfoResponse.Length);
|
||||
"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++)
|
||||
{
|
||||
decoded.TrackDescriptors[i].Reserved1 = CDSessionInfoResponse[0 + i * 8 + 4];
|
||||
decoded.TrackDescriptors[i].ADR = (byte)((CDSessionInfoResponse[1 + i * 8 + 4] & 0xF0) >> 4);
|
||||
decoded.TrackDescriptors[i].CONTROL = (byte)(CDSessionInfoResponse[1 + i * 8 + 4] & 0x0F);
|
||||
decoded.TrackDescriptors[i].TrackNumber = CDSessionInfoResponse[2 + i * 8 + 4];
|
||||
decoded.TrackDescriptors[i].Reserved2 = CDSessionInfoResponse[3 + i * 8 + 4];
|
||||
decoded.TrackDescriptors[i].Reserved1 = CDSessionInfoResponse[0 + (i * 8) + 4];
|
||||
decoded.TrackDescriptors[i].ADR = (byte)((CDSessionInfoResponse[1 + (i * 8) + 4] & 0xF0) >> 4);
|
||||
decoded.TrackDescriptors[i].CONTROL = (byte)(CDSessionInfoResponse[1 + (i * 8) + 4] & 0x0F);
|
||||
decoded.TrackDescriptors[i].TrackNumber = CDSessionInfoResponse[2 + (i * 8) + 4];
|
||||
decoded.TrackDescriptors[i].Reserved2 = CDSessionInfoResponse[3 + (i * 8) + 4];
|
||||
|
||||
decoded.TrackDescriptors[i].TrackStartAddress =
|
||||
BigEndianBitConverter.ToUInt32(CDSessionInfoResponse, 4 + i * 8 + 4);
|
||||
BigEndianBitConverter.ToUInt32(CDSessionInfoResponse, 4 + (i * 8) + 4);
|
||||
}
|
||||
|
||||
return decoded;
|
||||
|
||||
16
CD/TOC.cs
16
CD/TOC.cs
@@ -62,22 +62,22 @@ namespace Aaru.Decoders.CD
|
||||
if(decoded.DataLength + 2 != CDTOCResponse.Length)
|
||||
{
|
||||
AaruConsole.DebugWriteLine("CD TOC decoder",
|
||||
"Expected CDTOC size ({0} bytes) is not received size ({1} bytes), not decoding",
|
||||
decoded.DataLength + 2, CDTOCResponse.Length);
|
||||
"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++)
|
||||
{
|
||||
decoded.TrackDescriptors[i].Reserved1 = CDTOCResponse[0 + i * 8 + 4];
|
||||
decoded.TrackDescriptors[i].ADR = (byte)((CDTOCResponse[1 + i * 8 + 4] & 0xF0) >> 4);
|
||||
decoded.TrackDescriptors[i].CONTROL = (byte)(CDTOCResponse[1 + i * 8 + 4] & 0x0F);
|
||||
decoded.TrackDescriptors[i].TrackNumber = CDTOCResponse[2 + i * 8 + 4];
|
||||
decoded.TrackDescriptors[i].Reserved2 = CDTOCResponse[3 + i * 8 + 4];
|
||||
decoded.TrackDescriptors[i].Reserved1 = CDTOCResponse[0 + (i * 8) + 4];
|
||||
decoded.TrackDescriptors[i].ADR = (byte)((CDTOCResponse[1 + (i * 8) + 4] & 0xF0) >> 4);
|
||||
decoded.TrackDescriptors[i].CONTROL = (byte)(CDTOCResponse[1 + (i * 8) + 4] & 0x0F);
|
||||
decoded.TrackDescriptors[i].TrackNumber = CDTOCResponse[2 + (i * 8) + 4];
|
||||
decoded.TrackDescriptors[i].Reserved2 = CDTOCResponse[3 + (i * 8) + 4];
|
||||
|
||||
decoded.TrackDescriptors[i].TrackStartAddress =
|
||||
BigEndianBitConverter.ToUInt32(CDTOCResponse, 4 + i * 8 + 4);
|
||||
BigEndianBitConverter.ToUInt32(CDTOCResponse, 4 + (i * 8) + 4);
|
||||
}
|
||||
|
||||
return decoded;
|
||||
|
||||
Reference in New Issue
Block a user