BUG: SCC timecodes use hardcoded 29.97 FPS instead of actual stream frame rate
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 1/5
- Thời gian dự kiến
- Dưới một giờ
- Mức phù hợp với người mới
- 45/100
Hướng nghiên cứu
Bắt đầu trong src/lib_ccx/ccx_common_timing.c tại print_scc_time() và sử dụng lệnh grep từ issue để xác nhận tốc độ khung hình được hardcode. Kiểm tra các cập nhật của current_fps trong avc_functions.c và es_functions.c, sau đó xác minh rằng timecode SCC sử dụng tốc độ khung hình thực tế của stream đối với các nguồn không phải 29.97.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Summary
print_scc_time() in src/lib_ccx/ccx_common_timing.c computes SCC timecode frame numbers using a hardcoded literal 29.97, completely ignoring the current_fps global that exists in the same file and is dynamically updated from stream NAL data at runtime.
Any SCC output from a 24fps, 25fps, 30fps, or 50/60fps source will have incorrect frame numbers in every timecode, making the output non-standard and potentially rejected by downstream validators.
Affected File
src/lib_ccx/ccx_common_timing.c — Line 125
Reproduction
grep -n "29\.97" src/lib_ccx/ccx_common_timing.c
22: double current_fps = (double)30000.0 / 1001; /* 29.97 */ // TODO: Get from framerates_values[] instead
125: frame = ((double)(time.time_in_ms - 1000 * (time.ss + 60 * (time.mm + 60 * time.hh))) * 29.97 / 1000);
Root Cause
current_fps is already updated dynamically in two places:
avc_functions.c:891— from stream NAL timing dataavc_functions.c:991andes_functions.c:442— fromframerates_values[current_frame_rate]
print_scc_time() is simply the one function that was never updated to use it.
Impact
- All non-NTSC sources (24fps film, 25fps PAL, 30fps progressive) produce SCC timecodes with wrong frame numbers
- 25fps PAL broadcasts — common across Europe — see a ~20% frame count error
- Downstream broadcast validators may reject the output or apply incorrect sync
Suggested Fix
Single-token change on line 125:
// BEFORE:
frame = ((double)(time.time_in_ms - 1000 * (time.ss + 60 * (time.mm + 60 * time.hh))) * 29.97 / 1000);
// AFTER:
frame = ((double)(time.time_in_ms - 1000 * (time.ss + 60 * (time.mm + 60 * time.hh))) * current_fps / 1000);
current_fps is a file-level global in the same translation unit — no header changes needed. Happy to submit a PR for this.
- Ngôn ngữ chính
- C
- Star
- 901
- Fork
- 591
- Merge trung bình
- 5 ngày 10 giờ
- Pull request đã merge (30 ngày)
- 12
Chuẩn bị môi trường
- Không có Dockerfile hay tệp Docker Compose
- Có mẫu pull request
- Đọc hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của CCExtractor/ccextractor
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 86/100
CCExtractor/ccextractor#2247 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 68/100
CCExtractor/ccextractor#2358 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 3/5 1-2 ngày Mức phù hợp với người mới 65/100
CCExtractor/ccextractor#2355 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 48/100
CCExtractor/ccextractor#2350 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 4/5 3-5 ngày Mức phù hợp với người mới 72/100
CCExtractor/ccextractor#2348 ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của CCExtractor/ccextractor
Issue tương tự
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 88/100
BasedHardware/omi#20271 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
area/ysql kind/bug priority/medium
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
yugabyte/yugabyte-db#34552 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 84/100
flux-framework/flux-coral2#509 ·
-
documentation
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 92/100
github/copilot-sdk#2804 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Update dbus dependency to ^0.8.0Đang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
MixinNetwork/flutter-plugins#507 ·