[libdvdnav-devel] [Git][videolan/libdvdread][master] 2 commits: ci: Update macOS runner

Jean-Baptiste Kempf (@jbk) gitlab at videolan.org
Wed Apr 16 11:49:13 UTC 2025



Jean-Baptiste Kempf pushed to branch master at VideoLAN / libdvdread


Commits:
2f3d518f by robxnano at 2025-04-12T20:32:00+01:00
ci: Update macOS runner

- - - - -
3e209ec0 by robxnano at 2025-04-15T16:46:59+01:00
Add symbol visibility attributes

- - - - -


14 changed files:

- .gitlab-ci.yml
- Makefile.am
- configure.ac
- + src/dvdread/attributes.h
- src/dvdread/bitreader.h
- src/dvdread/dvd_reader.h
- src/dvdread/dvd_udf.h
- src/dvdread/ifo_print.h
- src/dvdread/ifo_read.h
- src/dvdread/ifo_types.h
- src/dvdread/nav_print.h
- src/dvdread/nav_read.h
- src/dvdread/nav_types.h
- src/logger.h


Changes:

=====================================
.gitlab-ci.yml
=====================================
@@ -20,8 +20,8 @@ build-debian:
 build-macos:
     stage: build
     tags:
-        - mojave
         - amd64
+        - macos
     script:
         - autoreconf -fisv
         - mkdir build


=====================================
Makefile.am
=====================================
@@ -36,11 +36,11 @@ libdvdread_la_SOURCES = \
 
 libdvdread_la_LIBADD = $(CSS_LIBS)
 
-libdvdread_la_LDFLAGS = -version-info $(DVDREAD_LTVERSION) \
-	-export-symbols-regex "(^dvdread.*|^nav.*|^ifo.*|^DVD.*|^UDF.*)"
+libdvdread_la_LDFLAGS = -version-info $(DVDREAD_LTVERSION)
 
 pkgincludedir = $(includedir)/dvdread
 pkginclude_HEADERS = \
+	src/dvdread/attributes.h \
 	src/dvdread/bitreader.h \
 	src/dvdread/dvd_reader.h \
 	src/dvdread/dvd_udf.h \


=====================================
configure.ac
=====================================
@@ -96,6 +96,9 @@ AC_SUBST([CSS_REQUIRES])
 
 CC_CHECK_CFLAGS_APPEND([-Wall -Wsign-compare -Wextra])
 
+dnl Symbol visibility
+CC_CHECK_CFLAGS_APPEND([-fvisibility=hidden])
+CPPFLAGS="${CPPFLAGS} -DDVDREAD_API_EXPORT"
 
 AC_ARG_ENABLE([apidoc],
   AS_HELP_STRING([--disable-apidoc], [Disable building (with Doxygen) and installing API documentation @<:@default=auto@:@>]))


=====================================
src/dvdread/attributes.h
=====================================
@@ -0,0 +1,33 @@
+/*
+ * This file is part of libdvdread
+ * Copyright (C) 2010-2025 hpi1 and VideoLAN
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library. If not, see
+ * <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef LIBDVDREAD_ATTRIBUTES_H
+#define LIBDVDREAD_ATTRIBUTES_H
+
+#ifdef DVDREAD_API_EXPORT
+#  if defined(_WIN32)
+#    define DVDREAD_API  __declspec(dllexport)
+#  elif defined(__GNUC__) && __GNUC__ >= 4
+#    define DVDREAD_API  __attribute__((visibility("default")))
+#  endif
+#else
+#  define DVDREAD_API
+#endif
+
+#endif /* LIBDVDREAD_ATTRIBUTES_H */


=====================================
src/dvdread/bitreader.h
=====================================
@@ -25,14 +25,16 @@
 extern "C" {
 #endif
 
+#include <dvdread/attributes.h>
+
 typedef struct {
   const uint8_t *start;
   uint32_t byte_position;
   uint32_t bit_position;
 } getbits_state_t;
 
-int dvdread_getbits_init(getbits_state_t *state, const uint8_t *start);
-uint32_t dvdread_getbits(getbits_state_t *state, uint32_t number_of_bits);
+DVDREAD_API int dvdread_getbits_init(getbits_state_t *state, const uint8_t *start);
+DVDREAD_API uint32_t dvdread_getbits(getbits_state_t *state, uint32_t number_of_bits);
 
 #ifdef __cplusplus
 };


