2025-10-11 01:35:43 +01:00
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
< html xmlns = "http://www.w3.org/1999/xhtml" lang = "en-US" >
< head >
< meta http-equiv = "Content-Type" content = "text/xhtml;charset=UTF-8" / >
< meta http-equiv = "X-UA-Compatible" content = "IE=11" / >
2025-12-21 20:17:32 +00:00
< meta name = "generator" content = "Doxygen 1.15.0" / >
2025-10-11 01:35:43 +01:00
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
< title > libaaruformat: include/aaruformat/structs/optical.h File Reference< / title >
< link href = "tabs.css" rel = "stylesheet" type = "text/css" / >
< script type = "text/javascript" src = "jquery.js" > < / script >
< script type = "text/javascript" src = "dynsections.js" > < / script >
< script type = "text/javascript" src = "clipboard.js" > < / script >
< link href = "navtree.css" rel = "stylesheet" type = "text/css" / >
< script type = "text/javascript" src = "navtreedata.js" > < / script >
< script type = "text/javascript" src = "navtree.js" > < / script >
< script type = "text/javascript" src = "cookie.js" > < / script >
< link href = "search/search.css" rel = "stylesheet" type = "text/css" / >
< script type = "text/javascript" src = "search/searchdata.js" > < / script >
< script type = "text/javascript" src = "search/search.js" > < / script >
< link href = "doxygen.css" rel = "stylesheet" type = "text/css" / >
< / head >
< body >
< div id = "top" > <!-- do not remove this div, it is closed by doxygen! -->
< div id = "titlearea" >
< table cellspacing = "0" cellpadding = "0" >
< tbody >
< tr id = "projectrow" >
< td id = "projectalign" >
< div id = "projectname" > libaaruformat< span id = "projectnumber" >   1.0< / span >
< / div >
< div id = "projectbrief" > Aaru Data Preservation Suite - Format Library< / div >
< / td >
< / tr >
< / tbody >
< / table >
< / div >
<!-- end header part -->
2025-12-21 20:17:32 +00:00
<!-- Generated by Doxygen 1.15.0 -->
2025-10-11 01:35:43 +01:00
< script type = "text/javascript" >
var searchBox = new SearchBox("searchBox", "search/",'.html');
< / script >
< script type = "text/javascript" >
$(function() { codefold.init(); });
< / script >
< script type = "text/javascript" src = "menudata.js" > < / script >
< script type = "text/javascript" src = "menu.js" > < / script >
< script type = "text/javascript" >
$(function() {
initMenu('',true,false,'search.php','Search',true);
$(function() { init_search(); });
});
< / script >
< div id = "main-nav" > < / div >
< / div > <!-- top -->
< div id = "side-nav" class = "ui-resizable side-nav-resizable" >
< div id = "nav-tree" >
< div id = "nav-tree-contents" >
< div id = "nav-sync" class = "sync" > < / div >
< / div >
< / div >
< div id = "splitbar" style = "-moz-user-select:none;"
class="ui-resizable-handle">
< / div >
< / div >
< script type = "text/javascript" >
$(function(){initNavTree('optical_8h.html','',''); });
< / script >
< div id = "container" >
< div id = "doc-content" >
<!-- window showing the filter options -->
< div id = "MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
< / div >
<!-- iframe showing the search results (closed by default) -->
< div id = "MSearchResultsWindow" >
< div id = "MSearchResults" >
< div class = "SRPage" >
< div id = "SRIndex" >
< div id = "SRResults" > < / div >
< div class = "SRStatus" id = "Loading" > Loading...< / div >
< div class = "SRStatus" id = "Searching" > Searching...< / div >
< div class = "SRStatus" id = "NoMatches" > No Matches< / div >
< / div >
< / div >
< / div >
< / div >
< div class = "header" >
< div class = "headertitle" > < div class = "title" > optical.h File Reference< / div > < / div >
< / div > <!-- header -->
< div class = "contents" >
< p > On-disk structures describing optical disc tracks (Track list block).
< a href = "#details" > More...< / a > < / p >
< p > < a href = "optical_8h_source.html" > Go to the source code of this file.< / a > < / p >
< table class = "memberdecls" >
< tr class = "heading" > < td colspan = "2" > < h2 id = "header-nested-classes" class = "groupheader" > < a id = "nested-classes" name = "nested-classes" > < / a >
Data Structures< / h2 > < / td > < / tr >
< tr class = "memitem:TracksHeader" id = "r_TracksHeader" > < td class = "memItemLeft" align = "right" valign = "top" > struct   < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "structTracksHeader.html" > TracksHeader< / a > < / td > < / tr >
< tr class = "memdesc:" > < td class = "mdescLeft" >   < / td > < td class = "mdescRight" > Header for an optical tracks block listing track entries. < a href = "structTracksHeader.html#details" > More...< / a > < br / > < / td > < / tr >
< tr class = "memitem:TrackEntry" id = "r_TrackEntry" > < td class = "memItemLeft" align = "right" valign = "top" > struct   < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "structTrackEntry.html" > TrackEntry< / a > < / td > < / tr >
< tr class = "memdesc:" > < td class = "mdescLeft" >   < / td > < td class = "mdescRight" > Single optical disc track descriptor (sequence, type, LBAs, session, ISRC, flags). < a href = "structTrackEntry.html#details" > More...< / a > < br / > < / td > < / tr >
< / table > < table class = "memberdecls" >
< tr class = "heading" > < td colspan = "2" > < h2 id = "header-typedef-members" class = "groupheader" > < a id = "typedef-members" name = "typedef-members" > < / a >
Typedefs< / h2 > < / td > < / tr >
< tr class = "memitem:ab11869cb71789b4d8e2cde0cbe2149d5" id = "r_ab11869cb71789b4d8e2cde0cbe2149d5" > < td class = "memItemLeft" align = "right" valign = "top" > typedef struct TracksHeader  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#ab11869cb71789b4d8e2cde0cbe2149d5" > TracksHeader< / a > < / td > < / tr >
< tr class = "memitem:a8701d2178c6ffebf82e4d3f267a7dd8e" id = "r_a8701d2178c6ffebf82e4d3f267a7dd8e" > < td class = "memItemLeft" align = "right" valign = "top" > typedef struct TrackEntry  < / td > < td class = "memItemRight" valign = "bottom" > < a class = "el" href = "#a8701d2178c6ffebf82e4d3f267a7dd8e" > TrackEntry< / a > < / td > < / tr >
< / table >
< a name = "details" id = "details" > < / a > < h2 id = "header-details" class = "groupheader" > Detailed Description< / h2 >
< div class = "textblock" > < p > On-disk structures describing optical disc tracks (Track list block). < / p >
< p > An optical tracks block (identifier == BlockType::TracksBlock) stores a list of < a class = "el" href = "structTrackEntry.html" > TrackEntry< / a > records describing the logical layout of tracks and sessions for CD/DVD/BD and similar media.< / p >
< p > Layout: < a class = "el" href = "structTracksHeader.html" title = "Header for an optical tracks block listing track entries." > TracksHeader< / a > (fixed) < a class = "el" href = "structTrackEntry.html" title = "Single optical disc track descriptor (sequence, type, LBAs, session, ISRC, flags)." > TrackEntry< / a > [ entries ] (array, packed)< / p >
< p > CRC semantics:< / p > < ul >
< li > < a class = "el" href = "structTracksHeader.html#ad85cd14bec1034946445058d45b97993" title = "CRC64-ECMA of the TrackEntry array (header excluded, legacy byte-swap for early versions)." > TracksHeader::crc64< / a > is a CRC64-ECMA over the contiguous < a class = "el" href = "structTrackEntry.html" title = "Single optical disc track descriptor (sequence, type, LBAs, session, ISRC, flags)." > TrackEntry< / a > array ONLY (header excluded).< / li >
< li > For legacy images (imageMajorVersion < = AARUF_VERSION_V1) a byte swap is applied when verifying.< / li >
< / ul >
< p > Field semantics (< a class = "el" href = "structTrackEntry.html" title = "Single optical disc track descriptor (sequence, type, LBAs, session, ISRC, flags)." > TrackEntry< / a > ):< / p > < ul >
< li > sequence: Logical track number (1..99 typical for CD). Values outside that range may encode extras.< / li >
< li > type: Value from < a class = "el" href = "enums_8h.html#ad80740dd555f7d3688d2c4d9f44d3b04" > TrackType< / a > (Audio, Data, Mode variants, etc.).< / li >
< li > start / end: Inclusive Logical Block Address (LBA) bounds for the track. end > = start.< / li >
< li > pregap: Number of sectors of pre-gap < em > preceding< / em > the track's first user-accessible sector (can be 0 or negative if representing lead-in semantics; negative interpretation is implementation-defined).< / li >
< li > session: Session number starting at 1 for multi-session discs (1 for single session).< / li >
< li > isrc: 13-byte ISRC (raw code, no terminating null). If fewer significant characters, remaining bytes are 0.< / li >
< li > flags: Bitmask of track/control flags. Unless otherwise specified, recommended mapping (mirrors CD subchannel Q control bits) is: bit0 Pre-emphasis, bit1 Copy permitted, bit2 Data track, bit3 Four-channel audio, bits4-7 reserved. Actual semantics may be extended by the format specification.< / li >
< / ul >
< p > Invariants / validation recommendations:< / p > < ul >
< li > identifier == BlockType::TracksBlock< / li >
< li > entries * sizeof(TrackEntry) bytes are present after the header in the block image.< / li >
< li > 1 < = sequence < = 99 for standard CD tracks (non-conforming values allowed but should be documented).< / li >
< li > start < = end; pregap > = 0 (if negative pregaps unsupported in implementation).< / li >
< li > ISRC bytes either all zero (no ISRC) or printable ASCII (A-Z 0-9 -) per ISO 3901 (without hyphen formatting). < / li >
< / ul >
< p class = "definition" > Definition in file < a class = "el" href = "optical_8h_source.html" > optical.h< / a > .< / p >
< / div > < a name = "doc-typedef-members" id = "doc-typedef-members" > < / a > < h2 id = "header-doc-typedef-members" class = "groupheader" > Typedef Documentation< / h2 >
< a id = "a8701d2178c6ffebf82e4d3f267a7dd8e" name = "a8701d2178c6ffebf82e4d3f267a7dd8e" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#a8701d2178c6ffebf82e4d3f267a7dd8e" > ◆   < / a > < / span > TrackEntry< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > typedef struct TrackEntry TrackEntry< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< a id = "ab11869cb71789b4d8e2cde0cbe2149d5" name = "ab11869cb71789b4d8e2cde0cbe2149d5" > < / a >
< h2 class = "memtitle" > < span class = "permalink" > < a href = "#ab11869cb71789b4d8e2cde0cbe2149d5" > ◆   < / a > < / span > TracksHeader< / h2 >
< div class = "memitem" >
< div class = "memproto" >
< table class = "memname" >
< tr >
< td class = "memname" > typedef struct TracksHeader TracksHeader< / td >
< / tr >
< / table >
< / div > < div class = "memdoc" >
< / div >
< / div >
< / div > <!-- contents -->
< / div > <!-- doc - content -->
< div id = "page-nav" class = "page-nav-panel" >
< div id = "page-nav-resize-handle" > < / div >
< div id = "page-nav-tree" >
< div id = "page-nav-contents" >
< / div > <!-- page - nav - contents -->
< / div > <!-- page - nav - tree -->
< / div > <!-- page - nav -->
< / div > <!-- container -->
<!-- start footer part -->
< div id = "nav-path" class = "navpath" > <!-- id is needed for treeview function! -->
< ul >
< li class = "navelem" > < a href = "dir_d44c64559bbebec7f509842c48db8b23.html" > include< / a > < / li > < li class = "navelem" > < a href = "dir_aeff2545c9dfcfc842fe9d84b123cb31.html" > aaruformat< / a > < / li > < li class = "navelem" > < a href = "dir_6387aeb6e475a334d8dc12d69f21999e.html" > structs< / a > < / li > < li class = "navelem" > < a href = "optical_8h.html" > optical.h< / a > < / li >
2025-12-21 20:17:32 +00:00
< li class = "footer" > Generated by < a href = "https://www.doxygen.org/index.html" > < img class = "footer" src = "doxygen.svg" width = "104" height = "31" alt = "doxygen" / > < / a > 1.15.0 < / li >
2025-10-11 01:35:43 +01:00
< / ul >
< / div >
< / body >
< / html >