[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