Commit Graph

187 Commits

Author SHA1 Message Date
Carlos Fernandez Sanz
92389cff84 ci: add dual build artifacts to compare C vs Rust code paths (#2207)
* fix: flush pending EIT sections in EPG_free() before freeing buffers

* ci: add dual build artifacts to compare C vs Rust code paths

Add -min-rust flag to linux/build that passes -DDISABLE_RUST to gcc,
causing switchable modules (DTVCC, demuxer, AVC, networking, hex utils)
to use their C implementations instead of Rust. The Rust library still
compiles since many modules are Rust-only.

The Linux CI now produces two artifacts:
- "CCExtractor Linux build" — min Rust (C paths where available)
- "CCExtractor Linux build (with migrations)" — max Rust

Both should produce identical output on the sample platform. If they
diverge, it means a Rust port introduced a behavioral difference.

The sample platform will need a corresponding update to recognize and
test the new "with migrations" artifact.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Varadraj75 <agrawalvaradraj2007@gmail.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-16 21:47:59 -07:00
Carlos Fernandez
3d18b38c32 Revert "Merge pull request #1912 from Rahul-2k4/final"
This reverts commit 2a6d27f9ff, reversing
changes made to 74e64c0421.
2026-01-18 13:28:15 -08:00
Rahul Tripathi
170b466a20 fix: Add dvb_dedup.c to autoconf build for GitHub Actions Linux CI 2026-01-16 16:23:43 +05:30
Rahul Tripathi
2bdcd20115 cleanup: Remove temporary debug, test, and tool artifacts from final branch
Remove 186 unwanted files including:
- Debug logs and diagnostic output (debug_*.log, debug_output/, diagnosis_output/)
- Test artifacts and binaries (linux/alltests_*, test_output/, test_split_verification/)
- Tool state files (.agent/, .claude/, .ralph/, .mcp.json, etc.)
- Root-level scripts and temporary Python utilities
- Working notes and temporary documentation (DVB_SPLIT_*.md, progress.json, etc.)
- Unfinished MCP server (tools/mcp-ccextractor/)
- Project-specific working notes (CLAUDE.md)

Update .gitignore to prevent re-adding unwanted artifacts.

Result: final branch now contains only DVB-split feature implementation
and core project files, matching upstream structure while preserving
all functional changes.
2026-01-16 16:18:02 +05:30
Rahul Tripathi
46cee0893a feat: DVB-003 - Add --no-dvb-dedup CLI flag
- Added no_dvb_dedup field to ccx_s_options structure
- Initialized to 0 (deduplication enabled by default)
- Added --no-dvb-dedup CLI flag in Rust args parser
- Added flag to Options struct in lib_ccxr
- Wired flag through Rust-to-C FFI boundary in common.rs
- Modified dvbsub_handle_display_segment to respect flag
- Dedup logic only runs when no_dvb_dedup is false (default)
- Added help text describing flag purpose
2026-01-16 14:11:13 +05:30
Carlos Fernandez
4a4911bcec chore: Bump version to 0.96.5
Update version number across all packaging and build files for the
0.96.5 release.

Files updated:
- docs/CHANGES.TXT - Added changelog entry
- src/lib_ccx/lib_ccx.h - VERSION define
- linux/configure.ac - AC_INIT version
- mac/configure.ac - AC_INIT version
- OpenBSD/Makefile - V variable
- package_creators/PKGBUILD - pkgver
- package_creators/ccextractor.spec - Version
- package_creators/debian.sh - VERSION
- packaging/chocolatey/ccextractor.nuspec - version
- packaging/chocolatey/tools/chocolateyInstall.ps1 - URL
- packaging/winget/*.yaml - PackageVersion and URLs

Note: SHA256 checksums in chocolatey and winget files will need to be
updated after the MSI is built.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-05 12:44:06 +01:00
Carlos Fernandez
4ab6c83c27 chore: Bump version to 0.96.4
Update version numbers across all packaging and build files for the
0.96.4 release.

Changes in 0.96.4:
- New: Persistent CEA-708 decoder context
- New: OCR character blacklist options
- New: OCR line-split option
- Fix: 32-bit build failures (i686, armv7l)
- Fix: Legacy argument compatibility (-1, -2, -12, --sc, --svc)
- Fix: Prevent heap buffer overflow in Teletext (security)
- Fix: Lazy OCR initialization

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-01 10:17:56 +01:00
Carlos Fernandez
a6fd8d468a chore: Bump version to 0.96.3
Update version number across all files:
- src/lib_ccx/lib_ccx.h (main version define)
- linux/configure.ac, mac/configure.ac (autoconf)
- OpenBSD/Makefile
- package_creators/ (PKGBUILD, ccextractor.spec, debian.sh)
- packaging/winget/ (all yaml manifests)
- packaging/chocolatey/ (nuspec and install script)

Note: Checksums in winget/chocolatey will need to be updated
when the actual release MSI is built.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 14:11:23 +01:00
Chandragupt Singh
a18eaa2c96 fix: utf8proc include path for system library builds 2025-12-29 13:37:39 +05:30
Carlos Fernandez
635a305c37 build: Add vobsub_decoder to autoconf build system
Add vobsub_decoder.c and vobsub_decoder.h to linux and mac Makefile.am
to fix autoconf build failures.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 17:42:08 +01:00
Carlos Fernandez
7284430fc6 fix(build): Preserve FFmpeg libs with -system-libs -hardsubx
The -system-libs mode was overwriting BLD_LINKER and losing the FFmpeg
libraries that -hardsubx adds. This fix preserves the FFmpeg libraries
when both flags are used together.

Also add permissions: contents: write to the workflow to allow
uploading assets to releases.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-26 15:49:51 +01:00
Chandragupt Singh
c8750e42d1 build(linux): use pkg-config cflags for system-libs includes 2025-12-26 18:51:16 +05:30
Chandragupt Singh
f08fd658e6 build(linux): Add -system-libs flag for Homebrew compatibility 2025-12-26 13:07:09 +05:30
Carlos Fernandez Sanz
d57354830e chore: Bump version to 0.96 2025-12-23 00:06:45 +01:00
Carlos Fernandez
ed42525f44 chore: Bump version to 0.96
Update version strings across all build configurations:
- src/lib_ccx/lib_ccx.h
- linux/configure.ac
- mac/configure.ac
- package_creators/PKGBUILD
- package_creators/ccextractor.spec
- package_creators/debian.sh
- OpenBSD/Makefile

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 05:58:01 +01:00
Carlos Fernandez
b88d1ebab2 fix(ci): Fix AppImage build failures for OCR and HardSubX variants
OCR build fix:
- linuxdeploy was failing with "Invalid magic bytes in file header"
  because it was passed the wrapper script instead of the actual binary
- When OCR is enabled, ccextractor is renamed to ccextractor.bin and
  a wrapper script sets TESSDATA_PREFIX before executing the binary
- Now correctly passes ccextractor.bin to linuxdeploy when it exists

HardSubX build fix:
- Add libavdevice-dev to FFmpeg dependencies in CI workflow
- rusty_ffmpeg requires libavdevice which was missing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 22:47:24 +01:00
Carlos Fernandez
8c0fe08781 feat: Add AppImage build variants and CI workflow (#1348)
Rewrites the AppImage build script to support three build variants
matching the Docker build options:
- minimal: Basic CCExtractor without OCR (smallest size)
- ocr: CCExtractor with OCR support (default)
- hardsubx: CCExtractor with burned-in subtitle extraction

Changes to build_appimage.sh:
- Add BUILD_TYPE environment variable to select variant
- Fix CMake options (was incorrectly using make flags)
- Bundle tessdata for OCR builds with wrapper script
- Create proper desktop file and icon handling
- Improve error handling and cleanup

New GitHub Actions workflow (build_appimage.yml):
- Builds all three variants on release
- Uploads AppImages as release assets
- Can be manually triggered for specific variants
- Caches GPAC build for faster CI runs

Usage:
  ./build_appimage.sh              # Builds 'ocr' variant
  BUILD_TYPE=minimal ./build_appimage.sh
  BUILD_TYPE=hardsubx ./build_appimage.sh

Closes #1348

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-21 22:37:22 +01:00
Carlos Fernandez
5715d6d315 build(linux): Suppress find error when GPAC is not installed
Redirect stderr to /dev/null for the GPAC source file search to avoid
showing "No such file or directory" error when GPAC is not installed.
The build continues to work correctly in both cases.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-20 19:35:35 +01:00
Carlos Fernandez
70404c29ca fix(mac): Fix HARDSUBX configure script and add documentation
Fixes #1173 - Error in ./configure enabling hardsubx on Mac
Fixes #1306 - Add HARDSUBX compilation docs for macOS

The configure.ac script failed on macOS with "binary operator expected"
because pkg-config output was unquoted. When pkg-config returns multiple
libraries (e.g., "-ltesseract -lcurl"), the unquoted expansion caused
`test ! -z` to receive multiple arguments instead of a single string.

Changes:
- Quote pkg-config output in TESSERACT_PRESENT conditional (mac & linux)
- Add macOS section to docs/HARDSUBX.txt with all build methods
- Add GitHub Actions jobs to test HARDSUBX builds on macOS:
  - build_shell_hardsubx: Tests ./build.command -hardsubx
  - build_autoconf_hardsubx: Tests ./configure --enable-hardsubx

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-20 18:41:37 +01:00
Carlos Fernandez
08d59ecb5f build(autoconf): Add GPAC library detection to configure
Previously, configure would succeed even without GPAC installed,
leading to a confusing compile-time error:
  "gpac/isomedia.h: No such file or directory"

Now configure checks for GPAC via pkg-config and fails early with
a helpful error message listing the package names for common distros:
  - gpac-devel (Fedora/RHEL)
  - libgpac-dev (Debian/Ubuntu)
  - gpac (Arch)

Fixes #1584

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-20 17:36:54 +01:00
Carlos Fernandez Sanz
f6cb862dcb bump MSRV from 1.54.0 to 1.87.0 (rust) 2025-12-15 23:25:22 -08:00
Carlos
d8698dc9cb build(autoconf): add tesseract/leptonica linking for HARDSUBX
This is the autoconf equivalent of the CMake fix in PR #1760.

When building with HARDSUBX enabled but OCR disabled, the autoconf
build system was missing explicit tesseract/leptonica linking in the
HARDSUBX block. While configure.ac sets OCR_IS_ENABLED when HARDSUBX
is enabled (so it would work via the OCR block), this change makes
the dependency explicit and consistent with the CMake fix.

Related: PR #1760, Issue #1719

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-15 08:12:16 +01:00
dhanush varma
c9d80e12b8 bump: update MSRV from 1.54.0 to 1.87.0
- Update all build configuration files to require Rust 1.87.0+
- Add clippy.toml with MSRV configuration as requested
- Maintain modern Rust features like is_multiple_of()
- Fixes build compatibility issue #1765
2025-11-23 00:10:04 +05:30
Prateek Sunal
42d750950a [FIX] add mac-ocr-hardsubx workflow & ffmpeg variants support (#1745)
## Fix
- Update params and there doc

## Mac OS:
- Fix FFMpeg, tesseract compilation
- Re-add Mac os build hardsubx workflow

## FFMpeg used in workflow:
- MacOS: `8.*`
- Windows: `6.*` (pinned VCPKG supports this)
- Linux: `6.*` (Latest ubuntu runner supports this)
2025-11-03 23:47:42 +05:30
Hridesh MG
ee232b5ded bump version 0.94 -> 0.95 (#1751) 2025-10-26 20:19:55 +05:30
Deepnarayan Sett
ba59eb0887 [FEAT] Removed C code already ported to Rust (#1738)
* Removal: Removed redundant C code already ported to Rust

* Removal: C formatting

* Removal: More Removal and CI issues in Mac

* Removal: CI issues in Mac

* Removal: Changes due to Rebase

* Removal: Failing CI on mac

* Removal: Failing regression test on dvdraw
2025-09-06 20:16:39 +05:30
Deepnarayan Sett
4b5f68a6a4 [FEAT] Remove share module (#1737)
* replaced nanomsg with nanomsg_sys

* feat: Share Module - squash commits

* Share Module: Added Documentation

* Share Module: Removed Sharing Service

* Share: formatting issues

* Share: failing CI

* Share: failing CI

* Share: Removed protobuf

* Share Module: Update CHANGES.txt

* Share Module: Update Cargo.lock

* Share Module: Update CHANGES.txt

* Share Module: Update Cargo.toml

* Share Module: Update Cargo.toml
2025-08-24 23:23:44 +05:30
Yasser
3851d24315 [FIX] Corrected bitness check for 64-bit systems (#1680)
Co-authored-by: AhmedYasserrr <ahmdyasrj@gamil.com>
2025-03-30 11:15:59 -07:00
dmo
d276fb17f7 Add support leptonica >= 1.83 (#1645) 2025-03-01 12:36:33 -08:00
Ishan Grover
f08febfd61 [FEATURE] Create linux AppImage for building CCExtractor (#1592)
* feat!: Add script for building AppImage

* chore(delete): Remove `build-static.sh` file

* refactor: Add link for logo photo

* chore: Replace dead link
2024-03-03 14:59:44 -08:00
Asher
c550726778 Typo in compilation docs (#1588)
* Typo in compilation docs

* [Fix] Deprecated leptonica name

With version 1.84.0, the library is changed from `liblept` to
`libleptonica`.
http://www.leptonica.org/source/version-notes.html
2024-01-15 00:50:36 -08:00
Prateek Sunal
79aaf86593 [FIX] #1549 Configure Script (#1574)
* fix: #1549 backticks

* fix: use single equal to
2023-10-23 07:24:48 -07:00
Prateek Sunal
aa4a76a941 [FEAT] Use system gpac library instead of vendoring gpacmp4 (#1535)
* feat: unpack gpac

* fix: linux ci

* fix: mac build

* fix: remove unused [no ci]

* fix: ignore config.h [no ci]

* temp commit, will drop this soon

* fix: install gpac

* fix: gpac

* fix: formatting

* fix: preproccessor directive

* fix: comment display version for now

* fix: display dlls code

* fix: bundle vcruntime in hardsubx windows

* fix: again

* fix: erros in ci

* fix: ci

* fix: add vcruntime in additional dependencies

* fix: try to copy vcruntime after build

* fix: space in runtime library

* fix: remove for now [no ci]

* fix: things in vcxproj

* fix: ci for leptonica sys

* fix: docs

* fix: copy dlls on post build event

* fix: copy vcruntime after build
2023-08-17 20:03:03 +00:00
Prateek Sunal
35e73c1c90 [FIX] Rename generic bitstream.h to cc_bitstream.h #1436 (#1543)
* fix: rename bitstream

* fix: update vcpkg commit hash

* fix: try to fix the linker error
2023-07-05 03:52:51 -07:00
Punit Lodha
d379d72685 Add avfilter for hardsubx (#1514) 2023-03-22 17:12:56 -07:00
Donough Liu
9b2215d9c2 hardsubx: Add missing -lavfilter for hardsubx linking (#1513) 2023-03-22 12:18:35 -07:00
Carlos Fernandez Sanz
f21d9e8737 Add address sanitizer on debug build 2023-03-21 20:06:20 -07:00
Apteryks
8105bc0b73 linux/configure.ac: Fix tesseract conditional problem. (#1504)
Fixes #1503.

Using tesseract-ocr's stock pkg-config, it would produce an error due to
unquoted whitespace:

  $ test ! -z `pkg-config --libs-only-l --silence-errors tesseract`
  bash: test: syntax error: `-larchive' unexpected

* linux/configure.ac: Use a positive test, and double-quote the $() command
substitution.

Co-authored-by: Carlos Fernandez Sanz <carlos@ccextractor.org>
2023-03-17 07:56:41 -07:00
Apteryks
ea4998f635 linux/Makefile.am: Add missing generated header. (#1505)
This header is generated by the pre-build.sh script.  The compilation
fails if it is missing.

* linux/Makefile.am (ccextractor_SOURCES): Add
../src/lib_ccx/compile_info_real.h.
2023-03-17 07:54:49 -07:00
Archit Bhonsle
257388bad3 reverting names of the secondary linux build scripts (#1496) 2023-03-12 11:23:28 -07:00
Archit Bhonsle
1604572995 [IMPROVEMENT] linux/build script revamp (#1494)
* improving `linux/build` script

* docs for the improved `linux/build` script
2023-03-12 08:38:06 -07:00
Shashwat Singh
170066f046 Port hardsubx utility (#1443)
* set up bindings conversion of hardsubx utility functions (and structs) and set up the module

* add low level ffmpeg rust binding

* Methods ported:

- convert_pts_to_ns
- convert_pts_to_ms
- convert_pts_to_s

A pure rust method was added called _edit_distance_rec that implements levenstein distance calculation using recursion and dynamic programming

The port of edit_distance_rec is simply a wrapper that calls above function.

This redundancy won't be nevessary as more downstream modules are ported to Rust

* put C code of hardsubx_utility under define rust flag

* run formatter

* make compilation of hardsubx rust modules conditional on the HARDSUBX and the OCR flags. Make ffmpeg a conditional dependency based on those flags

* remove namespaced dependency in cargo because that is a nightly feature

* add conditioal compilatio of ffmpeg related bindigs in build.rs

* make clang argument of -DENABLE_HARDSUBX conditional on cargo feature of hardsubx_ocr

* enable specific relevant features for ffmpeg-sys-next

* enable hardsubx_ocr feature in windows build

* add build feature in ffmpeg-sys-next

* ffmpeg build feature is conditional on platform

* Revert "ffmpeg build feature is conditional on platform"

This reverts commit e456fee942.

This is because conditional features do not work in cargo toml

* install yasm in the linux build github action for ocr and hardsubx enabled cmake

* turn globals to locals to reduce code

* remove redundant attributes

* style changes

* make import of ffmpeg-sys-next conditional on hardsubx_ocr flag

* add --all-features flag in clippy for github workflow

* run formatter

* fix clippy command

* install yasm as part of rust format build check

* install libtesseract-dev etc. for clippy build test

* readability change

* declare the function edit_distance as unsafe

* remove commented code

* formatting changes

* combine declaration and assignment

* add build command for building hardsubx rust

context to issue: #1445

* make hardsubx rust work with autoconf build. For issue: #1445

* update autoconf for mac for issue #1445
2022-07-13 14:36:30 +05:30
Aditya Pratap Singh
c3fc323150 [IMPROVEMENT] Deprecated the --with-gui flag for linux/configure and mac/configure (#1415)
* Deprecated the --with-gui flag for linux/configure and mac/configure

* Update docs/CHANGES.TXT

Co-authored-by: Willem <github@canihavesome.coffee>

Co-authored-by: Willem <github@canihavesome.coffee>
2022-03-07 13:20:11 +01:00
Carlos Fernandez Sanz
7bcdd6729f Bump version 0.93 -> 0.94 2021-12-14 09:46:01 -08:00
Carlos Fernandez Sanz
e98a584e98 Exit build if rust part fails 2021-11-21 09:31:05 -08:00
Hugh Mackworth
0ebeec4183 Repair Mac Build processes (#1390)
* Fix Mac Build processes

For all:
  Add Neon files to libpng for Apple Silicon
  Update compilation.md documentation

For autoconf:
  Make Linux and Mac Makefile.am and configure.ac identical
  Fix wrong location for zvbi/bcd.h in both Mac/Linux

For cmake::
  Include GPAC config for Darwin in Mac version

For mac/build.command:
  Update for new zvbi location

* Update CHANGES.TXT for Mac Build commit
2021-11-09 17:30:21 -08:00
Punit Lodha
8c10ded107 Add check for MSRV and update compilation docs (#1387)
* Add check for MSRV

* Update docs

* fix docs
2021-10-28 09:08:50 -07:00
Punit Lodha
3a1851f904 Make rust decoder default (#1375)
* Use rust by default and add -WITHOUT_RUST flag

* Fix for shell and autoconf builds

* change directory for version check

* change to  staticlib

* Update windows to build rust

* fix formatting

* add information about 708 decoder in version flag

* revert file mode to 644

* Use x86 for OCR releases

* fix flushing bug

* fix formatting

* update lib names

* remove bazel

* update changelog
2021-10-15 08:15:51 -07:00
Carlos Fernandez Sanz
c7ebd45d9f Version bump, 0.92 -> 0.93 2021-08-16 11:31:28 -07:00
Carlos Fernandez Sanz
a42e847bcb Bump version 0.91 -> 0.92 2021-08-10 04:10:43 -07:00