Table of Contents

DragonFly BSD

Both dvd_info and bluray_info build out of the box once the dependencies re installed.

The default device for the optical drive is /dev/cd0

It not already installed, you will need automake and autoconf:

pkg install autoconf automake pkgconf

dvd_info

Install libdvdread and libdvdcss:

pkg install libdvdread libdvdcss

Download the source code from github, and build:

autoreconf -fi
./configure
make

bluray_info

Install libbluray and libaacs:

pkg install libbluray and libaacs

Then check out the code as normal, and build:

autoreconf -fi
./configure
make

research notes

man 4 cd:

CDIOCRESET
CDIOCSETDEBUG
CDIOCCLRDEBUG Turn on (off) debugging for the appropriate device.

CDIOCSTART
CDIOCSTOP Tell the drive to spin-up (-down) the CD-ROM.

CDIOCALLOW
CDIOCPREVENT Tell the drive to allow (prevent) manual ejection of the CD-ROM disc.  Not all drives support this feature.


CDIOCEJECT

CDIOCCLOSE

man 9 cd:

     CD_Q_NO_TOUCH    This flag tell the driver not to probe the drive at
                      attach time to see if there is a disk in the drive and
                      find out what size it is.  This flag is currently
                      unimplemented in the CAM cd driver.

     CDIOCCAPABILITY      (struct ioc_capability) Retrieve information from
                          the drive on what features it supports.  The
                          information is returned in the following structure:

                                struct ioc_capability {
                                        u_long  play_function;
                                #define CDDOPLAYTRK     0x00000001
                                        /* Can play tracks/index */
                                #define CDDOPLAYMSF     0x00000002
                                        /* Can play msf to msf */
                                #define CDDOPLAYBLOCKS  0x00000004
                                        /* Can play range of blocks */
                                #define CDDOPAUSE       0x00000100
                                        /* Output can be paused */
                                #define CDDORESUME      0x00000200
                                        /* Output can be resumed */
                                #define CDDORESET       0x00000400
                                        /* Drive can be completely reset */
                                #define CDDOSTART       0x00000800
                                        /* Audio can be started */
                                #define CDDOSTOP        0x00001000
                                        /* Audio can be stopped */
                                #define CDDOPITCH       0x00002000
                                        /* Audio pitch can be changed */

                                        u_long  routing_function;
                                #define CDREADVOLUME    0x00000001
                                        /* Volume settings can be read */
                                #define CDSETVOLUME     0x00000002
                                        /* Volume settings can be set */
                                #define CDSETMONO       0x00000100
                                        /* Output can be set to mono */
                                #define CDSETSTEREO     0x00000200
                                        /* Output can be set to stereo (def) */
                                #define CDSETLEFT       0x00000400
                                        /* Output can be set to left only */
                                #define CDSETRIGHT      0x00000800
                                        /* Output can be set to right only */
                                #define CDSETMUTE       0x00001000
                                        /* Output can be muted */
                                #define CDSETPATCH      0x00008000
                                        /* Direct routing control allowed */

                                        u_long  special_function;
                                #define CDDOEJECT       0x00000001
                                        /* The tray can be opened */
                                #define CDDOCLOSE       0x00000002
                                        /* The tray can be closed */
                                #define CDDOLOCK        0x00000004
                                        /* The tray can be locked */
                                #define CDREADHEADER    0x00000100
                                        /* Can read Table of Contents */
                                #define CDREADENTRIES   0x00000200
                                        /* Can read TOC Entries */
                                #define CDREADSUBQ      0x00000200
                                        /* Can read Subchannel info */
                                #define CDREADRW        0x00000400
                                        /* Can read subcodes R-W */
                                #define CDHASDEBUG      0x00004000
                                        /* The tray has dynamic debugging */
                                };