diff --git a/ports/ffmpeg/vcpkg.json b/ports/ffmpeg/vcpkg.json index 4a32b7c8c1f280..e40fcc0177dffa 100644 --- a/ports/ffmpeg/vcpkg.json +++ b/ports/ffmpeg/vcpkg.json @@ -1,7 +1,7 @@ { "name": "ffmpeg", "version": "7.0.2", - "port-version": 5, + "port-version": 6, "description": [ "a library to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created.", "FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation. It is also highly portable: FFmpeg compiles, runs, and passes our testing infrastructure FATE across Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris, etc. under a wide variety of build environments, machine architectures, and configurations." @@ -355,6 +355,20 @@ "harfbuzz" ] }, + "dvdvideo": { + "description": "DVD-Video demuxer", + "dependencies": [ + { + "name": "ffmpeg", + "default-features": false, + "features": [ + "gpl" + ] + }, + "libdvdnav", + "libdvdread" + ] + }, "fdk-aac": { "description": "AAC de/encoding via libfdk-aac, **including GPL-incompatible patent-encumbered HE-AAC**. If you do not require HE-AAC, use the built-in FFmpeg AAC codec.", "dependencies": [ diff --git a/ports/libdvdnav/msvc.diff b/ports/libdvdnav/msvc.diff new file mode 100644 index 00000000000000..314871a53269a8 --- /dev/null +++ b/ports/libdvdnav/msvc.diff @@ -0,0 +1,73 @@ +diff --git a/msvc/config.h b/msvc/config.h +index 25f68fb..c3f00f1 100644 +--- a/msvc/config.h ++++ b/msvc/config.h +@@ -28,7 +28,8 @@ + #define inline __inline + /* #undef size_t */ + +-#define ssize_t __int64 ++#include ++typedef SSIZE_T ssize_t; + + #ifndef PATH_MAX + #define PATH_MAX MAX_PATH +@@ -43,14 +44,6 @@ + #define S_ISCHR(m) 0 + + /* Fallback types (very x86-centric, sorry) */ +-typedef unsigned char uint8_t; +-typedef signed char int8_t; +-typedef unsigned short uint16_t; +-typedef signed short int16_t; +-typedef unsigned int uint32_t; +-typedef signed int int32_t; +-typedef unsigned __int64 uint64_t; +-typedef signed __int64 int64_t; +-typedef unsigned int uintptr_t; ++#include + + #endif /* LIBDVNAV_CONFIG_H */ +diff --git a/msvc/include/sys/time.h b/msvc/include/sys/time.h +index 843e252..8014739 100644 +--- a/msvc/include/sys/time.h ++++ b/msvc/include/sys/time.h +@@ -26,3 +26,4 @@ + */ + + #include ++#include +diff --git a/src/dvdnav_internal.h b/src/dvdnav_internal.h +index 495f032..a0aaeaf 100644 +--- a/src/dvdnav_internal.h ++++ b/src/dvdnav_internal.h +@@ -39,6 +39,7 @@ typedef CRITICAL_SECTION pthread_mutex_t; + #ifndef HAVE_GETTIMEOFDAY + /* replacement gettimeofday implementation */ + #include ++#include + static inline int _private_gettimeofday( struct timeval *tv, void *tz ) + { + struct timeb t; +@@ -232,7 +233,7 @@ int64_t dvdnav_convert_time(dvd_time_t *time); + #define printerrf(format, args...) \ + do { if (this) snprintf(this->err_str, MAX_ERR_LEN, format, ## args); } while (0) + #else +-#ifdef _MSC_VER ++#if 0 + #define printerrf(str) \ + do { if (this) snprintf(this->err_str, MAX_ERR_LEN, str); } while (0) + #else +diff --git a/src/read_cache.c b/src/read_cache.c +index 1b2862d..abc786a 100644 +--- a/src/read_cache.c ++++ b/src/read_cache.c +@@ -87,7 +87,7 @@ struct read_cache_s { + # if READ_CACHE_TRACE + # define dprintf(fmt, ...) fprintf(MSG_OUT, "libdvdnav: %s: "fmt, __func__ , __VA_ARGS__) + # else +-#ifdef _MSC_VER ++#if 0 + # define dprintf(fmt, str) /* Nowt */ + #else + # define dprintf(fmt, ...) /* Nowt */ diff --git a/ports/libdvdnav/no-undefined.diff b/ports/libdvdnav/no-undefined.diff new file mode 100644 index 00000000000000..8505c6b6529981 --- /dev/null +++ b/ports/libdvdnav/no-undefined.diff @@ -0,0 +1,12 @@ +diff --git a/configure.ac b/configure.ac +index 595378b..516f26e 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -118,6 +118,7 @@ dnl + dnl This should be after all checks + dnl --------------------------------------------- + AS_CASE([$host_os], ++ [*mingw32*], LDFLAGS="-no-undefined $LDFLAGS", + [os2*], [LDFLAGS="$LDFLAGS -no-undefined"]) + + dnl --------------------------------------------- diff --git a/ports/libdvdnav/portfile.cmake b/ports/libdvdnav/portfile.cmake new file mode 100644 index 00000000000000..be7a8961a3a7c6 --- /dev/null +++ b/ports/libdvdnav/portfile.cmake @@ -0,0 +1,43 @@ +vcpkg_from_gitlab( + OUT_SOURCE_PATH SOURCE_PATH + GITLAB_URL https://code.videolan.org/ + REPO videolan/libdvdnav + REF ${VERSION} + SHA512 080814c30f193176393bf6d4496a1e815b3b288cd102201ba177a13a46f733e1e0b5e05d6ca169e902c669d6f3567926c97e5a20a6712ed5620dcb10c3c3a022 + HEAD_REF master + PATCHES + msvc.diff + no-undefined.diff +) +file(REMOVE_RECURSE "${SOURCE_PATH}/msvc/include/inttypes.h") + +vcpkg_find_acquire_program(PKGCONFIG) +cmake_path(GET PKGCONFIG PARENT_PATH pkgconfig_dir) +vcpkg_add_to_path("${pkgconfig_dir}") + +set(cppflags "") +if(VCPKG_TARGET_IS_WINDOWS) + # PATH_MAX from msvc/libdvdcss.vcxproj + set(cppflags "CPPFLAGS=\$CPPFLAGS -DPATH_MAX=2048 -DWIN32_LEAN_AND_MEAN") + if(NOT VCPKG_TARGET_IS_MINGW) + cmake_path(RELATIVE_PATH SOURCE_PATH BASE_DIRECTORY "${CURRENT_BUILDTREES_DIR}" OUTPUT_VARIABLE sources) + string(APPEND cppflags " -I../${sources}/msvc/include -D_CRT_SECURE_NO_WARNINGS") + endif() +endif() + +vcpkg_configure_make( + SOURCE_PATH "${SOURCE_PATH}" + AUTOCONFIG + OPTIONS + ${cppflags} +) +vcpkg_install_make() +vcpkg_copy_pdbs() +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/share" +) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/ports/libdvdnav/vcpkg.json b/ports/libdvdnav/vcpkg.json new file mode 100644 index 00000000000000..b89bb8398fb92a --- /dev/null +++ b/ports/libdvdnav/vcpkg.json @@ -0,0 +1,11 @@ +{ + "name": "libdvdnav", + "version-semver": "6.1.1", + "description": "Library to navigate DVD disks", + "homepage": "https://www.videolan.org/developers/libdvdnav.html", + "license": "GPL-2.0-or-later", + "supports": "!uwp & !xbox", + "dependencies": [ + "libdvdread" + ] +} diff --git a/ports/libdvdread/msvc.diff b/ports/libdvdread/msvc.diff new file mode 100644 index 00000000000000..566bfe38b9e782 --- /dev/null +++ b/ports/libdvdread/msvc.diff @@ -0,0 +1,55 @@ +diff --git a/msvc/config.h b/msvc/config.h +index 4e9b60e..2f1e615 100644 +--- a/msvc/config.h ++++ b/msvc/config.h +@@ -28,7 +28,6 @@ + #define inline __inline + /* #undef size_t */ + +-#define ssize_t __int64 + + #ifndef PATH_MAX + #define PATH_MAX MAX_PATH +@@ -43,14 +42,6 @@ + #define S_ISCHR(m) 0 + + /* Fallback types (very x86-centric, sorry) */ +-typedef unsigned char uint8_t; +-typedef signed char int8_t; +-typedef unsigned short uint16_t; +-typedef signed short int16_t; +-typedef unsigned int uint32_t; +-typedef signed int int32_t; +-typedef unsigned __int64 uint64_t; +-typedef signed __int64 int64_t; +-typedef unsigned int uintptr_t; ++#include + + #endif /* LIBDVDREAD_CONFIG_H */ +diff --git a/src/dvd_reader.c b/src/dvd_reader.c +index c4d9641..b3b0158 100644 +--- a/src/dvd_reader.c ++++ b/src/dvd_reader.c +@@ -60,6 +60,7 @@ + + #if defined(_WIN32) + # include ++# include + # include "msvc/contrib/win32_cs.h" + #endif + +diff --git a/src/dvdread/dvd_reader.h b/src/dvdread/dvd_reader.h +index 5681e0e..6c1cee6 100644 +--- a/src/dvdread/dvd_reader.h ++++ b/src/dvdread/dvd_reader.h +@@ -24,7 +24,9 @@ + #define LIBDVDREAD_DVD_READER_H + + #ifdef _MSC_VER +-#include ++#include ++typedef SSIZE_T ssize_t; ++#include + + #include + #include diff --git a/ports/libdvdread/no-undefined.diff b/ports/libdvdread/no-undefined.diff new file mode 100644 index 00000000000000..f43db8d469e3b8 --- /dev/null +++ b/ports/libdvdread/no-undefined.diff @@ -0,0 +1,12 @@ +diff --git a/configure.ac b/configure.ac +index a60ef0c..eeb6715 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -63,6 +63,7 @@ AS_CASE([$host], + [*mingw32* | *cygwin*], [AC_CHECK_FUNCS(gettimeofday)]) + + AS_CASE([$host], ++ [*mingw32*], LDFLAGS="-no-undefined $LDFLAGS", + [*-os2-*], LDFLAGS="-no-undefined -Zbin-files $LDFLAGS") + + AS_CASE([$host], diff --git a/ports/libdvdread/portfile.cmake b/ports/libdvdread/portfile.cmake new file mode 100644 index 00000000000000..e394c4c47b159f --- /dev/null +++ b/ports/libdvdread/portfile.cmake @@ -0,0 +1,47 @@ +vcpkg_from_gitlab( + OUT_SOURCE_PATH SOURCE_PATH + GITLAB_URL https://code.videolan.org/ + REPO videolan/libdvdread + REF ${VERSION} + SHA512 9eb6d551489ab1d214c56461eebafd6ecba7de8dcc60aecb7e22f82c019fd3d045fc09af66507c2e14bc53e099aec8e87620dfd988fe047a7bfa5e5d1d2c46bd + HEAD_REF master + PATCHES + msvc.diff + no-undefined.diff +) +file(REMOVE_RECURSE "${SOURCE_PATH}/msvc/include/inttypes.h") +file(TOUCH "${SOURCE_PATH}/msvc/include/strings.h") +file(WRITE "${SOURCE_PATH}/ChangeLog" "Cf. https://code.videolan.org/videolan/libdvdread/-/commits/${VERSION}/") # not in git + +vcpkg_find_acquire_program(PKGCONFIG) +cmake_path(GET PKGCONFIG PARENT_PATH pkgconfig_dir) +vcpkg_add_to_path("${pkgconfig_dir}") + +set(cppflags "") +if(VCPKG_TARGET_IS_WINDOWS) + # PATH_MAX from msvc/libdvdcss.vcxproj + set(cppflags "CPPFLAGS=\$CPPFLAGS -DPATH_MAX=2048 -DWIN32_LEAN_AND_MEAN") + if(NOT VCPKG_TARGET_IS_MINGW) + cmake_path(RELATIVE_PATH SOURCE_PATH BASE_DIRECTORY "${CURRENT_BUILDTREES_DIR}" OUTPUT_VARIABLE sources) + string(APPEND cppflags " -I../${sources}/msvc/include -D_CRT_SECURE_NO_WARNINGS") + endif() +endif() + +vcpkg_configure_make( + SOURCE_PATH "${SOURCE_PATH}" + AUTOCONFIG + OPTIONS + --disable-apidoc + --with-libdvdcss + ${cppflags} +) +vcpkg_install_make() +vcpkg_copy_pdbs() +vcpkg_fixup_pkgconfig() + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/share" +) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING") diff --git a/ports/libdvdread/vcpkg.json b/ports/libdvdread/vcpkg.json new file mode 100644 index 00000000000000..d361ae86d03653 --- /dev/null +++ b/ports/libdvdread/vcpkg.json @@ -0,0 +1,11 @@ +{ + "name": "libdvdread", + "version-semver": "6.1.3", + "description": "Library to read DVD disks", + "homepage": "https://www.videolan.org/developers/libdvdnav.html", + "license": "GPL-2.0-or-later", + "supports": "!uwp & !xbox", + "dependencies": [ + "libdvdcss" + ] +} diff --git a/scripts/test_ports/vcpkg-ci-ffmpeg/vcpkg.json b/scripts/test_ports/vcpkg-ci-ffmpeg/vcpkg.json index 39fdddd2ca672d..c85b1f9842876b 100644 --- a/scripts/test_ports/vcpkg-ci-ffmpeg/vcpkg.json +++ b/scripts/test_ports/vcpkg-ci-ffmpeg/vcpkg.json @@ -1,7 +1,6 @@ { "name": "vcpkg-ci-ffmpeg", - "version-string": "1", - "port-version": 3, + "version-string": "ci", "description": "Port to force features of certain ports within CI", "homepage": "https://github.com/microsoft/vcpkg", "dependencies": [ @@ -68,6 +67,7 @@ "default-features": false, "features": [ "ass", + "dvdvideo", "ffmpeg", "fontconfig", "fribidi", diff --git a/versions/baseline.json b/versions/baseline.json index e6d49f1a5acd9a..5738f667023372 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2738,7 +2738,7 @@ }, "ffmpeg": { "baseline": "7.0.2", - "port-version": 5 + "port-version": 6 }, "ffnvcodec": { "baseline": "12.2.72.0", @@ -4440,6 +4440,14 @@ "baseline": "1.4.3", "port-version": 0 }, + "libdvdnav": { + "baseline": "6.1.1", + "port-version": 0 + }, + "libdvdread": { + "baseline": "6.1.3", + "port-version": 0 + }, "libdwarf": { "baseline": "0.11.0", "port-version": 0 diff --git a/versions/f-/ffmpeg.json b/versions/f-/ffmpeg.json index efe1fd13a1e92a..d024aceaad2347 100644 --- a/versions/f-/ffmpeg.json +++ b/versions/f-/ffmpeg.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "a269e8f98d0aabee2671587388602275bd7af837", + "version": "7.0.2", + "port-version": 6 + }, { "git-tree": "d4bc112c6581274674b70429dacd87e5d0715ac4", "version": "7.0.2", diff --git a/versions/l-/libdvdnav.json b/versions/l-/libdvdnav.json new file mode 100644 index 00000000000000..0db93b0daf932c --- /dev/null +++ b/versions/l-/libdvdnav.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "f485b361aac72478f3e46980db33aa01d2be99e4", + "version-semver": "6.1.1", + "port-version": 0 + } + ] +} diff --git a/versions/l-/libdvdread.json b/versions/l-/libdvdread.json new file mode 100644 index 00000000000000..b1edaa26bc8655 --- /dev/null +++ b/versions/l-/libdvdread.json @@ -0,0 +1,9 @@ +{ + "versions": [ + { + "git-tree": "6ffa5a51a9de24eab67fc6f620f05e03f5a21222", + "version-semver": "6.1.3", + "port-version": 0 + } + ] +}