Skip to content

proconsule/libusbdvd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

45 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

libusbdvd

libusbdvd is a c++ library for HorizonOS supporting CD/DVD Drives.

Started as P.O.C. for DVD support for libusbhsfs now is a DVD/BD drive support library with all major optical fs supported

Current support:

  • USB-DVD USB-BD Drives with USB MASS STORAGE SUBCLASS 0x02
  • USB-DVD USB-BD Drives with USB MASS STORAGE SUBCLASS 0x06 (many Blu-ray drives)
  • File Image mount (.iso) (.cue/.bin)
  • CD Audio
  • ISO9660 with Joliet and basic RockRidge support
  • UDF Support up to 2.60
  • CD/DVD/Blu-ray support
  • Transparent CSS Descramble
  • CSS Key Cache
  • ioctl "fake" file for direct SCSI COMMANDS (needed for AACS Bus Encryption)

TODO List:

  • Exotic disc layout (eg. Mixed Mode CD)

AACS is not managed by the library, if you want to use AACS protected contents you have to make you own decoder

For a list of tested device refer to Compatibility List

There is a C++ and C interface (the c program must be linked against -lstdc++)

C Example

/* Create the lib obj ref */
usbdvd_obj* dvdtest = usbdvd_init_verbose(1); // 1 = 0x02 and 0x06 subclass 0 = 0x02 subclass only
/* ref to the drive ctx with info */
usbdvd_struct *drivectx = usbdvd_get_ctx(dvdtest);
/* destroy and cleanup */
usbdvd_destroy(dvdtest);

C++ Example

/* Init the USBDVD Class */
CUSBDVD *dvdtest= new CUSBDVD();
/* ref to the drive ctx with info */
usbdvd_struct *drivectx = &dvdtest->usbdvd_ctx;
/* destroy and cleanup */
delete dvdtest;

For image file load you can use

C

usbdvd_obj* dvdtest = usbdvd_initimage("/pathtoimagefile");

C++

CUSBDVD *dvdtest= new CUSBDVD("/pathtoimagefile");

Thanks to

About

libusbdvd is a c++ library for HorizonOS supporting CD/DVD/BD Drives.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors