Commit Graph

363 Commits

Author SHA1 Message Date
Chandragupt Singh
ed7f544e10 [FEATURE] Add guarded ASS/SSA \pos positioning for CEA-608 captions (#1885)
* feat(ssa): add guarded ASS \pos positioning for CEA-608 captions

* fix(ssa): correct ASS positioning anchor, validate row adjacency, and clean up variable placement

* fix(ssa): adjust top margin to prevent clipping of top-positioned CEA-608 captions

* ssa: map CEA-608 row+col to ASS coords using FFmpeg safe-area formula and fix \an2→\an7 anchor
2026-03-14 10:13:40 -07:00
Atul Chahar
58a8ded621 Fix MSVC cross-CRT invalid free on output_filename (#2147) 2026-03-12 18:54:47 -07:00
Carlos Fernandez Sanz
ee57fb46f3 chore: clean up #2168 merge — drop internal CHANGES.TXT entry, fix whitespace (#2196)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-12 18:49:44 -07:00
Varad Raj Agrawal
dc1d8d9592 fix: move VBI_DEBUG to CMake opt-in, fix MSVC empty struct error (#2168)
- Remove unconditional #define VBI_DEBUG from ccx_decoders_vbi.h
- Add CMake option VBI_DEBUG (OFF by default) in src/CMakeLists.txt
- Use #ifdef VBI_DEBUG / #else for debug_file_name vs reserved member,
  preventing MSVC C2016 empty struct error in non-debug builds
- Add changelog entry in docs/CHANGES.TXT under 0.96.7 unreleased

Fixes #2167
2026-03-12 18:47:43 -07:00
Varad Raj Agrawal
90128d8c28 fix: memory leaks and invalid CSS in WebVTT encoder (#2164)
* fix: memory leaks and invalid CSS in WebVTT encoder

- Remove 6 unnecessary strdup() calls on string literals in
  write_cc_buffer_as_webvtt() — literals are passed directly to
  write_wrapped() which takes void*, no heap allocation needed.
  This runs in a per-character inner loop and leaked on every
  styled subtitle in a broadcast.
- Fix invalid CSS: rgba(0, 256, 0, 0.5) -> rgba(0, 255, 0, 0.5)
  CSS color channels are 0-255; 256 is out of range.
- Fix missing free(unescaped) on write-error path in
  write_stringz_as_webvtt() — matched the existing pattern on
  the adjacent error path which correctly freed both el and unescaped.

Fixes #2154

* fix: move WebVTT changelog entry to unreleased 0.96.7 section
2026-03-07 00:37:12 -08:00
Carlos Fernandez
36711b9d3b Merge origin/master into fix/x86-decoder-alloc-panic
Resolve CHANGES.TXT conflict: keep both entries.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:07:54 -08:00
Carlos Fernandez Sanz
c919dafd4a Merge pull request #2150 from Varadraj75/fix/scc-framerate-help-and-23.98-alias
[FEATURE] :  Add 23.98fps alias for --scc-framerate and clarify help text
2026-02-28 12:59:17 -08:00
Carlos Fernandez Sanz
f457348a43 Merge pull request #2138 from x15sr71/fix/rust-timing-unwrap-panic
FIX(rust): prevent panic when formatting out-of-range timestamps in timing.rs and c_functions.rs
2026-02-28 10:30:05 -08:00
Chandragupt Singh
7047583cdf Merge branch 'master' into fix/x86-decoder-alloc-panic 2026-02-28 17:52:49 +05:30
Chandragupt Singh
3af7a6a336 chore: add changelog entry and update test comment for lazy allocation 2026-02-28 17:38:38 +05:30
Varadraj75
f7bdb86504 feat: add 23.98fps as valid --scc-framerate value and fix help text
- Add case 4 (23.976f) to both get_scc_fps() and get_scc_fps_internal()
  in ccx_encoders_scc.c so --scc-framerate 23.98 produces correct output
- Add "23.98" | "23.976" match arm in parser.rs mapping to value 4
- Add test_scc_framerate_23_98() unit test in parser.rs
- Update --scc-framerate help text to clarify it affects both input
  parsing AND output encoding (not input only)
- Add 23.98 to the listed valid values in the help text

Follows up on discussion in #2145 and #2146.
2026-02-28 16:58:58 +05:30
Carlos Fernandez Sanz
733ed89feb Merge pull request #2134 from x15sr71/fix/spupng-indexing-and-path
[Fix]: SPUPNG indexing, EOD counter advance, and header path determinism
2026-02-25 14:19:30 -08:00
Chandragupt Singh
10c612f90c docs: add changelog entry 2026-02-24 02:31:16 +05:30
Apoorv Darshan
3865385763 Fix configuration file parsing bugs and typos
Fix multiple bugs in parse_file(): heap buffer overflow on long lines
(no bounds check on 128-byte buffer), broken EOF detection (fgetc()
return stored in char instead of int), missing NULL check after malloc,
missing null-terminator on accumulated string, and last line silently
dropped if file lacks trailing newline.

Also fix typos in configuration_map[]: FIX_PADDINDG → FIX_PADDING,
INVASTIGATE_PACKET → INVESTIGATE_PACKET.
2026-02-23 00:14:31 +05:30
Chandragupt Singh
3857a5756f docs: add changelog entry 2026-02-22 22:58:37 +05:30
Carlos Fernandez
eb7580498e Update CHANGES.TXT for 0.96.6 release
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 16:07:58 -08:00
Carlos Fernandez
7bd3be1cd1 Merge master into feat/json-report, resolve CHANGES.TXT conflict
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 14:02:37 -08:00
Carlos Fernandez Sanz
0a4916f871 Merge pull request #2104 from AhmedAlian7/feat/transcript-dictionary-support
feat(transcript): Implement dictionary-based capitalization and censorship
2026-02-15 10:45:49 -08:00
Carlos Fernandez
45afa8a429 Merge origin/master into pr-2110 (resolve CHANGES.TXT conflict) 2026-02-15 08:56:20 -08:00
ishaan-arora-1
1afd909e8a fix(matroska): add missing open() check and close() in save_sub_track
save_sub_track() was missing two things:

1. No check on the return value of open(). If open() failed,
   desc would be -1, and the subsequent write_wrapped() calls
   would trigger a fatal error with a confusing message.

2. The file descriptor was never closed at the end of the function,
   leaking it on every call. The neighboring save_vobsub_track()
   already handles both correctly — this brings save_sub_track()
   in line with it.
2026-02-14 05:42:55 +05:30
ishaan-arora-1
9710e8163c fix(matroska): use correct strlen for end timestamp in subtitle output
In save_sub_track(), the length argument for writing timestamp_end
was incorrectly using strlen(timestamp_start) instead of
strlen(timestamp_end). This affected WebVTT, SRT, and ASS/SSA
output paths for Matroska subtitle extraction.
2026-02-14 05:35:41 +05:30
Ahmed Alian
2ac017f8fe feat(transcript): Implement dictionary-based capitalization and censorship 2026-02-09 20:03:10 +02:00
Chandragupt Singh
eafc3904c5 Merge branch 'master' into feat/json-report 2026-02-08 23:29:24 +05:30
Carlos Fernandez Sanz
10288243b9 Merge pull request #2100 from x15sr71/fix/dvb-eit-bcd-start-time
[FIX]: Properly decode DVB EIT start time BCD field in XMLTV output
2026-02-07 13:25:03 -08:00
Chandragupt Singh
f920c16a53 docs: add changelog entry 2026-02-08 00:59:18 +05:30
Nicolas Dato
2582f628dd Fix sigsegv (#2090)
* Fix SIGSEGV when using --multiprogram

* Update CHANGES.TXT
2026-02-07 10:24:51 -08:00
Chandragupt Singh
556392a9fe docs(changelog): mention JSON output support for -out=report 2026-02-04 00:28:03 +05:30
Chandragupt Singh
05c68349d5 Merge branch 'master' into feat/snap-distribution-support 2026-01-23 15:26:59 +05:30
Chandragupt Singh
09f21f64e4 fix(snap): resolve GPAC dependency and runtime issues in core22 snap 2026-01-23 15:23:33 +05:30
Carlos Fernandez
91d3512bcc fix(rust): Support BCP 47 language tags in --mkvlang option
The --mkvlang option previously only supported single ISO 639-2 codes
due to using a Language enum with a fixed list of variants. Extended
codes (like "fre-ca") and multiple codes (like "eng,chi") would panic.

This change introduces MkvLangFilter, a proper type for language
filtering that:

- Validates language codes per BCP 47 specification
- Supports ISO 639-2 (3-letter codes like "eng")
- Supports BCP 47 tags (like "en-US", "zh-Hans-CN")
- Supports comma-separated multiple codes
- Provides clean error messages for invalid input
- Includes comprehensive unit tests

The C code continues to receive the raw string for strstr() matching,
maintaining backward compatibility.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-18 13:23:39 -08:00
collectnis
7159d0b6d0 fix: resolve merge conflict in changelog 2026-01-11 11:48:58 +00:00
collectnis
c515578e37 docs: update changelog 2026-01-11 11:30:54 +00:00
Carlos Fernandez
13f1b5ab53 docs: Add changelog for 0.96.6
🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-11 10:28:56 +01:00
Carlos Fernandez Sanz
d999c3e0e0 Merge pull request #1985 from x15sr71/docs/homebrew-install
docs: Add Homebrew installation instructions to COMPILATION.MD
2026-01-10 23:43:42 +01:00
Chandragupt
493495361d ci(snap): use stable GitHub Actions v6 and make runtime library resolution robust 2026-01-08 09:24:25 +05:30
Chandragupt
643857e98f docs: add changelog entry for Snap packaging 2026-01-08 06:09:33 +05:30
GAURAV KARMAKAR
c609f66c02 Removed Build Artifact 2026-01-08 01:03:54 +05:30
Chandragupt Singh
401ff6c105 docs: note Homebrew availability in changelog 2026-01-06 06:04:57 +05:30
Chandragupt Singh
83eb51ed6f docs: add Homebrew installation instructions 2026-01-06 06:01:56 +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
Kurma Ritish
0890e06d84 docs: add Windows WSL build instructions 2026-01-04 08:47:48 +00:00
Amrit Kumar Mahto
774c3a0d3a Update CHANGES.TXT 2026-01-02 04:31:39 +05:30
Carlos Fernandez Sanz
a2d2c4f063 Merge branch 'master' into release/0.96.4 2026-01-01 10:39:12 +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
Harshdhall01
5564aa8a54 Merge upstream/master and resolve CHANGES.TXT conflict 2025-12-31 23:51:24 +05:30
Harshdhall01
868fac5423 Update CHANGES.TXT with Rust documentation improvements 2025-12-31 23:33:49 +05:30
Carlos Fernandez
5b05ce5073 docs: Add changelog entries for version 0.96.3
Document all changes since 0.96.2 including:
- VOBSUB subtitle extraction for MP4 and MKV files
- Native SCC input file support
- SCC output improvements (frame rate, styled PAC codes)
- Various bug fixes for timing, builds, and OCR

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-29 13:28:24 +01:00
Carlos Fernandez Sanz
285e81f9a7 Merge pull request #1898 from hridyasadanand/docs-remove-travis-badge
Good cleanup - removing the outdated Travis CI badge and adding a usage example helps new users. Merging.
2025-12-29 12:23:58 +01:00
Chandragupt Singh
a18eaa2c96 fix: utf8proc include path for system library builds 2025-12-29 13:37:39 +05:30
Carlos Fernandez
6f2a73d706 docs: Add VOBSUB extraction documentation and subtile-ocr Dockerfile
- Add docs/VOBSUB.md explaining the VOBSUB extraction workflow
- Add tools/vobsubocr/Dockerfile for building subtile-ocr OCR tool
- Document how to convert VOBSUB (.idx/.sub) to SRT using OCR

The Dockerfile uses subtile-ocr (https://github.com/gwen-lg/subtile-ocr),
an actively maintained fork of vobsubocr with better accuracy.

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

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-28 10:26:41 +01:00