=====================================
src/dvdread/dvd_reader.h
=====================================
@@ -34,6 +34,8 @@
 #include <inttypes.h>
 #include <stdarg.h>
 
+#include <dvdread/attributes.h>
+
 /**
  * The DVD access interface.
  *
@@ -136,8 +138,8 @@ typedef struct {
  * dvd = DVDOpen(path);
  * dvd = DVDOpenStream(stream, &stream_cb);
  */
-dvd_reader_t *DVDOpen( const char * );
-dvd_reader_t *DVDOpenStream( void *, dvd_reader_stream_cb * );
+DVDREAD_API dvd_reader_t *DVDOpen( const char * );
+DVDREAD_API dvd_reader_t *DVDOpenStream( void *, dvd_reader_stream_cb * );
 
 /**
  * Same as DVDOpen, but with private handle to be passed back on callbacks
@@ -151,8 +153,8 @@ dvd_reader_t *DVDOpenStream( void *, dvd_reader_stream_cb * );
  * dvd = DVDOpen2(priv, logcb, path);
  * dvd = DVDOpenStream2(priv, logcb, &stream_cb);
  */
-dvd_reader_t *DVDOpen2( void *, const dvd_logger_cb *, const char * );
-dvd_reader_t *DVDOpenStream2( void *, const dvd_logger_cb *, dvd_reader_stream_cb * );
+DVDREAD_API dvd_reader_t *DVDOpen2( void *, const dvd_logger_cb *, const char * );
+DVDREAD_API dvd_reader_t *DVDOpenStream2( void *, const dvd_logger_cb *, dvd_reader_stream_cb * );
 
 /**
  * Closes and cleans up the DVD reader object.
@@ -163,7 +165,7 @@ dvd_reader_t *DVDOpenStream2( void *, const dvd_logger_cb *, dvd_reader_stream_c
  *
  * DVDClose(dvd);
  */
-void DVDClose( dvd_reader_t * );
+DVDREAD_API void DVDClose( dvd_reader_t * );
 
 /**
  *
@@ -202,7 +204,7 @@ typedef enum {
  *
  * int DVDFileStat(dvd, titlenum, domain, stat);
  */
-int DVDFileStat(dvd_reader_t *, int, dvd_read_domain_t, dvd_stat_t *);
+DVDREAD_API int DVDFileStat(dvd_reader_t *, int, dvd_read_domain_t, dvd_stat_t *);
 
 /**
  * Opens a file on the DVD given the title number and domain.
@@ -217,7 +219,7 @@ int DVDFileStat(dvd_reader_t *, int, dvd_read_domain_t, dvd_stat_t *);
  * @return If successful a a file read handle is returned, otherwise 0.
  *
  * dvd_file = DVDOpenFile(dvd, titlenum, domain); */
-dvd_file_t *DVDOpenFile( dvd_reader_t *, int, dvd_read_domain_t );
+DVDREAD_API dvd_file_t *DVDOpenFile( dvd_reader_t *, int, dvd_read_domain_t );
 
 /**
  * Closes a file and frees the associated structure.
@@ -226,7 +228,7 @@ dvd_file_t *DVDOpenFile( dvd_reader_t *, int, dvd_read_domain_t );
  *
  * DVDCloseFile(dvd_file);
  */
-void DVDCloseFile( dvd_file_t * );
+DVDREAD_API void DVDCloseFile( dvd_file_t * );
 
 /**
  * Reads block_count number of blocks from the file at the given block offset.
@@ -243,7 +245,7 @@ void DVDCloseFile( dvd_file_t * );
  *
  * blocks_read = DVDReadBlocks(dvd_file, offset, block_count, data);
  */
