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>
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>
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
- 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
- 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.
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.
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.
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.
* 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>
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>
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>