Here are updates to libdvdcss 1.6.0, libdvdnav 7.0.0 and libdvdread 7.1.1.

Tested with mpv, mplayer and VLC.


libdvdcss

Changes between 1.5.0 and 1.6.0:
--------------------------------

  * Add support for CPRM (Content Protection for Recordable Media) decryption
    for CPRM-protected DVD media (DVD-RW for example)
  * Add dvdcss_get_encryption_type function to the public API
    This allows querying the disc's copyright protection system type (CPST)
    to detect CSS/CPPM and CPRM protected media
  * Update dvdcpxm_setup to allow context reuse via NULL arguments and to
    accept a raw CPRM key in place of the MKB
  * Improve CPXM/CPPM/CPRM error handling, context lifetime, and cleanup
  * Fix CPRM decryption and Darwin CPRM ioctl paths
  * Fix CPPM decryption cache teardown and copy-control handling
  * Fix OS/2 build issues and add CPRM media ID/MKB pack ioctl support
  * Fix FreeBSD and PATH_MAX build issues
  * Improve Windows drive opening support
  * Add proper Haiku support

Changes between 1.4.3 and 1.5.0:
--------------------------------

  * Add support for DVD-Audio disc decryption via libdvdcpxm integration
    Add new dvdcpxm.h header for dvdcpxm function calls
    Add dvdcpxm_read, dvdcpxm_readv, and dvdcpxm_seek functions
    Add initialization and cleanup functions: dvdcpxm_init, dvdcpxm_close
  * Switch build system to Meson and remove autotools and Visual Studio files
  * Fix public header include paths
  * Fix build issues with older compilers and scsi/sg.h detection
  * Miscellaneous CI, documentation, and platform cleanups

libdvdnav

libdvdnav (7.0.0)
 * add dvdnav_get_volid_string to obtain the volume id of the disc
 * add dvdnav_get_number_of_streams API to list tracks
 * add dvdnav_set_active_stream API to activate a stream
 * add dvdnav_toggle_spu_stream API to enable/disable the current SPU stream
 * add dvdnav_get_disk_region_mask API to get the reported version from the disk
 * expose dvdnav_jump_to_sector_by_time to the API
 * switch build system to Meson (and remove autotools)
 * remove obsolete MSVC files
 * fix public dvdnav.h includes
 * fix undefined shifts and add extra navigation safeguards
 * update CI targets, including wasm and newer platform images
 * fix crashes and avoid asserts

libdvdread

libdvdread (7.1.1)
 * reduce the number of symbols exported to avoid conflicts when linking
 * improve CI coverage

libdvdread (7.1.0)
 * DVD-Audio support:
     * Allow CPRM and CSS decryption support to be available simultaneously
     * Add Audio Still Video Set (ASVS) IFO structures and readers
     * Add ASVS and SAMG support to public IFO open APIs
     * Expose ASVS IFO, backup and menu VOB files
     * Improve AOB/VOB stream type handling
     * Misc fixes on structures documentation
 * DVD-VR support:
     * Add DVD-VR IFO parsing (PGIT, PG_GI, PS_GI)
     * Add DVDOpenVideoRecording functions
     * Add ifoOpenVideoRecording support
     * Add CPRM decryption support
     * Add DVDProbeType auto-detection for DVD-Video, DVD-Audio and DVD-VR
     * Add support for user-defined cells and time maps
     * Harden parsing of missing or malformed DVD-VR metadata
 * Add DVDOpenFiles for caller-provided virtual filesystem implementations
 * Split the internal filesystem implementation into platform-specific helpers
 * Improve file and directory handling on Windows, macOS and iOS
 * Improve logger fallback behavior when no controlling terminal is available
 * Add audio and subpicture code extension enums
 * Fixes and hardening:
     * Hardened IFO parsing for oversized still video groups
     * Fix DVD-Audio ASVS/SAMG fallback handling
     * Fix DVD-VR cell entry point byte swapping
     * Fix DVDFileSeek validation for non-sector-aligned files
     * Fix partial-block size accounting
     * Fix resource leaks, null pointer checks and error paths