-ssize_t DVDReadBlocks( dvd_file_t *, int, size_t, unsigned char * );
+DVDREAD_API ssize_t DVDReadBlocks( dvd_file_t *, int, size_t, unsigned char * );
 
 /**
  * Seek to the given position in the file.  Returns the resulting position in
@@ -257,7 +259,7 @@ ssize_t DVDReadBlocks( dvd_file_t *, int, size_t, unsigned char * );
  *
  * offset_set = DVDFileSeek(dvd_file, seek_offset);
  */
-int32_t DVDFileSeek( dvd_file_t *, int32_t );
+DVDREAD_API int32_t DVDFileSeek( dvd_file_t *, int32_t );
 
 /**
  * Reads the given number of bytes from the file.  This call can only be used
@@ -271,7 +273,7 @@ int32_t DVDFileSeek( dvd_file_t *, int32_t );
  *
  * bytes_read = DVDReadBytes(dvd_file, data, bytes);
  */
-ssize_t DVDReadBytes( dvd_file_t *, void *, size_t );
+DVDREAD_API ssize_t DVDReadBytes( dvd_file_t *, void *, size_t );
 
 /**
  * Returns the file size in blocks.
@@ -281,7 +283,7 @@ ssize_t DVDReadBytes( dvd_file_t *, void *, size_t );
  *
  * blocks = DVDFileSize(dvd_file);
  */
-ssize_t DVDFileSize( dvd_file_t * );
+DVDREAD_API ssize_t DVDFileSize( dvd_file_t * );
 
 /**
  * Get a unique 128 bit disc ID.
@@ -296,7 +298,7 @@ ssize_t DVDFileSize( dvd_file_t * );
  *               have room for 128 bits (16 chars).
  * @return 0 on success, -1 on error.
  */
-int DVDDiscID( dvd_reader_t *, unsigned char * );
+DVDREAD_API int DVDDiscID( dvd_reader_t *, unsigned char * );
 
 /**
  * Get the UDF VolumeIdentifier and VolumeSetIdentifier
@@ -316,10 +318,10 @@ int DVDDiscID( dvd_reader_t *, unsigned char * );
  * @param volsetid_size At most volsetid_size bytes will be copied to volsetid.
  * @return 0 on success, -1 on error.
  */
