From b04946515ae0863e7be0512f20a514c6ab25f384 Mon Sep 17 00:00:00 2001 From: cjee21 <77721854+cjee21@users.noreply.github.com> Date: Thu, 30 Oct 2025 21:34:41 +0800 Subject: [PATCH 1/2] JXL: Parse Exif and XMP --- Source/MediaInfo/Multiple/File_Mpeg4.h | 5 ++ .../Multiple/File_Mpeg4_Elements.cpp | 83 +++++++++++++++++++ Source/MediaInfo/Tag/File_Exif.cpp | 10 +-- 3 files changed, 93 insertions(+), 5 deletions(-) diff --git a/Source/MediaInfo/Multiple/File_Mpeg4.h b/Source/MediaInfo/Multiple/File_Mpeg4.h index 7fb0702c2e..da2bb87481 100644 --- a/Source/MediaInfo/Multiple/File_Mpeg4.h +++ b/Source/MediaInfo/Multiple/File_Mpeg4.h @@ -76,16 +76,20 @@ private : //Elements void bloc(); + void brob(); void cdat(); + void Exif(); void cdt2() {cdat();} void free(); void ftyp(); + void hrgm(); void idat(); void idsc(); void jp2c(); void jp2h(); void jp2h_colr(); void jp2h_ihdr(); + void JXL_(); void jp2h_ricc() {jp2h_colr(); } void mdat(); void mdat_xxxx(); @@ -416,6 +420,7 @@ private : void skip(); void sidx(); void wide(); + void xml_(); //Helpers Ztring Language_Get(int16u Language); diff --git a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp index b3f5e32ba0..0d74760e19 100644 --- a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp +++ b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp @@ -703,8 +703,10 @@ std::string File_Mpeg4_sv3d_Mesh_index_type(int8u Value) namespace Elements { const int64u bloc=0x626C6F63; + const int64u brob=0x62726F62; const int64u cdat=0x63646174; const int64u cdt2=0x63647432; + const int64u Exif=0x45786966; const int64u free=0x66726565; const int64u ftyp=0x66747970; const int64u ftyp_qt=0x71742020; @@ -715,6 +717,7 @@ namespace Elements const int64u ftyp_dash=0x64617368; const int64u ftyp_isom=0x69736F6D; const int64u ftyp_caqv=0x63617176; + const int64u hrgm=0x6872676D; const int64u idat=0x69646174; const int64u idsc=0x69647363; const int64u jp2c=0x6A703263; @@ -722,6 +725,7 @@ namespace Elements const int64u jp2h_colr=0x636F6C72; const int64u jp2h_ihdr=0x69686472; const int64u jp2h_ricc=0x72696363; + const int64u JXL_=0x4A584C20; const int64u mdat=0x6D646174; const int64u meta=0x6D657461; const int64u meta_grpl=0x6772706C; @@ -1086,6 +1090,7 @@ namespace Elements const int64u skip=0x736B6970; const int64u sidx=0x73696478; const int64u wide=0x77696465; + const int64u xml_=0x786D6C20; } //--------------------------------------------------------------------------- @@ -1124,10 +1129,13 @@ void File_Mpeg4::Data_Parse() //Parsing DATA_BEGIN ATOM(bloc) + ATOM(brob) ATOM(cdat) ATOM(cdt2) + ATOM(Exif) LIST_SKIP(free) ATOM(ftyp) + ATOM(hrgm) ATOM(idat) ATOM(idsc) ATOM(jp2c) @@ -1137,6 +1145,7 @@ void File_Mpeg4::Data_Parse() ATOM(jp2h_ihdr) ATOM(jp2h_ricc) ATOM_END + ATOM(JXL_) LIST(mdat) ATOM_DEFAULT_ALONE(mdat_xxxx) LIST(meta) @@ -1586,6 +1595,7 @@ void File_Mpeg4::Data_Parse() LIST_SKIP(skip) ATOM(sidx) LIST_SKIP(wide) + ATOM(xml_) DATA_END } @@ -1707,6 +1717,18 @@ void File_Mpeg4::bloc() Skip_XX(512, "Reserved"); } +//------------------------------------------------------------------------- +void File_Mpeg4::brob() +{ + Element_Name("Brotli-compressed box"); + + int32u type; + Get_C4(type, "payload box type"); + Element_Info1(Ztring::ToZtring_From_CC4(type)); + + Skip_XX(Element_Size - 4, "compressed data"); +} + //--------------------------------------------------------------------------- void File_Mpeg4::cdat() { @@ -1745,6 +1767,29 @@ void File_Mpeg4::cdat() } } +//--------------------------------------------------------------------------- +void File_Mpeg4::Exif() +{ + Element_Name("Exif box"); + + //Parsing + #if defined(MEDIAINFO_EXIF_YES) + File_Exif MI{}; + MI.FromHeif = true; + Open_Buffer_Init(&MI); + Open_Buffer_Continue(&MI); + Open_Buffer_Finalize(&MI); + Merge(MI, Stream_General, 0, 0, false); + Merge(MI, Stream_Image, 0, 0, false); + size_t Count = MI.Count_Get(Stream_Image); + for (size_t i = 1; i < Count; ++i) { + Merge(MI, Stream_Image, i, StreamPos_Last + 1, false); + } + #else + Skip_UTF8(Element_Size - Element_Offset, "EXIF Tags"); + #endif +} + //--------------------------------------------------------------------------- void File_Mpeg4::free() { @@ -1839,6 +1884,13 @@ void File_Mpeg4::ftyp() FILLING_END(); } +//--------------------------------------------------------------------------- +void File_Mpeg4::hrgm() +{ + Element_Name("HDR Gain Map"); + Skip_XX(Element_Size, "Data"); +} + //--------------------------------------------------------------------------- void File_Mpeg4::idat() { @@ -2006,6 +2058,18 @@ void File_Mpeg4::jp2h_ihdr() FILLING_END() } +//--------------------------------------------------------------------------- +void File_Mpeg4::JXL_() +{ + Element_Name("JPEG XL Signature box"); + int32u signature; + Get_B4(signature, "Signature"); + FILLING_BEGIN_PRECISE() + if (signature == 0x0D0A870A) + Fill(Stream_General, 0, General_Format, "JPEG XL"); + FILLING_END() +} + //--------------------------------------------------------------------------- void File_Mpeg4::mdat() { @@ -11319,6 +11383,25 @@ void File_Mpeg4::wide() Skip_XX(Element_Size, "Free"); } +//--------------------------------------------------------------------------- +void File_Mpeg4::xml_() +{ + Element_Name("XML box"); + + //Parsing + #if defined(MEDIAINFO_XMP_YES) + File_Xmp MI{}; + Open_Buffer_Init(&MI); + auto Element_Offset_Sav = Element_Offset; + Open_Buffer_Continue(&MI); + Element_Offset = Element_Offset_Sav; + Open_Buffer_Finalize(&MI); + Element_Show(); //TODO: why is it needed? + Merge(MI, Stream_General, 0, 0, false); + #endif + Skip_UTF8(Element_Size - Element_Offset, "XMP metadata"); +} + //*************************************************************************** // C++ //*************************************************************************** diff --git a/Source/MediaInfo/Tag/File_Exif.cpp b/Source/MediaInfo/Tag/File_Exif.cpp index 1a6acbf79a..a0c2f660a2 100644 --- a/Source/MediaInfo/Tag/File_Exif.cpp +++ b/Source/MediaInfo/Tag/File_Exif.cpp @@ -1994,15 +1994,15 @@ void File_Exif::FileHeader_Parse() //HEIF if (FromHeif) { - int32u Size; - Get_B4 (Size, "Exif header length"); + int32u exif_tiff_header_offset; + Get_B4 (exif_tiff_header_offset, "exif_tiff_header_offset"); string Identifier; - Get_String(Size, Identifier, "Identifier"); - if (!(Size == 0 || (Size == 6 && !strncmp(Identifier.c_str(), "Exif\0", 6)))) { + Get_String(exif_tiff_header_offset, Identifier, "Identifier"); + if (!(exif_tiff_header_offset == 0 || (exif_tiff_header_offset == 6 && !strncmp(Identifier.c_str(), "Exif\0", 6)))) { Reject(); return; } - OffsetFromContainer = static_cast(4) + Size; + OffsetFromContainer = static_cast(4) + exif_tiff_header_offset; } //Exif Makernotes From 291ae176c0703e2284008f32ace655cd1dce5cbd Mon Sep 17 00:00:00 2001 From: cjee21 <77721854+cjee21@users.noreply.github.com> Date: Fri, 31 Oct 2025 16:12:59 +0800 Subject: [PATCH 2/2] [TEST] Parse Brotli-compressed data --- .github/workflows/MediaInfoLib_Checks.yml | 12 ++++- Project/CMake/CMakeLists.txt | 23 +++++++++- Project/CMake/cmake/modules/FindBrotli.cmake | 22 +++++++++ Project/MSVC2022/Library/MediaInfoLib.vcxproj | 26 ++++++----- Project/MSVC2022/MediaInfoLib.sln | 45 +++++++++++++++++++ Project/MSVC2026/Library/MediaInfoLib.vcxproj | 26 ++++++----- Project/MSVC2026/MediaInfoLib.slnx | 8 ++++ .../Multiple/File_Mpeg4_Elements.cpp | 37 ++++++++++++++- 8 files changed, 176 insertions(+), 23 deletions(-) create mode 100644 Project/CMake/cmake/modules/FindBrotli.cmake diff --git a/.github/workflows/MediaInfoLib_Checks.yml b/.github/workflows/MediaInfoLib_Checks.yml index d03dd1915f..c2b8707dee 100644 --- a/.github/workflows/MediaInfoLib_Checks.yml +++ b/.github/workflows/MediaInfoLib_Checks.yml @@ -58,11 +58,15 @@ jobs: run: | if [ "$RUNNER_OS" == "Linux" ]; then sudo apt-get update -y - sudo apt-get install -y libxml2-utils zlib1g-dev libcurl4-gnutls-dev libmms-dev ${{ matrix.environement == 'cmake-dll' && 'g++-mingw-w64-x86-64' || '' }} + sudo apt-get install -y libbrotli-dev libxml2-utils zlib1g-dev libcurl4-gnutls-dev libmms-dev ${{ matrix.environement == 'cmake-dll' && 'g++-mingw-w64-x86-64' || '' }} fi if [ "$RUNNER_OS" == "macOS" ]; then brew install libtool automake fi + - name: brotli + if: ${{ (runner.os == 'Windows') || matrix.environement == 'cmake-dll' }} + run: | + git -C .. clone --depth=1 https://github.com/MediaArea/brotli.git - name: zlib if: ${{ (runner.os == 'Windows') || matrix.environement == 'cmake-dll' }} run: | @@ -121,6 +125,12 @@ jobs: architecture: [ Win32, x64, ARM64 ] fail-fast: false steps: + - name: Checkout brotli + uses: actions/checkout@v5 + with: + repository: cjee21/brotli #!! TO CHANGE !! + ref: MSVC #!! TO REMOVE !! + path: brotli - name: Checkout zlib uses: actions/checkout@v5 with: diff --git a/Project/CMake/CMakeLists.txt b/Project/CMake/CMakeLists.txt index 8f8b076d1f..fccf2b6d73 100644 --- a/Project/CMake/CMakeLists.txt +++ b/Project/CMake/CMakeLists.txt @@ -16,9 +16,11 @@ endif() set(MediaInfoLib_SOVERSION 0) if (NOT WIN32) + option(BUILD_BROTLI "Build bundled Brotli" OFF) option(BUILD_ZLIB "Build bundled zlib" OFF) option(BUILD_ZENLIB "Build bundled ZenLib" OFF) else() + option(BUILD_BROTLI "Build bundled Brotli" ON) option(BUILD_ZLIB "Build bundled zlib" ON) option(BUILD_ZENLIB "Build bundled ZenLib" ON) endif() @@ -69,6 +71,21 @@ else() set(ZLIB_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../../zlib ${CMAKE_CURRENT_BINARY_DIR}/zlib) endif() +if (NOT BUILD_BROTLI) + find_package(Brotli REQUIRED) +else() + set(_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) + set(BUILD_SHARED_LIBS OFF) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/../../../brotli ${CMAKE_CURRENT_BINARY_DIR}/brotli) + set(BUILD_SHARED_LIBS ${_BUILD_SHARED_LIBS}) + set(BROTLI_LIBRARIES brotlicommon brotlidec) + unset(_BUILD_SHARED_LIBS) + if(UNIX AND BUILD_SHARED_LIBS) + target_compile_options(brotlicommon brotlidec PRIVATE -fPIC) + endif() + set(BROTLI_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../../../brotli ${CMAKE_CURRENT_BINARY_DIR}/brotli) +endif() + if(VCPKG_TARGET_TRIPLET) set(MediaInfoLib_CONFIG_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/share/mediainfolib") elseif(MSVC) @@ -418,7 +435,7 @@ if(BUILD_ZENLIB) target_include_directories(mediainfo PRIVATE ${ZLIB_INCLUDE_DIRS}) endif() -target_link_libraries(mediainfo ${ZenLib_LIBRARY} ${ZLIB_LIBRARIES}) +target_link_libraries(mediainfo ${ZenLib_LIBRARY} ${ZLIB_LIBRARIES} ${BROTLI_LIBRARIES}) if(MSVC AND BUILD_SHARED_LIBS) install(FILES $ DESTINATION ${BIN_INSTALL_DIR} OPTIONAL) @@ -440,6 +457,10 @@ set_target_properties(mediainfo PROPERTIES CXX_STANDARD_REQUIRED YES ) +if (BUILD_BROTLI OR ANDROID) + install(TARGETS brotlicommon brotlidec EXPORT mediainfo-export) +endif() + install(TARGETS mediainfo EXPORT mediainfo-export RUNTIME DESTINATION ${BIN_INSTALL_DIR} ARCHIVE DESTINATION ${LIB_INSTALL_DIR} diff --git a/Project/CMake/cmake/modules/FindBrotli.cmake b/Project/CMake/cmake/modules/FindBrotli.cmake new file mode 100644 index 0000000000..6d2298f5a0 --- /dev/null +++ b/Project/CMake/cmake/modules/FindBrotli.cmake @@ -0,0 +1,22 @@ +# Try to find the Brotli library +# Adapted from https://github.com/curl/curl/blob/master/CMake/FindBrotli.cmake + +find_path(BROTLI_INCLUDE_DIR "brotli/decode.h") +find_library(BROTLICOMMON_LIBRARY NAMES "brotlicommon") +find_library(BROTLIDEC_LIBRARY NAMES "brotlidec") + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(Brotli + REQUIRED_VARS + BROTLI_INCLUDE_DIR + BROTLIDEC_LIBRARY + BROTLICOMMON_LIBRARY +) + +if(BROTLI_FOUND) + set(BROTLI_INCLUDE_DIRS ${BROTLI_INCLUDE_DIR}) + set(BROTLI_LIBRARIES ${BROTLIDEC_LIBRARY} ${BROTLICOMMON_LIBRARY}) + include_directories(${BROTLI_INCLUDE_DIRS}) +endif() + +mark_as_advanced(BROTLI_INCLUDE_DIR BROTLIDEC_LIBRARY BROTLICOMMON_LIBRARY) diff --git a/Project/MSVC2022/Library/MediaInfoLib.vcxproj b/Project/MSVC2022/Library/MediaInfoLib.vcxproj index 376d9a54b3..970b606f2a 100644 --- a/Project/MSVC2022/Library/MediaInfoLib.vcxproj +++ b/Project/MSVC2022/Library/MediaInfoLib.vcxproj @@ -178,7 +178,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL Use @@ -191,7 +191,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL Use @@ -204,7 +204,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL Use @@ -217,7 +217,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL Use @@ -230,7 +230,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true @@ -246,7 +246,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MultiThreadedDLL MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) true @@ -262,7 +262,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MultiThreadedDLL MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) true @@ -277,7 +277,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MultiThreadedDLL MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) true @@ -294,7 +294,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MultiThreadedDLL MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) true @@ -311,7 +311,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDLL true @@ -1002,6 +1002,12 @@ + + {a2c733d0-0511-3374-ab76-169fafc276bc} + + + {abd0c651-f2d8-3560-9313-6df99d388406} + {0da1da7d-f393-4e7c-a7ce-cb5c6a67bc94} diff --git a/Project/MSVC2022/MediaInfoLib.sln b/Project/MSVC2022/MediaInfoLib.sln index 7ad62abf05..252d74c2b4 100644 --- a/Project/MSVC2022/MediaInfoLib.sln +++ b/Project/MSVC2022/MediaInfoLib.sln @@ -27,6 +27,10 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "FieldsDescription", "Fields EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "PreRelease", "PreRelease\PreRelease.vcxproj", "{98740C20-8A19-4190-A29B-7DFA0497F545}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "brotlidec", "..\..\..\brotli\Project\MSVC2022\brotlidec.vcxproj", "{ABD0C651-F2D8-3560-9313-6DF99D388406}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "brotlicommon", "..\..\..\brotli\Project\MSVC2022\brotlicommon.vcxproj", "{A2C733D0-0511-3374-AB76-169FAFC276BC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|ARM = Debug|ARM @@ -217,6 +221,45 @@ Global {98740C20-8A19-4190-A29B-7DFA0497F545}.Release|Win32.Build.0 = Release|Win32 {98740C20-8A19-4190-A29B-7DFA0497F545}.Release|x64.ActiveCfg = Release|x64 {98740C20-8A19-4190-A29B-7DFA0497F545}.Release|x64.Build.0 = Release|x64 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Debug|ARM.ActiveCfg = Debug|x64 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Debug|ARM64.Build.0 = Debug|ARM64 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Debug|ARM64EC.Build.0 = Debug|ARM64EC + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Debug|Win32.ActiveCfg = Debug|Win32 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Debug|Win32.Build.0 = Debug|Win32 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Debug|x64.ActiveCfg = Debug|x64 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Debug|x64.Build.0 = Debug|x64 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Release|ARM.ActiveCfg = Release|x64 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Release|ARM.Build.0 = Release|x64 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Release|ARM64.ActiveCfg = Release|ARM64 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Release|ARM64.Build.0 = Release|ARM64 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Release|ARM64EC.Build.0 = Release|ARM64EC + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Release|Win32.ActiveCfg = Release|Win32 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Release|Win32.Build.0 = Release|Win32 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Release|x64.ActiveCfg = Release|x64 + {ABD0C651-F2D8-3560-9313-6DF99D388406}.Release|x64.Build.0 = Release|x64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Debug|ARM.ActiveCfg = Debug|x64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Debug|ARM.Build.0 = Debug|x64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Debug|ARM64.Build.0 = Debug|ARM64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Debug|ARM64EC.ActiveCfg = Debug|ARM64EC + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Debug|ARM64EC.Build.0 = Debug|ARM64EC + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Debug|Win32.ActiveCfg = Debug|Win32 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Debug|Win32.Build.0 = Debug|Win32 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Debug|x64.ActiveCfg = Debug|x64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Debug|x64.Build.0 = Debug|x64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Release|ARM.ActiveCfg = Release|x64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Release|ARM.Build.0 = Release|x64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Release|ARM64.ActiveCfg = Release|ARM64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Release|ARM64.Build.0 = Release|ARM64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Release|ARM64EC.ActiveCfg = Release|ARM64EC + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Release|ARM64EC.Build.0 = Release|ARM64EC + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Release|Win32.ActiveCfg = Release|Win32 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Release|Win32.Build.0 = Release|Win32 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Release|x64.ActiveCfg = Release|x64 + {A2C733D0-0511-3374-AB76-169FAFC276BC}.Release|x64.Build.0 = Release|x64 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -224,6 +267,8 @@ Global GlobalSection(NestedProjects) = preSolution {0DA1DA7D-F393-4E7C-A7CE-CB5C6A67BC94} = {F696A30D-66C6-46A8-B1BC-04B13BF14290} {745DEC58-EBB3-47A9-A9B8-4C6627C01BF8} = {F696A30D-66C6-46A8-B1BC-04B13BF14290} + {ABD0C651-F2D8-3560-9313-6DF99D388406} = {F696A30D-66C6-46A8-B1BC-04B13BF14290} + {A2C733D0-0511-3374-AB76-169FAFC276BC} = {F696A30D-66C6-46A8-B1BC-04B13BF14290} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {AD381A17-8F9C-4BA4-B2B3-B288F1B9286E} diff --git a/Project/MSVC2026/Library/MediaInfoLib.vcxproj b/Project/MSVC2026/Library/MediaInfoLib.vcxproj index 95696a5226..174beb6654 100644 --- a/Project/MSVC2026/Library/MediaInfoLib.vcxproj +++ b/Project/MSVC2026/Library/MediaInfoLib.vcxproj @@ -178,7 +178,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL Use @@ -191,7 +191,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL Use @@ -204,7 +204,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL Use @@ -217,7 +217,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL Use @@ -230,7 +230,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDebugDLL true @@ -246,7 +246,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MultiThreadedDLL MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) true @@ -262,7 +262,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MultiThreadedDLL MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) true @@ -277,7 +277,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MultiThreadedDLL MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) true @@ -294,7 +294,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MultiThreadedDLL MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) true @@ -311,7 +311,7 @@ - ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;%(AdditionalIncludeDirectories) + ../../../Source;../../../Source/ThirdParty/aes-gladman;../../../Source/ThirdParty/hmac-gladman;../../../Source/ThirdParty/sha1-gladman;../../../Source/ThirdParty/sha2-gladman;../../../Source/ThirdParty/tinyxml2;../../../Source/ThirdParty/md5;../../../Source/ThirdParty/base64;../../../Source/ThirdParty;../../../../ZenLib/Source;../../../../ZLib;../../../../curl/include;../../../../brotli/c/include;%(AdditionalIncludeDirectories) MEDIAINFO_MPEGTS_DUPLICATE_NO;MEDIAINFO_LIBCURL_DLL_RUNTIME;MEDIAINFO_GRAPHVIZ_DLL_RUNTIME;FMT_UNICODE=0;%(PreprocessorDefinitions) MultiThreadedDLL true @@ -1002,6 +1002,12 @@ + + {a2c733d0-0511-3374-ab76-169fafc276bc} + + + {abd0c651-f2d8-3560-9313-6df99d388406} + {0da1da7d-f393-4e7c-a7ce-cb5c6a67bc94} diff --git a/Project/MSVC2026/MediaInfoLib.slnx b/Project/MSVC2026/MediaInfoLib.slnx index 603f110839..00f27726b1 100644 --- a/Project/MSVC2026/MediaInfoLib.slnx +++ b/Project/MSVC2026/MediaInfoLib.slnx @@ -7,6 +7,14 @@ + + + + + + + + diff --git a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp index 0d74760e19..0206b65ad5 100644 --- a/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp +++ b/Source/MediaInfo/Multiple/File_Mpeg4_Elements.cpp @@ -161,6 +161,7 @@ using namespace std; #include "ThirdParty/base64/base64.h" #define FMT_UNICODE 0 #include "ThirdParty/fmt/format.h" +#include #include #include #include @@ -1726,7 +1727,41 @@ void File_Mpeg4::brob() Get_C4(type, "payload box type"); Element_Info1(Ztring::ToZtring_From_CC4(type)); - Skip_XX(Element_Size - 4, "compressed data"); + std::vector decoded_buffer(Element_Size * 6); + const auto encoded_size{ Element_Size - 4 }; + const auto encoded_buffer{ Buffer + Buffer_Offset + Element_Offset }; + auto decoded_size{ decoded_buffer.size() }; + BrotliDecoderResult br_result = BrotliDecoderDecompress(encoded_size, encoded_buffer, &decoded_size, decoded_buffer.data()); + + if (br_result != BROTLI_DECODER_RESULT_SUCCESS) { + Skip_XX(Element_Size - 4, "compressed data"); + return; + } + + auto buffer_save{ Buffer }; + auto buffer_offset_save{ Buffer_Offset }; + auto buffer_size_save{ Buffer_Size }; + auto element_offset_save{ Element_Offset }; + auto element_size_save{ Element_Size }; + Buffer = decoded_buffer.data(); + Buffer_Offset = 0; + Buffer_Size = decoded_buffer.size(); + Element_Offset = 0; + Element_Size = decoded_size; + + switch (type) { + case Elements::Exif: Exif(); break; + case 0x584D4C20: // XML + case Elements::xml_: xml_(); break; + default: Skip_XX(Element_Size, "Data"); break; + } + Element_Name("Brotli-compressed box"); // restore element name + + Buffer = buffer_save; + Buffer_Offset = buffer_offset_save; + Buffer_Size = buffer_size_save; + Element_Offset = element_offset_save; + Element_Size = element_size_save; } //---------------------------------------------------------------------------