Projekte > Audio-CD (CDDA)

Aufbau

  • Beschreibung
  • Audio-Session
  • Table of contents
  • Tracks
  • Frames
  • Sektoren
  • Subcode
  • Demo
  • Beschreibung

    Eine Audio-CD ist in der Regel vom Typ CD-DA und besteht aus einer Session, welche mehrere Audiotracks enthält. Sie kann jedoch auch eine zweite Session mit Datentracks enthalten und ist dann vom Typ CD-ROM XA.

    Weitergehende Informationen gibt es im Projekt Optische Laufwerke im Kapitel Medien.

    Audio-Session

    Die Audiosession ist die erste oder einzige auf der CD. Sie beginnt mit einem Lead-In, gefolgt von sich abwechselnden Pausen und Audiotracks und wird mit einer Pause sowie dem Lead-Out abgeschlossen.

    Session
    Lead-In Pause Track ... Pause Lead-Out

    Table of Contents

    Die Table of Contents (TOC) ist das Inhaltsverzeichnis der Session. In ihr sind Informationen zum Aufbau der CD angegeben. Für die Ermittlung der TOC unter Windows sind im Projekt Optische Laufwerke im Kapitel Medien drei Möglichkeiten erläutert:

    Tracks

    Da nur die Startadressen der Tracks und des Lead-Outs angegeben sind, geht man davon aus, dass ein Track von seiner eigenen Startadresse bis zur Startadresse des nächsten Tracks bzw. des Lead-Outs geht und kopiert entsprechend diesen Bereich.

    In der Regel folgt einem Track eine Pause von zwei Sekunden, so dass man diese am Ende weglassen könnte. Manche Ripper bieten daher die Option, Stille am Ende zu entfernen. Mitunter kommt es vor, dass die Startadressen in der TOC nicht präzise angegeben sind. Dann hat man den Rest des vorigen oder den Anfang des folgenden Trackes mit dabei oder am Anfang oder Ende des kopierten Tracks fehlt etwas.

    Es gibt auch Tracks, welche am Ende Stille enthalten, die bis zu mehreren Minuten dauern kann. Oder sie enthalten als "Kopierschutz" defekte Sektoren, welche in der TOC eingetragen sind. Dazu muss man die TOC im Rohformat lesen und auswerten.

    Frames

    Die Tracks bestehen aus vielen Frames. 75 Frames sind eine Sekunde lang. Jedes Frame wird auf der CD in einem Sektor abgespeichert.

    Für die Adressierung der Sektoren sind verschiedene Modelle möglich:

    • MSF: In der Table of Contents werden die Adressen mit Minuten, Sekunden und Frames angegeben. Die Zählung beginnt direkt nach dem Lead-In. Die Adresse ist vier Byte lang, wobei das erste Byte immer den Wert 0 besitzt, weshalb es weggelassen wird.
    • Frames: Die Frames/Sektoren werden fortlaufend gezählt. Die Zählung beginnt ebenfalls direkt nach dem Lead-In.
    • LBA: Logical Block Address. Die logische Blockadresse wird wie die Frames fortlaufend gezählt. Jedoch beginnt man erst nach der ersten Pause (2 s = 150 Frames).

    Die Umrechnungen sind:

    function msf2lba(addr: TAddr): Cardinal;
    begin
      Result := (((addr.min * 60) + addr.sec) * 75) + addr.frame] - 150;
    end;
    
    function msf2frames(addr: TAddr): Cardinal;
    begin
      Result := (((addr.min * 60) + addr.sec) * 75) + addr.frame];
    end;
    

    Sektoren

    Ein physikalischer Sektor ist auf der CD immer 3234 Byte groß und enthält den 2352 Byte großen logischen Sektor sowie 748 Byte EDC/ECC (Fehlerkorrektur) und 98 Byte Subcode. Bei CD-DA enthält der logische Sektor nur Nutzdaten.

    Physikalischer Sektor 3234 Byte
    2352 Byte Nutzdaten 748 Byte
    EDC/ECC
    98 Byte
    Subcode

    Die Nutzdaten eines Sektors enthalten 98 Audioframes. Jedes Audioframe enthält 24 Byte Audiodaten (2 Kanäle (Stereo) x 6 Samples x 2 Byte (= 16 Bit)/Sample). Zu jedem Audioframe gehören 8 Byte für die Fehlerkorrektur und 1 Byte Subcode.

    Subcode

    Die Subcodes werden mit den Buchstaben P bis W bezeichnet. Auf reinen AudioCDs werden nur die Subcodes P und Q genutzt. Der Subcode P stellt einen Pause-Flag dar. Wenn es ausgewertet wird, sollte man damit Pausen überspringen können. Der Subcode Q kann verschiedene Informationen enthalten. Unter anderem das ADR und das Control Byte für die Tracks in der Table of contents. Bei mindestens neun von zehn Sektoren muss der Subcode Q mit Positionsangaben enthalten sein. Die ungenutzten Subcodes R bis W werden zum Beispiel dafür genutzt, um dort den CD-Text unterzubringen.

    Demo

    Der Demo aus dem Vorkapitel wird das Lesen der TOC im Rohformat beigebracht, welche dann wie in der Beispielanwendung im Projekt Optische Laufwerke aufbereitet wird.

    Struct (pcddaStruct.7z - 229 kb) MD5 (1 kb).
    Compiler: Delphi 7
    Stand: 4. August 2018

    Änderungen an der Demo

    04.08.2018Änderung: Klasse überarbeitet.
    Hinzu: Link zum Kapitel