libaaruformat 1.0
Aaru Data Preservation Suite - Format Library
Loading...
Searching...
No Matches
helpers.c
Go to the documentation of this file.
1/*
2 * This file is part of the Aaru Data Preservation Suite.
3 * Copyright (c) 2019-2025 Natalia Portillo.
4 *
5 * This library is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU Lesser General Public License as
7 * published by the Free Software Foundation; either version 2.1 of the
8 * License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, see <http://www.gnu.org/licenses/>.
17 */
18
19#if defined(_WIN32) || defined(_WIN64)
20#include <windows.h>
21#include <wincrypt.h>
22#endif
23
24#include <aaru.h>
25
26#include <aaruformat.h>
27#include <stdio.h>
28#include <stdlib.h>
29#include <time.h>
30
40{
41 switch(type)
42 {
44 return CD_TOC;
46 return CD_SessionInfo;
47 case CompactDiscToc:
48 return CD_FullTOC;
49 case CompactDiscPma:
50 return CD_PMA;
51 case CompactDiscAtip:
52 return CD_ATIP;
54 return CD_TEXT;
55 case DvdPfi:
56 return DVD_PFI;
57 case DvdLeadInCmi:
58 return DVD_CMI;
59 case DvdDiscKey:
60 return DVD_DiscKey;
61 case DvdBca:
62 return DVD_BCA;
63 case DvdDmi:
64 return DVD_DMI;
68 return DVD_MKB;
69 case DvdRamDds:
70 return DVDRAM_DDS;
73 case DvdRamSpareArea:
74 return DVDRAM_SpareArea;
75 case DvdRRmd:
76 return DVDR_RMD;
81 case DvdRPfi:
82 return DVDR_PFI;
83 case DvdAdip:
84 return DVD_ADIP;
85 case HdDvdCpi:
86 return HDDVD_CPI;
88 return HDDVD_MediumStatus;
97 case BlurayDi:
98 return BD_DI;
99 case BlurayBca:
100 return BD_BCA;
101 case BlurayDds:
102 return BD_DDS;
104 return BD_CartridgeStatus;
105 case BluraySpareArea:
106 return BD_SpareArea;
109 case AacsSerialNumber:
110 return AACS_SerialNumber;
114 return AACS_MKB;
115 case AacsDataKeys:
116 return AACS_DataKeys;
117 case AacsLbaExtents:
118 return AACS_LBAExtents;
120 return AACS_CPRM_MKB;
124 return MMC_WriteProtection;
126 return MMC_DiscInformation;
131 case ScsiInquiry:
132 return SCSI_INQUIRY;
133 case ScsiModePage2A:
134 return SCSI_MODEPAGE_2A;
135 case AtaIdentify:
136 return ATA_IDENTIFY;
137 case AtapiIdentify:
138 return ATAPI_IDENTIFY;
139 case PcmciaCis:
140 return PCMCIA_CIS;
141 case SecureDigitalCid:
142 return SD_CID;
143 case SecureDigitalCsd:
144 return SD_CSD;
145 case SecureDigitalScr:
146 return SD_SCR;
147 case SecureDigitalOcr:
148 return SD_OCR;
150 return MMC_CID;
152 return MMC_CSD;
154 return MMC_OCR;
156 return MMC_ExtendedCSD;
158 return Xbox_SecuritySector;
159 case FloppyLeadOut:
160 return Floppy_LeadOut;
162 return DiscControlBlock;
164 return CD_FirstTrackPregap;
166 return CD_LeadOut;
167 case ScsiModeSense6:
168 return SCSI_MODESENSE_6;
169 case ScsiModeSense10:
170 return SCSI_MODESENSE_10;
171 case UsbDescriptors:
172 return USB_Descriptors;
173 case XboxDmi:
174 return Xbox_DMI;
175 case XboxPfi:
176 return Xbox_PFI;
178 return CD_MCN;
180 return CD_LeadIn;
183 default:
184 return -1;
185 }
186}
187
198{
199 switch(tag_type)
200 {
201 case CD_TOC:
203 case CD_SessionInfo:
205 case CD_FullTOC:
206 return CompactDiscToc;
207 case CD_PMA:
208 return CompactDiscPma;
209 case CD_ATIP:
210 return CompactDiscAtip;
211 case CD_TEXT:
213 case DVD_PFI:
214 return DvdPfi;
215 case DVD_CMI:
216 return DvdLeadInCmi;
217 case DVD_DiscKey:
218 return DvdDiscKey;
219 case DVD_BCA:
220 return DvdBca;
221 case DVD_DMI:
222 return DvdDmi;
224 return DvdMediaIdentifier;
225 case DVD_MKB:
226 return DvdMediaKeyBlock;
227 case DVDRAM_DDS:
228 return DvdRamDds;
230 return DvdRamMediumStatus;
231 case DVDRAM_SpareArea:
232 return DvdRamSpareArea;
233 case DVDR_RMD:
234 return DvdRRmd;
236 return DvdRPrerecordedInfo;
238 return DvdRMediaIdentifier;
239 case DVDR_PFI:
240 return DvdRPfi;
241 case DVD_ADIP:
242 return DvdAdip;
243 case HDDVD_CPI:
244 return HdDvdCpi;
246 return HdDvdMediumStatus;
248 return DvdDlLayerCapacity;
255 case BD_DI:
256 return BlurayDi;
257 case BD_BCA:
258 return BlurayBca;
259 case BD_DDS:
260 return BlurayDds;
263 case BD_SpareArea:
264 return BluraySpareArea;
268 return AacsSerialNumber;
270 return AacsMediaIdentifier;
271 case AACS_MKB:
272 return AacsMediaKeyBlock;
273 case AACS_DataKeys:
274 return AacsDataKeys;
275 case AACS_LBAExtents:
276 return AacsLbaExtents;
277 case AACS_CPRM_MKB:
278 return CprmMediaKeyBlock;
289 case SCSI_INQUIRY:
290 return ScsiInquiry;
291 case SCSI_MODEPAGE_2A:
292 return ScsiModePage2A;
293 case ATA_IDENTIFY:
294 return AtaIdentify;
295 case ATAPI_IDENTIFY:
296 return AtapiIdentify;
297 case PCMCIA_CIS:
298 return PcmciaCis;
299 case SD_CID:
300 return SecureDigitalCid;
301 case SD_CSD:
302 return SecureDigitalCsd;
303 case SD_SCR:
304 return SecureDigitalScr;
305 case SD_OCR:
306 return SecureDigitalOcr;
307 case MMC_CID:
308 return MultiMediaCardCid;
309 case MMC_CSD:
310 return MultiMediaCardCsd;
311 case MMC_OCR:
312 return MultiMediaCardOcr;
313 case MMC_ExtendedCSD:
316 return XboxSecuritySector;
317 case Floppy_LeadOut:
318 return FloppyLeadOut;
319 case DiscControlBlock:
320 return DvdDiscControlBlock;
323 case CD_LeadOut:
324 return CompactDiscLeadOut;
325 case SCSI_MODESENSE_6:
326 return ScsiModeSense6;
328 return ScsiModeSense10;
329 case USB_Descriptors:
330 return UsbDescriptors;
331 case Xbox_DMI:
332 return XboxDmi;
333 case Xbox_PFI:
334 return XboxPfi;
335 case CD_MCN:
337 case CD_LeadIn:
338 return CompactDiscLeadIn;
340 return DvdDiscKeyDecrypted;
341 default:
342 return -1;
343 }
344}
345
346// Get the CICM XML media type from AARU media type
348{
349 switch(type)
350 {
351 case CD:
352 case CDDA:
353 case CDG:
354 case CDEG:
355 case CDI:
356 case CDIREADY:
357 case CDROM:
358 case CDROMXA:
359 case CDPLUS:
360 case CDMO:
361 case CDR:
362 case CDRW:
363 case CDMRW:
364 case VCD:
365 case SVCD:
366 case PCD:
367 case SACD:
368 case DDCD:
369 case DDCDR:
370 case DDCDRW:
371 case DTSCD:
372 case CDMIDI:
373 case CDV:
374 case DVDROM:
375 case DVDR:
376 case DVDRW:
377 case DVDPR:
378 case DVDPRW:
379 case DVDPRWDL:
380 case DVDRDL:
381 case DVDPRDL:
382 case DVDRAM:
383 case DVDRWDL:
384 case DVDDownload:
385 case HDDVDROM:
386 case HDDVDRAM:
387 case HDDVDR:
388 case HDDVDRW:
389 case HDDVDRDL:
390 case HDDVDRWDL:
391 case BDROM:
392 case BDR:
393 case BDRE:
394 case BDRXL:
395 case BDREXL:
396 case EVD:
397 case FVD:
398 case HVD:
399 case CBHD:
400 case HDVMD:
401 case VCDHD:
402 case SVOD:
403 case FDDVD:
404 case LD:
405 case LDROM:
406 case LDROM2:
407 case LVROM:
408 case MegaLD:
409 case PS1CD:
410 case PS2CD:
411 case PS2DVD:
412 case PS3DVD:
413 case PS3BD:
414 case PS4BD:
415 case UMD:
416 case XGD:
417 case XGD2:
418 case XGD3:
419 case XGD4:
420 case MEGACD:
421 case SATURNCD:
422 case GDROM:
423 case GDR:
424 case SuperCDROM2:
425 case JaguarCD:
426 case ThreeDO:
427 case PCFX:
428 case NeoGeoCD:
429 case GOD:
430 case WOD:
431 case WUOD:
432 case CDTV:
433 case CD32:
434 case Nuon:
435 case Playdia:
436 case Pippin:
437 case FMTOWNS:
438 case MilCD:
439 case VideoNow:
440 case VideoNowColor:
441 case VideoNowXp:
442 return OpticalDisc;
443 default:
444 return BlockMedia;
445 }
446}
447
459int compare_extents(const void *a, const void *b)
460{
461 const DumpExtent *extent_a = a;
462 const DumpExtent *extent_b = b;
463
464 if(extent_a->start < extent_b->start) return -1;
465 if(extent_a->start > extent_b->start) return 1;
466 return 0;
467}
468
480void generate_random_bytes(uint8_t *buffer, size_t length)
481{
482 if(buffer == NULL || length == 0) return;
483
484#if defined(_WIN32) || defined(_WIN64)
485 // Windows implementation using CryptGenRandom
486 HCRYPTPROV hCryptProv;
487 if(CryptAcquireContext(&hCryptProv, NULL, NULL, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT))
488 {
489 CryptGenRandom(hCryptProv, (DWORD)length, buffer);
490 CryptReleaseContext(hCryptProv, 0);
491 return;
492 }
493#else
494 // Unix-like systems (Linux, macOS, BSD, etc.) - use /dev/urandom
495 FILE *urandom = fopen("/dev/urandom", "rb");
496 if(urandom != NULL)
497 {
498 size_t bytes_read = fread(buffer, 1, length, urandom);
499 fclose(urandom);
500 if(bytes_read == length) return;
501 }
502#endif
503
504 // Fallback: use time-seeded rand() if platform-specific methods fail
505 // This is less secure but ensures we always generate some random data
506 srand((unsigned int)time(NULL));
507 for(size_t i = 0; i < length; i++) { buffer[i] = (uint8_t)(rand() % 256); }
508}
Public high-level API types: media classifications, per-sector / per-media tag enums and image summar...
#define AARU_CALL
Definition decls.h:45
#define AARU_LOCAL
Definition decls.h:55
@ OpticalDisc
Purely optical discs.
Definition enums.h:218
@ BlockMedia
Media that is physically block-based or abstracted like that.
Definition enums.h:219
@ DvdDiscKey
DVD disc key.
Definition enums.h:55
@ CompactDiscSessionInfo
Compact Disc session information.
Definition enums.h:48
@ DvdRPfi
DVD-R Physical Format Information.
Definition enums.h:66
@ ScsiMmcTrackResourcesInformation
MMC track resources information.
Definition enums.h:89
@ DvdPfi
DVD Physical Format Information.
Definition enums.h:53
@ HdDvdCpi
HD DVD Copy Protection Information (CPI).
Definition enums.h:68
@ DvdDlLayerCapacity
DVD dual-layer capacity.
Definition enums.h:70
@ CompactDiscAtip
Compact Disc Absolute Time In Pregroove (ATIP).
Definition enums.h:51
@ CompactDiscLeadOut
Compact Disc lead‑out.
Definition enums.h:108
@ MultiMediaCardOcr
MultiMediaCard OCR register.
Definition enums.h:102
@ ScsiMmcDiscInformation
MMC disc information.
Definition enums.h:88
@ DvdRamDds
DVD-RAM Disc Definition Structure (DDS).
Definition enums.h:60
@ DvdRamMediumStatus
DVD-RAM medium status.
Definition enums.h:61
@ AacsMediaIdentifier
AACS media identifier.
Definition enums.h:81
@ AacsMediaKeyBlock
AACS Media Key Block (MKB).
Definition enums.h:82
@ CompactDiscLeadInCdText
Compact Disc lead-in CD-Text.
Definition enums.h:52
@ ScsiModePage2A
SCSI MODE PAGE 2Ah.
Definition enums.h:92
@ SecureDigitalOcr
Secure Digital OCR register.
Definition enums.h:99
@ MultiMediaCardCsd
MultiMediaCard CSD register.
Definition enums.h:101
@ CompactDiscPartialToc
Compact Disc partial Table of Contents.
Definition enums.h:47
@ CprmMediaKeyBlock
CPRM Media Key Block (MKB).
Definition enums.h:85
@ ScsiMmcPowResourcesInformation
MMC POW (Persistent Optical Write?) resources information.
Definition enums.h:90
@ SecureDigitalCid
Secure Digital CID register.
Definition enums.h:96
@ CompactDiscMediaCatalogueNumber
Compact Disc Media Catalogue Number (lead‑in, 13 ASCII bytes).
Definition enums.h:120
@ XboxSecuritySector
Xbox Security Sector.
Definition enums.h:104
@ AacsVolumeIdentifier
AACS volume identifier.
Definition enums.h:79
@ DvdDmi
DVD Disc Manufacturing Information (DMI).
Definition enums.h:57
@ ScsiInquiry
SCSI INQUIRY response.
Definition enums.h:91
@ CompactDiscToc
Compact Disc full Table of Contents.
Definition enums.h:49
@ DvdLeadInCmi
DVD lead-in Copyright Management Information (CMI).
Definition enums.h:54
@ HdDvdMediumStatus
HD DVD medium status.
Definition enums.h:69
@ DvdAdip
DVD Address In Pregroove (ADIP).
Definition enums.h:67
@ AacsLbaExtents
AACS LBA extents.
Definition enums.h:84
@ AtaIdentify
ATA IDENTIFY DEVICE data.
Definition enums.h:93
@ AacsDataKeys
AACS data keys.
Definition enums.h:83
@ BlurayDi
Blu-ray Disc Information (DI).
Definition enums.h:74
@ SecureDigitalCsd
Secure Digital CSD register.
Definition enums.h:97
@ BluraySpareArea
Blu-ray spare area information.
Definition enums.h:78
@ DvdDiscKeyDecrypted
Decrypted DVD Disc Key.
Definition enums.h:125
@ AtapiIdentify
ATAPI IDENTIFY PACKET DEVICE data.
Definition enums.h:94
@ SecureDigitalScr
Secure Digital SCR register.
Definition enums.h:98
@ DvdRPrerecordedInfo
DVD-R pre‑recorded information.
Definition enums.h:64
@ CompactDiscLeadIn
Compact Disc lead‑in.
Definition enums.h:124
@ PcmciaCis
PCMCIA Card Information Structure (CIS).
Definition enums.h:95
@ DvdBca
DVD Burst Cutting Area (BCA).
Definition enums.h:56
@ DvdRamSpareArea
DVD-RAM spare area information.
Definition enums.h:62
@ MultiMediaCardCid
MultiMediaCard CID register.
Definition enums.h:100
@ XboxDmi
Xbox DMI.
Definition enums.h:112
@ DvdRMediaIdentifier
DVD-R media identifier.
Definition enums.h:65
@ HybridRecognizedLayers
Recognized layers (hybrid media).
Definition enums.h:86
@ ScsiMmcWriteProtection
MMC write-protection data.
Definition enums.h:87
@ DvdDlMiddleZoneAddress
DVD dual-layer middle zone address.
Definition enums.h:71
@ BlurayCartridgeStatus
Blu-ray cartridge status.
Definition enums.h:77
@ BlurayBca
Blu-ray Burst Cutting Area (BCA).
Definition enums.h:75
@ CompactDiscFirstTrackPregap
Compact Disc first track pre-gap.
Definition enums.h:107
@ DvdMediaIdentifier
DVD media identifier.
Definition enums.h:58
@ ScsiModeSense6
SCSI MODE SENSE (6) response.
Definition enums.h:109
@ UsbDescriptors
USB descriptors set.
Definition enums.h:111
@ AacsSerialNumber
AACS serial number.
Definition enums.h:80
@ DvdDiscControlBlock
DVD Disc Control Block.
Definition enums.h:106
@ FloppyLeadOut
Floppy lead‑out data.
Definition enums.h:105
@ ScsiModeSense10
SCSI MODE SENSE (10) response.
Definition enums.h:110
@ CompactDiscPma
Compact Disc Power Management Area (PMA).
Definition enums.h:50
@ XboxPfi
Xbox Physical Format Information (PFI).
Definition enums.h:113
@ MultiMediaCardExtendedCsd
MultiMediaCard Extended CSD register.
Definition enums.h:103
@ DvdDlManualLayerJumpLba
DVD dual-layer manual layer jump LBA.
Definition enums.h:73
@ DvdMediaKeyBlock
DVD Media Key Block (MKB).
Definition enums.h:59
@ DvdDlJumpIntervalSize
DVD dual-layer jump interval size.
Definition enums.h:72
@ BlurayDds
Blu-ray Disc Definition Structure (DDS).
Definition enums.h:76
@ DvdRRmd
DVD-R RMD (Recording Management Data).
Definition enums.h:63
@ SCSI_MODEPAGE_2A
SCSI Mode Page 2Ah (CD/DVD capabilities)
Definition aaru.h:983
@ BD_DDS
Disc Definition Structure (recordable)
Definition aaru.h:967
@ MMC_CID
MMC Card ID.
Definition aaru.h:991
@ DVDDL_JumpIntervalSize
Jump interval size (opposite track path)
Definition aaru.h:963
@ MMC_CSD
MMC Card Specific Data.
Definition aaru.h:992
@ DVD_DiscKey_Decrypted
Decrypted DVD disc key,.
Definition aaru.h:1010
@ BD_SpareArea
BD spare area allocation map.
Definition aaru.h:969
@ CD_TOC
Standard CD Table Of Contents (lead-in, first session)
Definition aaru.h:937
@ DVDDL_ManualLayerJumpLBA
Manual layer jump LBA (OTP)
Definition aaru.h:964
@ DVDRAM_SpareArea
Spare area descriptors.
Definition aaru.h:953
@ DVD_CMI
Copyright Management Information (CSS/CPRM flags)
Definition aaru.h:945
@ DVDR_MediaIdentifier
DVD-R/-RW writable media identifier.
Definition aaru.h:956
@ SCSI_MODESENSE_10
Raw MODE SENSE (10) data.
Definition aaru.h:1001
@ USB_Descriptors
Concatenated USB descriptors (device/config/interface)
Definition aaru.h:1002
@ SCSI_MODESENSE_6
Raw MODE SENSE (6) data.
Definition aaru.h:1000
@ ATAPI_IDENTIFY
ATA PACKET IDENTIFY DEVICE.
Definition aaru.h:985
@ CD_SessionInfo
Per-session summary (start/end addresses, track count)
Definition aaru.h:938
@ DVD_PFI
Physical Format Information (layer geometry & book type)
Definition aaru.h:944
@ CD_LeadIn
Raw lead-in (TOC frames)
Definition aaru.h:1005
@ BD_CartridgeStatus
Cartridge presence / write protect (BD-RE/BD-R in caddy)
Definition aaru.h:968
@ Xbox_DMI
Xbox Disc Manufacturing Info (DMI)
Definition aaru.h:1003
@ AACS_SerialNumber
Pre-recorded media serial number (AACS)
Definition aaru.h:971
@ DVDR_PreRecordedInfo
Pre-recorded info area (lead-in)
Definition aaru.h:955
@ SD_SCR
SecureDigital Configuration Register.
Definition aaru.h:989
@ DVDRAM_DDS
Defect Data Structure (DVD-RAM mapping)
Definition aaru.h:951
@ AACS_DataKeys
Extracted AACS title/volume keys (when decrypted)
Definition aaru.h:974
@ CD_ATIP
Absolute Time In Pregroove (writable media timing & power metadata)
Definition aaru.h:941
@ AACS_MKB
AACS Media Key Block.
Definition aaru.h:973
@ DVD_DiscKey
Encrypted disc key block (CSS)
Definition aaru.h:946
@ MMC_DiscInformation
Disc Information (recordable status, erasable, last session)
Definition aaru.h:979
@ ATA_IDENTIFY
ATA IDENTIFY DEVICE (512 bytes)
Definition aaru.h:984
@ DVDR_PFI
DVD-R physical format (layer data)
Definition aaru.h:957
@ DVD_MediaIdentifier
Writable media dye / manufacturer ID.
Definition aaru.h:949
@ CD_LeadOut
Lead-out area contents.
Definition aaru.h:999
@ MMC_ExtendedCSD
MMC Extended CSD (512 bytes)
Definition aaru.h:994
@ CD_TEXT
CD-Text blocks (titles, performers, etc.)
Definition aaru.h:942
@ CD_MCN
Media Catalogue Number (EAN/UPC style identifier)
Definition aaru.h:943
@ MMC_TrackResourcesInformation
Track Resources (allocated/open track data)
Definition aaru.h:980
@ Xbox_SecuritySector
Xbox/Xbox 360 Security Sector (SS.bin)
Definition aaru.h:995
@ HDDVD_MediumStatus
HD DVD Medium status (spares/defects)
Definition aaru.h:960
@ DVDDL_MiddleZoneAddress
Middle zone start LBA.
Definition aaru.h:962
@ Floppy_LeadOut
Manufacturer / duplication cylinder (floppy special data)
Definition aaru.h:996
@ MMC_POWResourcesInformation
Pseudo OverWrite resources (BD-R POW)
Definition aaru.h:981
@ AACS_MediaIdentifier
AACS Media Identifier (unique per disc)
Definition aaru.h:972
@ DVDDL_LayerCapacity
Dual layer capacity & break info.
Definition aaru.h:961
@ AACS_VolumeIdentifier
AACS Volume Identifier.
Definition aaru.h:970
@ BD_BCA
Blu-ray Burst Cutting Area.
Definition aaru.h:966
@ Hybrid_RecognizedLayers
Hybrid disc recognized layer combinations (e.g. CD/DVD/BD)
Definition aaru.h:977
@ AACS_CPRM_MKB
CPRM Media Key Block.
Definition aaru.h:976
@ DVDR_RMD
Recorded Media Data (RMD) last border-out.
Definition aaru.h:954
@ AACS_LBAExtents
LBA extents requiring bus encryption.
Definition aaru.h:975
@ DVD_DMI
Disc Manufacturer Information (lead-in descriptor)
Definition aaru.h:948
@ DVD_BCA
Burst Cutting Area (etched manufacturer / AACS info)
Definition aaru.h:947
@ DVD_MKB
Media Key Block (AACS/DVD)
Definition aaru.h:950
@ DiscControlBlock
DVD Disc Control Blocks.
Definition aaru.h:997
@ SD_CSD
SecureDigital Card Specific Data.
Definition aaru.h:988
@ SCSI_INQUIRY
SCSI INQUIRY standard data (SPC-*)
Definition aaru.h:982
@ CD_FullTOC
Complete multi-session TOC including hidden tracks.
Definition aaru.h:939
@ DVD_ADIP
Address In Pregroove (DVD+ / wobble timing)
Definition aaru.h:958
@ MMC_OCR
MMC Operation Conditions.
Definition aaru.h:993
@ HDDVD_CPI
Content Protection Info (HD DVD)
Definition aaru.h:959
@ SD_OCR
SecureDigital Operation Conditions (voltage)
Definition aaru.h:990
@ CD_PMA
Program Memory Area (temporary track info before finalization)
Definition aaru.h:940
@ DVDRAM_MediumStatus
Medium Status (allocated spare info)
Definition aaru.h:952
@ PCMCIA_CIS
PCMCIA/CardBus CIS tuple chain.
Definition aaru.h:986
@ Xbox_PFI
Xbox Physical Format Information (PFI)
Definition aaru.h:1004
@ SD_CID
SecureDigital Card ID register.
Definition aaru.h:987
@ CD_FirstTrackPregap
First track pregap (index 0)
Definition aaru.h:998
@ MMC_WriteProtection
Write protection status (MMC GET CONFIG)
Definition aaru.h:978
@ BD_DI
Disc Information (BD)
Definition aaru.h:965
@ BDREXL
BD-RE XL.
Definition aaru.h:163
@ CDROMXA
CD-ROM XA (Yellow Book)
Definition aaru.h:112
@ SVOD
Stacked Volumetric Optical Disc.
Definition aaru.h:173
@ CDR
CD-Recordable (Orange Book)
Definition aaru.h:115
@ ThreeDO
3DO CD
Definition aaru.h:233
@ PCD
Photo CD (Beige Book)
Definition aaru.h:120
@ CDV
CD-Video (ISO/IEC 61104)
Definition aaru.h:127
@ CDG
CD+G (Red Book)
Definition aaru.h:108
@ HVD
Holographic Versatile Disc.
Definition aaru.h:169
@ CDMO
CD-MO (Orange Book)
Definition aaru.h:114
@ DDCD
Double-Density CD-ROM (Purple Book)
Definition aaru.h:122
@ LD
Pioneer LaserDisc.
Definition aaru.h:178
@ CDEG
CD+EG (Red Book)
Definition aaru.h:109
@ GDR
Sega/Yamaha recordable Gigabyte Disc.
Definition aaru.h:224
@ CDDA
CD Digital Audio (Red Book)
Definition aaru.h:107
@ Pippin
Definition aaru.h:702
@ CDMRW
Mount-Rainier CD-RW.
Definition aaru.h:117
@ MEGACD
Sega MegaCD.
Definition aaru.h:221
@ VideoNowColor
Hasbro VideoNow Color disc.
Definition aaru.h:772
@ CDIREADY
CD-i Ready, contains a track before the first TOC track, in mode 2, and all TOC tracks are Audio.
Definition aaru.h:130
@ GOD
Nintendo GameCube Optical Disc.
Definition aaru.h:502
@ CDROM
CD-ROM (Yellow Book)
Definition aaru.h:111
@ HDDVDROM
HD DVD-ROM (applies to HD DVD Video)
Definition aaru.h:150
@ MegaLD
Definition aaru.h:182
@ VCD
Video CD (White Book)
Definition aaru.h:118
@ SuperCDROM2
PC-Engine / TurboGrafx CD.
Definition aaru.h:231
@ CDRW
CD-ReWritable (Orange Book)
Definition aaru.h:116
@ SVCD
Super Video CD (White Book)
Definition aaru.h:119
@ DVDPRWDL
DVD+RW DL.
Definition aaru.h:141
@ BDRXL
BD-R XL.
Definition aaru.h:162
@ DDCDR
DD CD-R (Purple Book)
Definition aaru.h:123
@ NeoGeoCD
NEO-GEO CD.
Definition aaru.h:235
@ DVDRW
DVD-RW.
Definition aaru.h:138
@ CDPLUS
CD+ (Blue Book)
Definition aaru.h:113
@ CDTV
Commodore CDTV.
Definition aaru.h:236
@ DVDRWDL
DVD-RW DL.
Definition aaru.h:145
@ HDDVDRDL
HD DVD-R DL.
Definition aaru.h:154
@ FMTOWNS
Fujitsu FM Towns bootable CD (mixed-mode proprietary extensions)
Definition aaru.h:132
@ PS1CD
Sony PlayStation game CD.
Definition aaru.h:203
@ HDDVDRWDL
HD DVD-RW DL.
Definition aaru.h:155
@ XGD3
Microsoft X-box 360 Game Disc.
Definition aaru.h:216
@ WOD
Nintendo Wii Optical Disc.
Definition aaru.h:512
@ PS3BD
Sony PlayStation 3 game Blu-ray.
Definition aaru.h:207
@ UMD
Sony PlayStation Portable Universal Media Disc (ECMA-365)
Definition aaru.h:209
@ XGD
Microsoft X-box Game Disc.
Definition aaru.h:214
@ EVD
Enhanced Versatile Disc.
Definition aaru.h:167
@ SACD
Super Audio CD (Scarlet Book)
Definition aaru.h:121
@ DVDPRDL
DVD+R DL.
Definition aaru.h:143
@ HDDVDRAM
HD DVD-RAM.
Definition aaru.h:151
@ DVDR
DVD-R.
Definition aaru.h:137
@ PS3DVD
Sony PlayStation 3 game DVD.
Definition aaru.h:206
@ CDMIDI
CD-MIDI (Red Book)
Definition aaru.h:126
@ PCFX
NEC PC-FX.
Definition aaru.h:234
@ BDROM
BD-ROM (and BD Video)
Definition aaru.h:159
@ JaguarCD
Atari Jaguar CD.
Definition aaru.h:232
@ PS2DVD
Sony PlayStation 2 game DVD.
Definition aaru.h:205
@ XGD4
Microsoft X-box One Game Disc.
Definition aaru.h:217
@ VideoNow
Hasbro VideoNow 85 mm proprietary video disc.
Definition aaru.h:771
@ VideoNowXp
Hasbro VideoNow XP higher capacity disc.
Definition aaru.h:773
@ VCDHD
Versatile Compact Disc High Density.
Definition aaru.h:172
@ CD
Any unknown or standard violating CD.
Definition aaru.h:106
@ GDROM
Sega/Yamaha Gigabyte Disc.
Definition aaru.h:223
@ SATURNCD
Sega Saturn disc.
Definition aaru.h:222
@ CBHD
China Blue High Definition.
Definition aaru.h:170
@ BDR
BD-R.
Definition aaru.h:160
@ XGD2
Microsoft X-box 360 Game Disc.
Definition aaru.h:215
@ LDROM
Pioneer LaserDisc data.
Definition aaru.h:179
@ PS4BD
Sony PlayStation 4 game Blu-ray.
Definition aaru.h:208
@ HDDVDR
HD DVD-R.
Definition aaru.h:152
@ HDVMD
High Definition Versatile Multilayer Disc.
Definition aaru.h:171
@ HDDVDRW
HD DVD-RW.
Definition aaru.h:153
@ MilCD
Sega Dreamcast MIL-CD enhanced multimedia disc.
Definition aaru.h:226
@ BDRE
BD-RE.
Definition aaru.h:161
@ DTSCD
DTS audio CD (non-standard)
Definition aaru.h:125
@ DVDPR
DVD+R.
Definition aaru.h:139
@ DDCDRW
DD CD-RW (Purple Book)
Definition aaru.h:124
@ FVD
Forward Versatile Disc.
Definition aaru.h:168
@ CDI
CD-i (Green Book)
Definition aaru.h:110
@ Playdia
Bandai Playdia.
Definition aaru.h:239
@ DVDPRW
DVD+RW.
Definition aaru.h:140
@ Nuon
Nuon (DVD based videogame console)
Definition aaru.h:238
@ CD32
Amiga CD32.
Definition aaru.h:237
@ LVROM
Definition aaru.h:181
@ DVDDownload
DVD-Download.
Definition aaru.h:146
@ DVDRDL
DVD-R DL.
Definition aaru.h:142
@ WUOD
Nintendo Wii U Optical Disc.
Definition aaru.h:513
@ DVDROM
DVD-ROM (applies to DVD Video and DVD Audio)
Definition aaru.h:136
@ LDROM2
Definition aaru.h:180
@ FDDVD
Five Dimensional disc.
Definition aaru.h:174
@ PS2CD
Sony PlayStation 2 game CD.
Definition aaru.h:204
@ DVDRAM
DVD-RAM.
Definition aaru.h:144
int32_t aaruf_get_datatype_for_media_tag_type(const int32_t tag_type)
Converts an Aaru media tag type to an image data type.
Definition helpers.c:197
void generate_random_bytes(uint8_t *buffer, size_t length)
Generates cryptographically strong random bytes.
Definition helpers.c:480
int32_t aaruf_get_media_tag_type_for_datatype(const int32_t type)
Converts an image data type to an Aaru media tag type.
Definition helpers.c:39
int32_t aaruf_get_xml_mediatype(const int32_t type)
Definition helpers.c:347
int compare_extents(const void *a, const void *b)
Comparison function for sorting DumpExtent arrays by start sector.
Definition helpers.c:459
Inclusive [start,end] logical sector range contributed by a single hardware environment.
Definition context.h:334
uint64_t start
Starting LBA (inclusive).
Definition context.h:335