-int DVDUDFVolumeInfo( dvd_reader_t *, char *, unsigned int,
+DVDREAD_API int DVDUDFVolumeInfo( dvd_reader_t *, char *, unsigned int,
                       unsigned char *, unsigned int );
 
-int DVDFileSeekForce( dvd_file_t *, int offset, int force_size);
+DVDREAD_API int DVDFileSeekForce( dvd_file_t *, int offset, int force_size);
 
 /**
  * Get the ISO9660 VolumeIdentifier and VolumeSetIdentifier
@@ -342,7 +344,7 @@ int DVDFileSeekForce( dvd_file_t *, int offset, int force_size);
  * @param volsetid_size At most volsetid_size bytes will be copied to volsetid.
  * @return 0 on success, -1 on error.
  */
-int DVDISOVolumeInfo( dvd_reader_t *, char *, unsigned int,
+DVDREAD_API int DVDISOVolumeInfo( dvd_reader_t *, char *, unsigned int,
                       unsigned char *, unsigned int );
 
 /**
@@ -357,7 +359,7 @@ int DVDISOVolumeInfo( dvd_reader_t *, char *, unsigned int,
  *
  * @return The level of caching.
  */
-int DVDUDFCacheLevel( dvd_reader_t *, int );
+DVDREAD_API int DVDUDFCacheLevel( dvd_reader_t *, int );
 
 #ifdef __cplusplus
 };


=====================================
src/dvdread/dvd_udf.h
=====================================
@@ -33,7 +33,8 @@
 
 #include <inttypes.h>
 
-#include "dvdread/dvd_reader.h"
+#include <dvdread/attributes.h>
+#include <dvdread/dvd_reader.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -46,11 +47,11 @@ extern "C" {
  * '/VIDEO_TS/VTS_01_1.IFO'.  On success, filesize will be set to the size of
  * the file in bytes.
  */
-uint32_t UDFFindFile( dvd_reader_t *, const char *filename, uint32_t *size );
+DVDREAD_API uint32_t UDFFindFile( dvd_reader_t *, const char *filename, uint32_t *size );
 
-int UDFGetVolumeIdentifier(dvd_reader_t *,
+DVDREAD_API int UDFGetVolumeIdentifier(dvd_reader_t *,
                            char *volid, unsigned int volid_size);
-int UDFGetVolumeSetIdentifier(dvd_reader_t *,
+DVDREAD_API int UDFGetVolumeSetIdentifier(dvd_reader_t *,
                               uint8_t *volsetid, unsigned int volsetid_size);
 
 #ifdef __cplusplus


=====================================
src/dvdread/ifo_print.h
=====================================
@@ -20,9 +20,11 @@
 #define LIBDVDREAD_IFO_PRINT_H
 
 #include <inttypes.h>
-#include "ifo_types.h"
 
-void ifo_print(dvd_reader_t *dvd, int title);
-void dvdread_print_time(dvd_time_t *dtime);
+#include <dvdread/attributes.h>
+#include <dvdread/ifo_types.h>
+
+DVDREAD_API void ifo_print(dvd_reader_t *dvd, int title);
+DVDREAD_API void dvdread_print_time(dvd_time_t *dtime);
 
 #endif /* LIBDVDREAD_IFO_PRINT_H */


=====================================
src/dvdread/ifo_read.h
=====================================
@@ -22,8 +22,9 @@
 #ifndef LIBDVDREAD_IFO_READ_H
 #define LIBDVDREAD_IFO_READ_H
 
-#include "ifo_types.h"
-#include "dvdread/dvd_reader.h"
+#include <dvdread/ifo_types.h>
+#include <dvdread/attributes.h>
+#include <dvdread/dvd_reader.h>
 
 #ifdef __cplusplus
 extern "C" {
@@ -36,7 +37,7 @@ extern "C" {
  * given title.  If title 0 is given, the video manager IFO file is read.
  * Returns a handle to a completely parsed structure.
  */
-ifo_handle_t *ifoOpen(dvd_reader_t *, int );
+DVDREAD_API ifo_handle_t *ifoOpen(dvd_reader_t *, int );
 
 /**
  * handle = ifoOpenVMGI(dvd);
@@ -45,7 +46,7 @@ ifo_handle_t *ifoOpen(dvd_reader_t *, int );
  * together with the calls below to read in each segment of the IFO file on
  * demand.
  */
-ifo_handle_t *ifoOpenVMGI(dvd_reader_t *);
+DVDREAD_API ifo_handle_t *ifoOpenVMGI(dvd_reader_t *);
 
 /**
  * handle = ifoOpenVTSI(dvd, title);
@@ -54,14 +55,14 @@ ifo_handle_t *ifoOpenVMGI(dvd_reader_t *);
  * together with the calls below to read in each segment of the IFO file on
  * demand.
  */
-ifo_handle_t *ifoOpenVTSI(dvd_reader_t *, int);
+DVDREAD_API ifo_handle_t *ifoOpenVTSI(dvd_reader_t *, int);
 
 /**
  * ifoClose(ifofile);
  * Cleans up the IFO information.  This will free all data allocated for the
  * substructures.
  */
-void ifoClose(ifo_handle_t *);
+DVDREAD_API void ifoClose(ifo_handle_t *);
 
 /**
  * The following functions are for reading only part of the VMGI/VTSI files.
@@ -76,7 +77,7 @@ void ifoClose(ifo_handle_t *);
  * located in the video manager information file.  This fills the
  * ifofile->ptl_mait structure and all its substructures.
  */
-int ifoRead_PTL_MAIT(ifo_handle_t *);
+DVDREAD_API int ifoRead_PTL_MAIT(ifo_handle_t *);
 
 /**
  * okay = ifoRead_VTS_ATRT(ifofile);
@@ -86,7 +87,7 @@ int ifoRead_PTL_MAIT(ifo_handle_t *);
  * video manager information file.  This fills in the ifofile->vts_atrt
  * structure and all its substructures.
  */
-int ifoRead_VTS_ATRT(ifo_handle_t *);
+DVDREAD_API int ifoRead_VTS_ATRT(ifo_handle_t *);
 
 /**
  * okay = ifoRead_TT_SRPT(ifofile);
@@ -95,7 +96,7 @@ int ifoRead_VTS_ATRT(ifo_handle_t *);
  * structure and its substructures.  This data is only located in the video
  * manager information file.  This structure is mandatory in the IFO file.
  */
-int ifoRead_TT_SRPT(ifo_handle_t *);
+DVDREAD_API int ifoRead_TT_SRPT(ifo_handle_t *);
 
 /**
  * okay = ifoRead_VTS_PTT_SRPT(ifofile);
@@ -105,7 +106,7 @@ int ifoRead_TT_SRPT(ifo_handle_t *);
  * located in the video title set information file.  This structure is
  * mandatory, and must be included in the VTSI file.
  */
-int ifoRead_VTS_PTT_SRPT(ifo_handle_t *);
+DVDREAD_API int ifoRead_VTS_PTT_SRPT(ifo_handle_t *);
 
 /**
  * okay = ifoRead_FP_PGC(ifofile);
@@ -114,7 +115,7 @@ int ifoRead_VTS_PTT_SRPT(ifo_handle_t *);
  * ifofile->first_play_pgc structure.  This data is only located in the video
  * manager information file (VMGI).  This structure is optional.
  */
-int ifoRead_FP_PGC(ifo_handle_t *);
+DVDREAD_API int ifoRead_FP_PGC(ifo_handle_t *);
 
 /**
  * okay = ifoRead_PGCIT(ifofile);
@@ -125,7 +126,7 @@ int ifoRead_FP_PGC(ifo_handle_t *);
  * the video title set information file.  This structure is mandatory, and must
  * be included in the VTSI file.
  */
-int ifoRead_PGCIT(ifo_handle_t *);
+DVDREAD_API int ifoRead_PGCIT(ifo_handle_t *);
 
 /**
  * okay = ifoRead_PGCI_UT(ifofile);
@@ -137,7 +138,7 @@ int ifoRead_PGCIT(ifo_handle_t *);
  * fills the ifofile->vmgi_pgci_ut structure and all its substructures.  For
  * VTSI files, this fills the ifofile->vtsm_pgci_ut structure.
  */
-int ifoRead_PGCI_UT(ifo_handle_t *);
+DVDREAD_API int ifoRead_PGCI_UT(ifo_handle_t *);
 
 /**
  * okay = ifoRead_VTS_TMAPT(ifofile);
@@ -147,7 +148,7 @@ int ifoRead_PGCI_UT(ifo_handle_t *);
  * and all its substructures.  When present enables VOBU level time-based
  * seeking for One_Sequential_PGC_Titles.
  */
-int ifoRead_VTS_TMAPT(ifo_handle_t *);
+DVDREAD_API int ifoRead_VTS_TMAPT(ifo_handle_t *);
 
 /**
  * okay = ifoRead_C_ADT(ifofile);
@@ -159,7 +160,7 @@ int ifoRead_VTS_TMAPT(ifo_handle_t *);
  * fills the ifofile->vmgm_c_adt structure and all its substructures.  For VTSI
  * files, this fills the ifofile->vtsm_c_adt structure.
  */
-int ifoRead_C_ADT(ifo_handle_t *);
+DVDREAD_API int ifoRead_C_ADT(ifo_handle_t *);
 
 /**
  * okay = ifoRead_TITLE_C_ADT(ifofile);
@@ -169,7 +170,7 @@ int ifoRead_C_ADT(ifo_handle_t *);
  * file.  This structure is mandatory, and must be included in the VTSI file.
  * This call fills the ifofile->vts_c_adt structure and its substructures.
  */
-int ifoRead_TITLE_C_ADT(ifo_handle_t *);
+DVDREAD_API int ifoRead_TITLE_C_ADT(ifo_handle_t *);
 
 /**
  * okay = ifoRead_VOBU_ADMAP(ifofile);
@@ -181,7 +182,7 @@ int ifoRead_TITLE_C_ADT(ifo_handle_t *);
  * fills the ifofile->vmgm_vobu_admap structure and all its substructures.  For
  * VTSI files, this fills the ifofile->vtsm_vobu_admap structure.
  */
-int ifoRead_VOBU_ADMAP(ifo_handle_t *);
+DVDREAD_API int ifoRead_VOBU_ADMAP(ifo_handle_t *);
 
 /**
  * okay = ifoRead_TITLE_VOBU_ADMAP(ifofile);
@@ -191,7 +192,7 @@ int ifoRead_VOBU_ADMAP(ifo_handle_t *);
  * mandatory, and must be included in the VTSI file.  Fills the
  * ifofile->vts_vobu_admap structure and its substructures.
  */
-int ifoRead_TITLE_VOBU_ADMAP(ifo_handle_t *);
+DVDREAD_API int ifoRead_TITLE_VOBU_ADMAP(ifo_handle_t *);
 
 /**
  * okay = ifoRead_TXTDT_MGI(ifofile);
@@ -201,7 +202,7 @@ int ifoRead_TITLE_VOBU_ADMAP(ifo_handle_t *);
  * manager information file.  This structure is mandatory, and must be included
  * in the VMGI file.
  */
-int ifoRead_TXTDT_MGI(ifo_handle_t *);
+DVDREAD_API int ifoRead_TXTDT_MGI(ifo_handle_t *);
 
 /**
  * The following functions are used for freeing parsed sections of the
@@ -209,19 +210,19 @@ int ifoRead_TXTDT_MGI(ifo_handle_t *);
  * below are safe:  they will not mind if you attempt to free part of an IFO
  * file which was not read in or which does not exist.
  */
-void ifoFree_PTL_MAIT(ifo_handle_t *);
-void ifoFree_VTS_ATRT(ifo_handle_t *);
-void ifoFree_TT_SRPT(ifo_handle_t *);
-void ifoFree_VTS_PTT_SRPT(ifo_handle_t *);
-void ifoFree_FP_PGC(ifo_handle_t *);
-void ifoFree_PGCIT(ifo_handle_t *);
-void ifoFree_PGCI_UT(ifo_handle_t *);
-void ifoFree_VTS_TMAPT(ifo_handle_t *);
-void ifoFree_C_ADT(ifo_handle_t *);
-void ifoFree_TITLE_C_ADT(ifo_handle_t *);
-void ifoFree_VOBU_ADMAP(ifo_handle_t *);
-void ifoFree_TITLE_VOBU_ADMAP(ifo_handle_t *);
-void ifoFree_TXTDT_MGI(ifo_handle_t *);
+DVDREAD_API void ifoFree_PTL_MAIT(ifo_handle_t *);
+DVDREAD_API void ifoFree_VTS_ATRT(ifo_handle_t *);
+DVDREAD_API void ifoFree_TT_SRPT(ifo_handle_t *);
+DVDREAD_API void ifoFree_VTS_PTT_SRPT(ifo_handle_t *);
+DVDREAD_API void ifoFree_FP_PGC(ifo_handle_t *);
+DVDREAD_API void ifoFree_PGCIT(ifo_handle_t *);
+DVDREAD_API void ifoFree_PGCI_UT(ifo_handle_t *);
+DVDREAD_API void ifoFree_VTS_TMAPT(ifo_handle_t *);
+DVDREAD_API void ifoFree_C_ADT(ifo_handle_t *);
+DVDREAD_API void ifoFree_TITLE_C_ADT(ifo_handle_t *);
+DVDREAD_API void ifoFree_VOBU_ADMAP(ifo_handle_t *);
+DVDREAD_API void ifoFree_TITLE_VOBU_ADMAP(ifo_handle_t *);
+DVDREAD_API void ifoFree_TXTDT_MGI(ifo_handle_t *);
 
 #ifdef __cplusplus
 };


=====================================
src/dvdread/ifo_types.h
=====================================
@@ -23,7 +23,8 @@
 #define LIBDVDREAD_IFO_TYPES_H
 
 #include <inttypes.h>
-#include "dvdread/dvd_reader.h"
+
+#include <dvdread/dvd_reader.h>
 
 
 #undef ATTRIBUTE_PACKED


=====================================
src/dvdread/nav_print.h
=====================================
@@ -22,7 +22,9 @@
 #ifndef LIBDVDREAD_NAV_PRINT_H
 #define LIBDVDREAD_NAV_PRINT_H
 
-#include "nav_types.h"
+
+#include <dvdread/attributes.h>
+#include <dvdread/nav_types.h>
 
 /**
  * Pretty printing of the NAV packets, PCI and DSI structs.
@@ -37,14 +39,14 @@ extern "C" {
  *
  * @param pci Pointer to the PCI data structure to be printed.
  */
-void navPrint_PCI(pci_t *);
+DVDREAD_API void navPrint_PCI(pci_t *);
 
 /**
  * Prints information contained in the DSI to stdout.
  *
  * @param dsi Pointer to the DSI data structure to be printed.
  */
-void navPrint_DSI(dsi_t *);
+DVDREAD_API void navPrint_DSI(dsi_t *);
 
 #ifdef __cplusplus
 };


=====================================
src/dvdread/nav_read.h
=====================================
@@ -21,7 +21,8 @@
 #ifndef LIBDVDREAD_NAV_READ_H
 #define LIBDVDREAD_NAV_READ_H
 
-#include "nav_types.h"
+#include <dvdread/attributes.h>
+#include <dvdread/nav_types.h>
 
 /**
  * Parsing of NAV data, PCI and DSI parts.
@@ -37,7 +38,7 @@ extern "C" {
  * @param pci Pointer to the PCI data structure to be filled in.
  * @param buffer Pointer to the buffer of the on disc PCI data.
  */
-void navRead_PCI(pci_t *, unsigned char *);
+DVDREAD_API void navRead_PCI(pci_t *, unsigned char *);
 
 /**
  * Reads the DSI packet data pointed to into dsi struct.
@@ -45,7 +46,7 @@ void navRead_PCI(pci_t *, unsigned char *);
  * @param dsi Pointer to the DSI data structure to be filled in.
  * @param buffer Pointer to the buffer of the on disc DSI data.
  */
-void navRead_DSI(dsi_t *, unsigned char *);
+DVDREAD_API void navRead_DSI(dsi_t *, unsigned char *);
 
 #ifdef __cplusplus
 };


=====================================
src/dvdread/nav_types.h
=====================================
@@ -29,7 +29,9 @@
 #define LIBDVDREAD_NAV_TYPES_H
 
 #include <inttypes.h>
-#include "ifo_types.h" /* only dvd_time_t, vm_cmd_t and user_ops_t */
+
+#include <dvdread/attributes.h>
+#include <dvdread/ifo_types.h> /* only dvd_time_t, vm_cmd_t and user_ops_t */
 
 /* The length including the substream id byte. */
 #define PCI_BYTES 0x3d4


=====================================
src/logger.h
=====================================
@@ -19,7 +19,9 @@
 #ifndef LIBDVDREAD_LOGGER_H
 #define LIBDVDREAD_LOGGER_H
 
-void DVDReadLog( void *priv, const dvd_logger_cb *logcb,
+#include "dvdread/attributes.h"
+
+DVDREAD_API void DVDReadLog( void *priv, const dvd_logger_cb *logcb,
                  dvd_logger_level_t level, const char *fmt, ... );
 
 #define LOG(ctx, level, ...) \



View it on GitLab: https://code.videolan.org/videolan/libdvdread/-/compare/ba2227bb8619724c2bfadcc4d8f25d741a3398ac...3e209ec010327b6efc6a167689e47a6f8f84b399

-- 
View it on GitLab: https://code.videolan.org/videolan/libdvdread/-/compare/ba2227bb8619724c2bfadcc4d8f25d741a3398ac...3e209ec010327b6efc6a167689e47a6f8f84b399
You're receiving this email because of your account on code.videolan.org.


VideoLAN code repository instance


More information about the libdvdnav-devel mailing list