libdvdread (7.0.1)
 * Fix crashes when dvdcss library is not present

libdvdread (7.0.0)
 * DVD-Audio support:
     * Introduced DVDOpenStreamAudio, DVDOpenAudio for opening DVD-Audio discs
     * Added DVD-Audio IFO structs for AMGI, SAMG and ATS
     * Added IFO read, print functions for AMGI, SAMG and ATS
     * Added dvdcpxm integration from libdvdcss 1.5.0 for encrypted DVD-A Discs
 * Switch build system to Meson (and remove autotools build system)
 * Use visibility attributes for exported symbols
 * Docs and Readme updates
 * Add missing stream callback functionality
 * Fix public header include paths
 * Improve port on Universal Windows Platform
 * Misc improvements and solidification for the port on various platforms


Index: converters/libdvdcss/Makefile
===================================================================
RCS file: /cvs/ports/converters/libdvdcss/Makefile,v
retrieving revision 1.34
diff -u -p -u -p -r1.34 Makefile
--- converters/libdvdcss/Makefile       20 Sep 2023 09:53:44 -0000      1.34
+++ converters/libdvdcss/Makefile       7 Nov 2026 05:21:00 -0000
@@ -1,19 +1,18 @@
 COMMENT=       descramble scrambled DVDs
 
-VER=           1.4.3
+VER=           1.6.0
 DISTNAME=      libdvdcss-${VER}
 CATEGORIES=    converters
 SITES=         https://download.videolan.org/pub/videolan/libdvdcss/${VER}/
-EXTRACT_SUFX=  .tar.bz2
+EXTRACT_SUFX=  .tar.xz
 
-SHARED_LIBS=   dvdcss  4.1
+SHARED_LIBS=   dvdcss  4.2
 
 HOMEPAGE=      https://www.videolan.org/developers/libdvdcss.html
 
 # GPLv2+
 PERMIT_PACKAGE=        Yes
 
-CONFIGURE_STYLE= gnu
-CONFIGURE_ARGS=        --disable-doc
+MODULES=       devel/meson
 
 .include <bsd.port.mk>
