Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ option (WITH_OCR "Build with OCR (Optical Character Recognition) feature" OFF)
option (WITH_HARDSUBX "Build with support for burned-in subtitles" OFF)
option (VBI_DEBUG "Enable VBI decoder debug output" OFF)
option (NETWORKING_DEBUG "Enable networking debug output" OFF)
option (WITH_GPAC "Compile with GPAC support" ON)

# HARDSUBX requires OCR (tesseract/leptonica) and FFmpeg
if (WITH_HARDSUBX)
Expand Down Expand Up @@ -55,10 +56,13 @@ configure_file (
"${PROJECT_SOURCE_DIR}/lib_ccx/compile_info_real.h"
)

add_definitions(-DVERSION_FILE_PRESENT -DFT2_BUILD_LIBRARY -DGPAC_DISABLE_VTT -DGPAC_DISABLE_OD_DUMP -DGPAC_DISABLE_REMOTERY -DNO_GZIP)
add_definitions(-DVERSION_FILE_PRESENT -DFT2_BUILD_LIBRARY -DNO_GZIP)

if(CMAKE_SIZEOF_VOID_P EQUAL 8)
add_definitions(-DGPAC_64_BITS)
if (WITH_GPAC)
add_definitions(-DGPAC_DISABLE_VTT -DGPAC_DISABLE_OD_DUMP -DGPAC_DISABLE_REMOTERY)
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
add_definitions(-DGPAC_64_BITS)
endif()
endif()

include_directories(${PROJECT_SOURCE_DIR})
Expand Down Expand Up @@ -177,7 +181,9 @@ add_subdirectory (lib_ccx)

aux_source_directory(${PROJECT_SOURCE_DIR} SOURCEFILE)
set (EXTRA_LIBS ${EXTRA_LIBS} ccx)
set (EXTRA_LIBS ${EXTRA_LIBS} ${GPAC_LIBRARIES})
if (WITH_GPAC AND GPAC_FOUND)
set (EXTRA_LIBS ${EXTRA_LIBS} ${GPAC_LIBRARIES})
endif()
# set (EXTRA_LIBS ${EXTRA_LIBS} m)

if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
Expand Down
30 changes: 26 additions & 4 deletions src/lib_ccx/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,32 @@ if(WIN32)
endif(WIN32)

find_package(PkgConfig)
pkg_check_modules (GPAC REQUIRED gpac)

set (EXTRA_INCLUDES ${EXTRA_INCLUDES} ${GPAC_INCLUDE_DIRS})
set (EXTRA_LIBS ${EXTRA_LIBS} ${GPAC_LIBRARIES})
if (WITH_GPAC)
pkg_check_modules (GPAC gpac)
if (GPAC_FOUND)
set (EXTRA_INCLUDES ${EXTRA_INCLUDES} ${GPAC_INCLUDE_DIRS})
set (EXTRA_LIBS ${EXTRA_LIBS} ${GPAC_LIBRARIES})
add_definitions(-DENABLE_GPAC)
set (GPAC_FOUND ${GPAC_FOUND} PARENT_SCOPE)
set (GPAC_LIBRARIES ${GPAC_LIBRARIES} PARENT_SCOPE)
else ()
message(STATUS "GPAC not found via pkg-config. Falling back to FetchContent...")
include(FetchContent)
FetchContent_Declare(
gpac
GIT_REPOSITORY https://github.com/gpac/gpac.git
GIT_TAG master
)
FetchContent_MakeAvailable(gpac)

# Link against the fetched GPAC
set (EXTRA_INCLUDES ${EXTRA_INCLUDES} ${gpac_SOURCE_DIR}/include)
set (EXTRA_LIBS ${EXTRA_LIBS} libgpac)
add_definitions(-DENABLE_GPAC)
set (GPAC_FOUND TRUE PARENT_SCOPE)
set (GPAC_LIBRARIES libgpac PARENT_SCOPE)
endif ()
endif ()

if (WITH_FFMPEG)
find_package(PkgConfig)
Expand Down
33 changes: 29 additions & 4 deletions src/lib_ccx/mp4.c
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,17 @@
#include <time.h>
#include <stdlib.h>

#include "lib_ccx.h"
#include "ccx_mp4.h"

#ifdef ENABLE_GPAC

