[FIX] Use dynamic current_fps in CEA-708 SCC frame delay calculations#2173
[FIX] Use dynamic current_fps in CEA-708 SCC frame delay calculations#2173Atul-Chahar wants to merge 1 commit intoCCExtractor:masterfrom
Conversation
…C frame delays Replace all 6 hardcoded 1000/29.97 frame delay calculations in dtvcc_write_scc() with 1000/current_fps so that CEA-708 SCC output uses the actual stream framerate instead of assuming NTSC 29.97. Fixes CCExtractor#2172
|
Tested locally on Linux: Build: Version: Rust tests: |
CCExtractor CI platform finished running the test files on linux. Below is a summary of the test results, when compared to test for commit f377be9...:
Congratulations: Merging this PR would fix the following tests:
All tests passed completely. Check the result page for more info. |
CCExtractor CI platform finished running the test files on windows. Below is a summary of the test results, when compared to test for commit f377be9...:
Your PR breaks these cases:
It seems that not all tests were passed completely. This is an indication that the output of some files is not as expected (but might be according to you). Check the result page for more info. |
|
Code review looks good — the change is correct and mechanical. Builds clean, no regression on 29.97fps CEA-708 SCC output (identical to master). However, we can't validate the fix without a non-29.97fps sample that has CEA-708 captions. Could you provide:
We need to verify the fix actually produces the expected timing improvement before merging. |
|
It is the exact same timecode drift issue as the EIA-608 PR. Without the patch, the SCC frame delay math subtracts/adds a hardcoded 29.97 offset ( |
In raising this pull request, I confirm the following (please check boxes):
My familiarity with the project is as follows (check one):
Summary
dtvcc_write_scc()inccx_decoders_708_output.cuses hardcoded1000 / 29.97in 6 places to calculate frame delay offsets for CEA-708 SCC output. This causes incorrect subtitle timing on non-NTSC streams (25fps PAL, 23.976 film, 24fps, etc.).This is the same class of bug fixed for CEA-608 in #2146, but in the CEA-708 (DTVCC) output path.
Fix
Replaced all 6 instances of
1000 / 29.97with1000 / current_fps. Thecurrent_fpsglobal is already accessible via the existing include chain — no new headers needed.Changes
src/lib_ccx/ccx_decoders_708_output.c— 6 lines changed indtvcc_write_scc()docs/CHANGES.TXT— added changelog entryFixes #2172