Index: converters/libdvdcss/distinfo
===================================================================
RCS file: /cvs/ports/converters/libdvdcss/distinfo,v
retrieving revision 1.20
diff -u -p -u -p -r1.20 distinfo
--- converters/libdvdcss/distinfo       11 Oct 2021 06:11:35 -0000      1.20
+++ converters/libdvdcss/distinfo       7 Nov 2026 05:21:00 -0000
@@ -1,2 +1,2 @@
-SHA256 (libdvdcss-1.4.3.tar.bz2) = IzzJL13AHF06lvWzWCvn1c7lo1pS06CBWHRdPYYHAHk=
-SIZE (libdvdcss-1.4.3.tar.bz2) = 388404
+SHA256 (libdvdcss-1.6.0.tar.xz) = fqVWyEa3v8MtR7QcrlbRhjprbV9wa7Fid41vKYSQl3w=
+SIZE (libdvdcss-1.6.0.tar.xz) = 83640
Index: converters/libdvdcss/patches/patch-src_ioctl_c
===================================================================
RCS file: converters/libdvdcss/patches/patch-src_ioctl_c
diff -N converters/libdvdcss/patches/patch-src_ioctl_c
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ converters/libdvdcss/patches/patch-src_ioctl_c      7 Nov 2026 05:21:00 
-0000
@@ -0,0 +1,135 @@
+- Implement ioctl_ReadCPRMMediaId() and ioctl_ReadCPRMMKBPack() for OpenBSD
+- Fix ioctl_InvalidateAgid() to use DVD_INVALIDATE_AGID with DVD_AUTH
+
+Index: src/ioctl.c
+--- src/ioctl.c.orig
++++ src/ioctl.c
+@@ -90,6 +90,10 @@
+ #   include <sys/mman.h>
+ #   include <sys/dcmd_cam.h>
+ #endif
++#ifdef HAVE_OPENBSD_DVD_STRUCT
++#   include <stdlib.h>
++#   include <sys/scsiio.h>
++#endif
+ 
+ #include "dvdcss/dvdcss.h"
+ #include "libdvdcpxm.h"
+@@ -113,6 +117,8 @@ static void WinInitSPTD ( SCSI_PASS_THROUGH_DIRECT *, 
+ static void QNXInitCPT ( CAM_PASS_THRU *, int );
+ #elif defined( __OS2__ )
+ static void OS2InitSDC( struct OS2_ExecSCSICmd *, int );
++#elif defined( HAVE_OPENBSD_DVD_STRUCT )
++static void OpenBSDInitSCSIREQ( scsireq_t *, int );
+ #endif
+ 
+ /*****************************************************************************
+@@ -935,7 +941,7 @@ int ioctl_InvalidateAgid( int i_fd, int *pi_agid )
+ #if defined( HAVE_LINUX_DVD_STRUCT )
+     dvd_authinfo auth_info = { 0 };
+ 
+-    auth_info.type = DVDCSS_INVALIDATE_AGID;
++    auth_info.type = DVD_INVALIDATE_AGID;
+     auth_info.lsa.agid = *pi_agid;
+ 
+     i_ret = ioctl( i_fd, DVD_AUTH, &auth_info );
+@@ -1122,6 +1128,24 @@ int ioctl_ReadCPRMMediaId(int i_fd,int *p_agid, uint8_
+     if (i_ret == 0)
+         memcpy(p_data_buffer, p_buffer, CPRM_MEDIA_ID_SIZE);
+ 
++#elif defined( HAVE_OPENBSD_DVD_STRUCT )
++    scsireq_t sr = { 0 };
++    uint8_t p_buffer[ CPRM_MEDIA_ID_SIZE + 4 ];
++
++    sr.databuf = (caddr_t)p_buffer;
++    sr.datalen = sizeof( p_buffer );
++    OpenBSDInitSCSIREQ( &sr, GPCMD_READ_DVD_STRUCTURE );
++
++    sr.cmd[ 7 ]  = CPRM_STRUCT_MEDIA_ID;
++    sr.cmd[ 10 ] = *p_agid << 6;
++
++    i_ret = ioctl( i_fd, SCIOCCOMMAND, &sr );
++    if( i_ret == 0 && sr.retsts != SCCMD_OK )
++        i_ret = -1;
++
++    if( i_ret == 0 )
++        memcpy( p_data_buffer, p_buffer + 4, CPRM_MEDIA_ID_SIZE );
++
+ #else
+ #   error "DVD ioctls are unavailable on this system"
+ 
+@@ -1271,6 +1295,36 @@ int ioctl_ReadCPRMMKBPack(int i_fd, int *p_agid, int m
+         memcpy(p_mkb_pack, p_buffer + 4, CPRM_MKB_PACK_SIZE);
+     }
+ 
++#elif defined( HAVE_OPENBSD_DVD_STRUCT )
++    scsireq_t sr = { 0 };
++    uint8_t *p_buffer = malloc( CPRM_MKB_PACK_SIZE + 4 );
++
++    if( !p_buffer )
++        return -1;
++
++    sr.databuf = (caddr_t)p_buffer;
++    sr.datalen = CPRM_MKB_PACK_SIZE + 4;
++    OpenBSDInitSCSIREQ( &sr, GPCMD_READ_DVD_STRUCTURE );
++
++    sr.cmd[ 2 ]  = (uint8_t)( ( mkb_pack >> 24 ) & 0xff );
++    sr.cmd[ 3 ]  = (uint8_t)( ( mkb_pack >> 16 ) & 0xff );
++    sr.cmd[ 4 ]  = (uint8_t)( ( mkb_pack >>  8 ) & 0xff );
++    sr.cmd[ 5 ]  = (uint8_t)(   mkb_pack         & 0xff );
++    sr.cmd[ 7 ]  = CPRM_STRUCT_MKB;
++    sr.cmd[ 10 ] = *p_agid << 6;
++
++    i_ret = ioctl( i_fd, SCIOCCOMMAND, &sr );
++    if( i_ret == 0 && sr.retsts != SCCMD_OK )
++        i_ret = -1;
++
++    if( i_ret == 0 )
++    {
++        *p_total_packs = p_buffer[ 3 ];
++        memcpy( p_mkb_pack, p_buffer + 4, CPRM_MKB_PACK_SIZE );
++    }
++
++    free( p_buffer );
++
+ #else
+ #   error "DVD ioctls are unavailable on this system"
+ 
+@@ -1858,3 +1912,37 @@ static void OS2InitSDC( struct OS2_ExecSCSICmd *p_sdc,
+     p_sdc->cmd_length   = 12;
+ }
+ #endif /* defined( __OS2__ ) */
++
++#if defined( HAVE_OPENBSD_DVD_STRUCT )
++/*****************************************************************************
++ * OpenBSDInitSCSIREQ: initialize a scsireq structure for SCIOCCOMMAND
++ *****************************************************************************
++ * This function initializes an OpenBSD SCSI request structure for future
++ * use, either a read command or a write command. It is used for the
++ * commands the kernel's DVD_READ_STRUCT/DVD_AUTH ioctls do not cover.
++ * SCIOCCOMMAND is only accepted on the raw partition of the cd(4) device.
++ 
*****************************************************************************/
++static void OpenBSDInitSCSIREQ( scsireq_t *p_sr, int i_type )
++{
++    memset( p_sr->databuf, 0, p_sr->datalen );
++
++    switch( i_type )
++    {
++        case GPCMD_SEND_KEY:
++            p_sr->flags = SCCMD_WRITE;
++            break;
++
++        case GPCMD_READ_DVD_STRUCTURE:
++        case GPCMD_REPORT_KEY:
++            p_sr->flags = SCCMD_READ;
++            break;
++    }
++
++    p_sr->cmd[ 0 ] = i_type;
++    p_sr->cmd[ 8 ] = (p_sr->datalen >> 8) & 0xff;
++    p_sr->cmd[ 9 ] =  p_sr->datalen       & 0xff;
++    p_sr->cmdlen   = 12;
++    p_sr->senselen = SENSEBUFLEN;
++    p_sr->timeout  = 5000; /* milliseconds */
++}
++#endif /* defined( HAVE_OPENBSD_DVD_STRUCT ) */
Index: converters/libdvdcss/pkg/PLIST
===================================================================
RCS file: /cvs/ports/converters/libdvdcss/pkg/PLIST,v
retrieving revision 1.13
diff -u -p -u -p -r1.13 PLIST
--- converters/libdvdcss/pkg/PLIST      11 Mar 2022 18:27:03 -0000      1.13
+++ converters/libdvdcss/pkg/PLIST      7 Nov 2026 05:21:00 -0000
@@ -1,13 +1,12 @@
 include/dvdcss/
+include/dvdcss/dvdcpxm.h
 include/dvdcss/dvdcss.h
 include/dvdcss/version.h
 @static-lib lib/libdvdcss.a
-lib/libdvdcss.la
 @lib lib/libdvdcss.so.${LIBdvdcss_VERSION}
 lib/pkgconfig/libdvdcss.pc
 share/doc/libdvdcss/
 share/doc/libdvdcss/AUTHORS
 share/doc/libdvdcss/COPYING
-share/doc/libdvdcss/ChangeLog
 share/doc/libdvdcss/NEWS
-share/doc/libdvdcss/README
+share/doc/libdvdcss/README.md
Index: multimedia/libdvdnav/Makefile
===================================================================
RCS file: /cvs/ports/multimedia/libdvdnav/Makefile,v
retrieving revision 1.33
diff -u -p -u -p -r1.33 Makefile
--- multimedia/libdvdnav/Makefile       17 Oct 2024 10:50:03 -0000      1.33
+++ multimedia/libdvdnav/Makefile       7 Nov 2026 05:21:00 -0000
@@ -1,11 +1,11 @@
 COMMENT=       DVD navigation library
 
-VER=           6.1.1
+VER=           7.0.0
 DISTNAME=      libdvdnav-${VER}
 EPOCH=         0
 CATEGORIES=    multimedia
 SITES=         https://download.videolan.org/pub/videolan/libdvdnav/${VER}/
-EXTRACT_SUFX=  .tar.bz2
+EXTRACT_SUFX=  .tar.xz
 
 SHARED_LIBS=   dvdnav          7.2
 
@@ -14,10 +14,10 @@ HOMEPAGE=   http://dvdnav.mplayerhq.hu/
 # GPLv2+
 PERMIT_PACKAGE=        Yes
 
-WANTLIB=       dvdread>=9.0 pthread
+WANTLIB=       dvdread>=9.0
 
-LIB_DEPENDS=   devel/libdvdread>=6.1.2
+LIB_DEPENDS=   devel/libdvdread>=7.1.1
 
-CONFIGURE_STYLE= gnu
+MODULES=       devel/meson
 
 .include <bsd.port.mk>
Index: multimedia/libdvdnav/distinfo
===================================================================
RCS file: /cvs/ports/multimedia/libdvdnav/distinfo,v
retrieving revision 1.13
diff -u -p -u -p -r1.13 distinfo
--- multimedia/libdvdnav/distinfo       11 Oct 2021 06:11:31 -0000      1.13
+++ multimedia/libdvdnav/distinfo       7 Nov 2026 05:21:00 -0000
@@ -1,2 +1,2 @@
-SHA256 (libdvdnav-6.1.1.tar.bz2) = wZGnR1lH0yP/doDPksD7G+gjdwGIXzdlbGTQTpjRjUg=
-SIZE (libdvdnav-6.1.1.tar.bz2) = 367606
+SHA256 (libdvdnav-7.0.0.tar.xz) = oqGPWtNtEzx0v5EGtkRYBvolOwkUGkY5JVA5S2R7Ih4=
+SIZE (libdvdnav-7.0.0.tar.xz) = 85132
Index: multimedia/libdvdnav/patches/patch-misc_dvdnav_pc_in
===================================================================
RCS file: multimedia/libdvdnav/patches/patch-misc_dvdnav_pc_in
diff -N multimedia/libdvdnav/patches/patch-misc_dvdnav_pc_in
--- multimedia/libdvdnav/patches/patch-misc_dvdnav_pc_in        11 Mar 2022 
19:39:21 -0000      1.6
+++ /dev/null   1 Jan 1970 00:00:00 -0000
@@ -1,10 +0,0 @@
-Index: misc/dvdnav.pc.in
---- misc/dvdnav.pc.in.orig
-+++ misc/dvdnav.pc.in
-@@ -9,4 +9,5 @@ Version: @VERSION@
- 
- Requires.private: dvdread >= @DVDREAD_MIN_VERSION@
- Cflags: -I${includedir} @THREAD_CFLAGS@
--Libs: -L${libdir} -ldvdnav @THREAD_LIBS@
-+Libs: -L${libdir} -ldvdnav
-+Libs.private: @THREAD_LIBS@
Index: multimedia/libdvdnav/pkg/PLIST
===================================================================
RCS file: /cvs/ports/multimedia/libdvdnav/pkg/PLIST,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 PLIST
--- multimedia/libdvdnav/pkg/PLIST      11 Mar 2022 19:39:21 -0000      1.8
+++ multimedia/libdvdnav/pkg/PLIST      7 Nov 2026 05:21:00 -0000
@@ -4,12 +4,11 @@ include/dvdnav/dvdnav.h
 include/dvdnav/dvdnav_events.h
 include/dvdnav/version.h
 @static-lib lib/libdvdnav.a
-lib/libdvdnav.la
 @lib lib/libdvdnav.so.${LIBdvdnav_VERSION}
 lib/pkgconfig/dvdnav.pc
 share/doc/libdvdnav/
 share/doc/libdvdnav/AUTHORS
 share/doc/libdvdnav/COPYING
 share/doc/libdvdnav/ChangeLog
-share/doc/libdvdnav/README
+share/doc/libdvdnav/README.md
 share/doc/libdvdnav/TODO
Index: devel/libdvdread/Makefile
===================================================================
RCS file: /cvs/ports/devel/libdvdread/Makefile,v
retrieving revision 1.39
diff -u -p -u -p -r1.39 Makefile
--- devel/libdvdread/Makefile   17 Oct 2024 10:50:02 -0000      1.39
+++ devel/libdvdread/Makefile   7 Nov 2026 05:21:00 -0000
@@ -1,12 +1,12 @@
 COMMENT =      accessing DVD files
 
-VER =          6.1.3
+VER =          7.1.1
 DISTNAME =     libdvdread-${VER}
 CATEGORIES =   devel
 SITES =                
https://download.videolan.org/pub/videolan/libdvdread/${VER}/
-EXTRACT_SUFX = .tar.bz2
+EXTRACT_SUFX = .tar.xz
 
-SHARED_LIBS =  dvdread         9.0
+SHARED_LIBS =  dvdread         9.1
 
 HOMEPAGE =     http://dvdnav.mplayerhq.hu/
 
@@ -20,7 +20,6 @@ WANTLIB =     dvdcss
 # dlopen'd
 LIB_DEPENDS =  converters/libdvdcss>=1.4.3
 
-CONFIGURE_STYLE = gnu
-CONFIGURE_ARGS =--disable-apidoc
+MODULES=       devel/meson
 
 .include <bsd.port.mk>
Index: devel/libdvdread/distinfo
===================================================================
RCS file: /cvs/ports/devel/libdvdread/distinfo,v
retrieving revision 1.16
diff -u -p -u -p -r1.16 distinfo
--- devel/libdvdread/distinfo   17 Nov 2022 06:44:30 -0000      1.16
+++ devel/libdvdread/distinfo   7 Nov 2026 05:21:00 -0000
@@ -1,2 +1,2 @@
-SHA256 (libdvdread-6.1.3.tar.bz2) = 
zjVFSZeiCMvlDpEjLw5z+xrDRxllgToTuHMKjxihU2k=
-SIZE (libdvdread-6.1.3.tar.bz2) = 395439
+SHA256 (libdvdread-7.1.1.tar.xz) = oNR4dlSL7IBndLv42/ILsZuhOUZDgxVrMuuOWZFbkKk=
+SIZE (libdvdread-7.1.1.tar.xz) = 102460
Index: devel/libdvdread/pkg/PLIST
===================================================================
RCS file: /cvs/ports/devel/libdvdread/pkg/PLIST,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 PLIST
--- devel/libdvdread/pkg/PLIST  17 Nov 2022 06:44:30 -0000      1.11
+++ devel/libdvdread/pkg/PLIST  7 Nov 2026 05:21:00 -0000
@@ -1,5 +1,7 @@
 include/dvdread/
+include/dvdread/attributes.h
 include/dvdread/bitreader.h
+include/dvdread/dvd_filesystem.h
 include/dvdread/dvd_reader.h
 include/dvdread/dvd_udf.h
 include/dvdread/ifo_print.h
@@ -10,13 +12,10 @@ include/dvdread/nav_read.h
 include/dvdread/nav_types.h
 include/dvdread/version.h
 @static-lib lib/libdvdread.a
-lib/libdvdread.la
 @lib lib/libdvdread.so.${LIBdvdread_VERSION}
 lib/pkgconfig/dvdread.pc
 share/doc/libdvdread/
 share/doc/libdvdread/AUTHORS
 share/doc/libdvdread/COPYING
-share/doc/libdvdread/ChangeLog
 share/doc/libdvdread/NEWS
 share/doc/libdvdread/README.md
-share/doc/libdvdread/TODO

Reply via email to