#include <gpac/isomedia.h>
#include <gpac/mpeg4_odf.h>
#include "lib_ccx.h"
#include "utility.h"
#include "ccx_encoders_common.h"
#include "ccx_encoders_mcc.h"
#include "ccx_common_option.h"
#include "ccx_mp4.h"
#include "activity.h"
#include "ccx_dtvcc.h"
#include "vobsub_decoder.h"
Expand Down Expand Up @@ -1121,11 +1124,11 @@ int processmp4(struct lib_ccx_ctx *ctx, struct ccx_s_mp4Cfg *cfg, char *file)
const LLONG timestamp = (LLONG)((sample->DTS + sample->CTS_Offset) * 1000) / timescale;
#endif
set_current_pts(dec_ctx->timing, (sample->DTS + sample->CTS_Offset) * MPEG_CLOCK_FREQ / timescale);
// For caption-only tracks (c608/c708), set frame type to I-frame
// For caption-only tracks (c608/c708, tx3g), set frame type to I-frame
// so that set_fts() will set min_pts from the first sample.
// Without video frames, frame type would stay Unknown and
// min_pts would never be set, causing broken timestamps.
if (type == GF_ISOM_MEDIA_CLOSED_CAPTION)
if (type == GF_ISOM_MEDIA_CLOSED_CAPTION || type == GF_ISOM_MEDIA_TEXT || type == GF_ISOM_MEDIA_SUBT)
dec_ctx->timing->current_picture_coding_type = CCX_FRAME_TYPE_I_FRAME;
set_fts(dec_ctx->timing);

Expand Down Expand Up @@ -1293,3 +1296,25 @@ int dumpchapters(struct lib_ccx_ctx *ctx, struct ccx_s_mp4Cfg *cfg, char *file)
gf_fclose(t);
return mp4_ret;
}

#else

int processmp4(struct lib_ccx_ctx *ctx, struct ccx_s_mp4Cfg *cfg, char *file)
{
mprint("GPAC support is disabled. MP4 parsing will not work. Recompile with GPAC support to enable this feature.\n");
return -1;
}

int dumpchapters(struct lib_ccx_ctx *ctx, struct ccx_s_mp4Cfg *cfg, char *file)
{
mprint("GPAC support is disabled. MP4 chapters will not work. Recompile with GPAC support to enable this feature.\n");
return -1;
}

unsigned char *ccdp_find_data(unsigned char *ccdp_atom_content, unsigned int len, unsigned int *cc_count)
{
*cc_count = 0;
return NULL;
}

