Commit Graph

3276 Commits

Author SHA1 Message Date
Anayo Anyafulu
a44db9f617 Port hex_string_to_int from C to Rust and support uppercase hex (#2141) 2026-03-06 23:55:33 -08:00
rhythmcache
e4bcade799 Fix potential out-of-bounds access in write_stringz_as_srt_to_output (#2128)
* Fix loop condition for reading unescaped string

* Fix condition to check for newline escape sequence

* Fix formatting
2026-03-06 23:44:40 -08:00
cheron2000
f377be9578 cmake: guard Unix-only linker flags on non-Windows platforms (#2156) 2026-03-01 12:05:37 -08:00
Carlos Fernandez Sanz
8de778af32 fix(report): NULL guard and deduplicate call in teletext JSON report (#2155)
Follow-up to #2137:
- Add NULL check on private_data in tlt_print_seen_pages_json
- Remove duplicate get_sib_stream_by_type call in print_file_report_json

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 15:56:36 -08:00
Carlos Fernandez Sanz
c3c5d9c0a0 Merge pull request #2045 from pranavshar223/docs-userdata-debug-log
docs/debug: add verbose log when user data is skipped
2026-02-28 15:48:43 -08:00
Gaurav karmakar
02c524f693 [FIX]Fix panic when using --mp4/--mkv without explicit input format (#2107)
* Fix panic when using --mp4/--mkv without explicit input format

* Restored Autodetection Logic &Fixed TCP Input Regressio

* style: apply cargo fmt

* ix(parser): add --mp4/--mkv handling and remove unwrap panic

Properly handle mp4/mkv flags in set_input_format()
and replace args.input.unwrap() with unwrap_or().

* resolve the formatting issue

---------

Co-authored-by: GAURAV KARMAKAR <gaurav.k@graeon.ai>
2026-02-28 15:35:56 -08:00
Carlos Fernandez Sanz
9614f58187 Merge pull request #2137 from ananyaaa66/master
Add teletext pages and PID type tagging to JSON report output (#1399)
2026-02-28 14:25:22 -08:00
Carlos Fernandez Sanz
5de265d64f Merge pull request #2152 from Varadraj75/feat/mkv-mpeg2-cc-extraction
FEATURE: Add V_MPEG2 track support in MKV demuxer for CC extraction
2026-02-28 14:02:09 -08:00
Carlos Fernandez Sanz
d80bf92820 test(dtvcc): add lazy decoder allocation lifecycle test 2026-02-28 13:52:00 -08:00
Carlos Fernandez
6ee370cafe style: cargo fmt
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:18:40 -08:00
Carlos Fernandez
e9a84ac2aa test(dtvcc): add lazy decoder allocation lifecycle test
Verify that CEA-708 service decoders are not allocated at startup
and are only created on first use when data arrives for that service.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-28 13:14:25 -08:00
Carlos Fernandez Sanz
ffb380601a Merge pull request #2151 from x15sr71/fix/x86-decoder-alloc-panic
Fix: Lazy CEA-708 service decoder allocation to prevent OOM panic on x86 (32-bit Windows)
2026-02-28 13:08:11 -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
af57a0c425 Merge pull request #2148 from CCExtractor/dependabot/github_actions/actions/upload-artifact-7
chore(deps): bump actions/upload-artifact from 6 to 7
2026-02-28 12:55:15 -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
Varadraj75
a87ad2bec7 style: remove BOM from matroska.c 2026-02-28 22:57:58 +05:30
Varadraj75
0cf5abfa9c style: apply clang-format to matroska.c 2026-02-28 22:51:39 +05:30
Varadraj75
934398fc86 feat: support V_MPEG2 tracks in MKV demuxer for CC extraction
MKV files with MPEG-2 video (common in DVD sources) were silently skipped.
Add V_MPEG2 track detection and processing using the existing process_m2v()
infrastructure, matching how mp4.c handles MPEG-2 streams.

Fixes #2149
2026-02-28 21:43:42 +05:30
Varadraj75
1189433c06 fix: address Copilot review comments on PR #2150
- Fix mapping comments: 4=23.976 (aka 23.98) in ccx_encoders_scc.c
- Update help text to document 23.976 and 29 as accepted aliases
- Add test_scc_framerate_23_976 unit test for the 23.976 alias
2026-02-28 18:04:24 +05:30
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
dependabot[bot]
738d482ea7 chore(deps): bump actions/upload-artifact from 6 to 7
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-27 18:02:42 +00:00
Chandragupt Singh
801a5446bf debug: revert artifact freshness sentinel string
TIMING_PATCH_ACTIVE was a temporary diagnostic string added to
verify that GitHub Actions was building fresh artifacts from the
correct branch commit, and not serving a stale cached binary.
Build freshness was confirmed. Reverted back to INVALID.
2026-02-27 20:32:40 +05:30
Chandragupt Singh
f5cede7c58 debug: add a small sentinel string to check if the artifact is fresh 2026-02-27 18:35:21 +05:30
Chandragupt Singh
76e37ba64e fix(rust): lazily allocate CEA-708 service decoders to avoid x86 startup OOM 2026-02-27 10:43:08 +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
Carlos Fernandez Sanz
6da2b7f8e1 Merge pull request #2136 from apoorvdarshan/fix/config-file-parser-bugs
Fix configuration file parsing bugs and typos
2026-02-25 14:17:24 -08:00
Carlos Fernandez Sanz
85aa833e01 Merge pull request #2130 from pranavshar223/fix-scte20-syntax-check
Fix: Add missing SCTE-20 marker bit syntax check (resolves TODO)
2026-02-25 14:04:23 -08:00
Chandragupt Singh
17d1c14c99 fix(rust): replace alloc panic with handle_alloc_error and add null guard to prevent UB on x86 2026-02-26 00:13:45 +05:30
Chandragupt Singh
9039c80d19 fix(rust): replace unwrap in print_mstime_static to avoid panic on out-of-range timestamps 2026-02-24 18:08:15 +05:30
Chandragupt Singh
10c612f90c docs: add changelog entry 2026-02-24 02:31:16 +05:30
Chandragupt Singh
ef33eb8c13 fix(rust): prevent panic in timing.rs when formatting invalid timestamps 2026-02-24 01:00:54 +05:30
ananyaaa66
b1cb5c98fa feat: Add functions for dumping CCExtractor parameters and generating file reports, including JSON output. 2026-02-23 02:54:07 +05:30
ananyaaa66
3d9027a913 feat: Add parameter dumping, JSON report generation, and teletext support. 2026-02-23 01:18:47 +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
Chandragupt Singh
041413817b fix(spupng): fix file numbering, EOD index waste, and non-deterministic XML path 2026-02-22 22:01:53 +05:30
Pranav Sharma
381489f82c Fix: Add missing SCTE-20 marker bit syntax check (resolves TODO) 2026-02-20 10:03:50 +00:00
Carlos Fernandez Sanz
6f7ce27b3d Merge pull request #2129 from rhythmcache/rhythmcache-patch-2
Fix Windows Debug crash caused by cross-allocator free of Rust inputfile strings
2026-02-19 22:39:04 -08:00
rhythmcache
6c70504653 Export free_rust_c_string_array with C ABI for FFI linkage 2026-02-20 09:57:55 +05:30
rhythmcache
67437b62d5 Fix allocator mismatch when freeing Rust allocated inputfile strings
On Windows Debug builds, freeing inputfile in dinit_libraries()
causes a _CrtIsValidHeapPointer assertion failure.

The root cause was that the inputfile strings and the array are allocated in Rust using CString::into_raw() and Vec, which use Rust's global allocator.
They were later freed in C using free(), causing a cross-allocator
mismatch detected by the MSVC Debug CRT. The fix is to replace manual free() calls with free_rust_c_string_array() so that
rust allocated memory is released using the correct allocator.
2026-02-20 09:46:55 +05:30
Carlos Fernandez Sanz
2dc5cf3223 Improve CI caching, fix Linux deps, fix WinGet fork-user
* Improve CI caching and fix Linux build dependencies

- release.yml: Replace manual vcpkg clone + binary cache with
  lukka/run-vcpkg@v11 and installed-packages caching (matching
  build_windows.yml), add Cargo registry caching
- build_linux.yml: Add FFmpeg dev packages to build_autoconf, cmake,
  and build_rust jobs — libgpac on newer Ubuntu requires FFmpeg 6.x
  libraries at link time

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* Fix WinGet publish: add fork-user to point to CCExtractor org fork

The winget-releaser action defaults to creating branches on the token
owner's fork (cfsmp3/winget-pkgs), which doesn't exist. The actual
fork is at CCExtractor/winget-pkgs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 19:20:48 -08:00
Carlos Fernandez Sanz
185631dcb0 Merge pull request #2125 from CCExtractor/fix/wix-conditional-xml
Fix WiX installer conditional for x86/x64 directory
v0.96.6
2026-02-19 18:01:27 -08:00
Carlos Fernandez
f843db26c5 Fix WiX installer: use preprocessor variable for conditional directory
The <?if>/<else> around <StandardDirectory> opening tags produced
invalid XML because WiX parses XML structure before evaluating
preprocessor directives. Use a <?define> variable for the ID instead.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 17:45:06 -08:00
Carlos Fernandez Sanz
3f87efec63 Merge pull request #2124 from CCExtractor/fix/publish-workflow-timing
Fix publish workflows: wait for release build to finish
2026-02-19 17:20:28 -08:00
Carlos Fernandez
e17617fa53 Fix publish workflows: wait for release build to finish
The Chocolatey and WinGet publish workflows triggered on
release: [released], which fires simultaneously with the release
build. Since MSIs take ~45 minutes to build, the publish workflows
failed with 404 errors.

Switch both to workflow_run trigger so they wait for the "Upload
releases" workflow to complete before attempting to publish.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-19 17:07:59 -08:00
Carlos Fernandez Sanz
350799f9ad Update CHANGES.TXT for 0.96.6 release 2026-02-19 16:41:42 -08:00
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