#endif
4 changes: 4 additions & 0 deletions src/lib_ccx/params.c
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
#include <png.h>
#include "zlib.h"
#ifdef ENABLE_GPAC
#include "gpac/setup.h"
#include "gpac/version.h"
#endif
#include "lib_ccx.h"
#include "ccx_common_option.h"
#include "utility.h"
Expand Down Expand Up @@ -778,7 +780,9 @@ void version(char *location)
mprint(" Leptonica Version: %s\n", leptversion);
lept_free(leptversion);
#endif // ENABLE_OCR
#ifdef ENABLE_GPAC
mprint(" libGPAC Version: %s\n", GPAC_VERSION);
#endif
mprint(" zlib: %s\n", ZLIB_VERSION);
mprint(" utf8proc Version: %s\n", (const char *)utf8proc_version());
mprint(" libpng Version: %s\n", PNG_LIBPNG_VER_STRING);
Expand Down
Binary file added temp_mp4_diff.patch
Binary file not shown.
8 changes: 4 additions & 4 deletions windows/ccextractor.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -289,7 +289,7 @@
..\src\thirdparty\freetype\include;..\src;..\src\thirdparty\win_spec_incld;..\src\lib_ccx;..\src\thirdparty\lib_hash;..\src\lib_ccx\zvbi;..\src\thirdparty\win_iconv;..\src\thirdparty\;..\src;$(VCPKG_ROOT)\installed\$(VCPKG_DEFAULT_TRIPLET)\include;
"$(GpacDir)\sdk\include";%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>
$(ExtraDefines);SEGMENT_BY_FILE_TIME;ENABLE_HARDSUBX;FT2_BUILD_LIBRARY;GPAC_DISABLE_VTT;GPAC_DISABLE_OD_DUMP;ENABLE_OCR;WIN32;_DEBUG;_CONSOLE;_FILE_OFFSET_BITS=64;GPAC_DISABLE_REMOTERY;GPAC_DISABLE_ZLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
$(ExtraDefines);SEGMENT_BY_FILE_TIME;ENABLE_HARDSUBX;FT2_BUILD_LIBRARY;GPAC_DISABLE_VTT;GPAC_DISABLE_OD_DUMP;ENABLE_OCR;ENABLE_GPAC;WIN32;_DEBUG;_CONSOLE;_FILE_OFFSET_BITS=64;GPAC_DISABLE_REMOTERY;GPAC_DISABLE_ZLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
Expand Down Expand Up @@ -337,7 +337,7 @@
..\src\thirdparty\freetype\include;..\src;..\src\thirdparty\win_spec_incld;..\src\lib_ccx;..\src\thirdparty\lib_hash;..\src\lib_ccx\zvbi;..\src\thirdparty\win_iconv;..\src\thirdparty\;..\src;$(VCPKG_ROOT)\installed\$(VCPKG_DEFAULT_TRIPLET)\include;
"$(GpacDir)\sdk\include";%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>
$(ExtraDefines);SEGMENT_BY_FILE_TIME;ENABLE_HARDSUBX;FT2_BUILD_LIBRARY;GPAC_DISABLE_VTT;GPAC_DISABLE_OD_DUMP;ENABLE_OCR;WIN32;_DEBUG;_CONSOLE;_FILE_OFFSET_BITS=64;GPAC_DISABLE_REMOTERY;GPAC_DISABLE_ZLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
$(ExtraDefines);SEGMENT_BY_FILE_TIME;ENABLE_HARDSUBX;FT2_BUILD_LIBRARY;GPAC_DISABLE_VTT;GPAC_DISABLE_OD_DUMP;ENABLE_OCR;ENABLE_GPAC;WIN32;_DEBUG;_CONSOLE;_FILE_OFFSET_BITS=64;GPAC_DISABLE_REMOTERY;GPAC_DISABLE_ZLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<PrecompiledHeader>
Expand Down Expand Up @@ -384,7 +384,7 @@
..\src\thirdparty\freetype\include;..\src;..\src\thirdparty\win_spec_incld;..\src\lib_ccx;..\src\thirdparty\lib_hash;..\src\lib_ccx\zvbi;..\src\thirdparty\win_iconv;..\src\thirdparty\;..\src;$(VCPKG_ROOT)\installed\$(VCPKG_DEFAULT_TRIPLET)\include;
"$(GpacDir)\sdk\include";%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>
$(ExtraDefines);ENABLE_HARDSUBX;FT2_BUILD_LIBRARY;GPAC_DISABLE_VTT;GPAC_DISABLE_OD_DUMP;VERSION_FILE_PRESENT;ENABLE_OCR;WIN32;NDEBUG;_CONSOLE;_FILE_OFFSET_BITS=64;GPAC_DISABLE_REMOTERY;GPAC_DISABLE_ZLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
$(ExtraDefines);ENABLE_HARDSUBX;FT2_BUILD_LIBRARY;GPAC_DISABLE_VTT;GPAC_DISABLE_OD_DUMP;VERSION_FILE_PRESENT;ENABLE_OCR;ENABLE_GPAC;WIN32;NDEBUG;_CONSOLE;_FILE_OFFSET_BITS=64;GPAC_DISABLE_REMOTERY;GPAC_DISABLE_ZLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
Expand Down Expand Up @@ -432,7 +432,7 @@
..\src\thirdparty\freetype\include;..\src;..\src\thirdparty\win_spec_incld;..\src\lib_ccx;..\src\thirdparty\lib_hash;..\src\lib_ccx\zvbi;..\src\thirdparty\win_iconv;..\src\thirdparty\;..\src;$(VCPKG_ROOT)\installed\$(VCPKG_DEFAULT_TRIPLET)\include;
"$(GpacDir)\sdk\include";%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>
$(ExtraDefines);ENABLE_HARDSUBX;FT2_BUILD_LIBRARY;GPAC_DISABLE_VTT;GPAC_DISABLE_OD_DUMP;VERSION_FILE_PRESENT;ENABLE_OCR;WIN32;NDEBUG;_CONSOLE;_FILE_OFFSET_BITS=64;GPAC_DISABLE_REMOTERY;GPAC_DISABLE_ZLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
$(ExtraDefines);ENABLE_HARDSUBX;FT2_BUILD_LIBRARY;GPAC_DISABLE_VTT;GPAC_DISABLE_OD_DUMP;VERSION_FILE_PRESENT;ENABLE_OCR;ENABLE_GPAC;WIN32;NDEBUG;_CONSOLE;_FILE_OFFSET_BITS=64;GPAC_DISABLE_REMOTERY;GPAC_DISABLE_ZLIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<PrecompiledHeader>
</PrecompiledHeader>
Expand Down
Loading