pub struct DropFrameCalc;Expand description
Drop-frame timecode calculator for 29.97 fps.
29.97 fps = 30000/1001 fps. To keep timecode aligned with real time, 2 frame numbers are dropped per minute, except every 10th minute. Actual frame count per 24-hour day: 24 * 107892 = 2,589,408 frames.
Implementations§
Source§impl DropFrameCalc
impl DropFrameCalc
Sourcepub fn frame_count_to_df(frame_count: u64) -> (u8, u8, u8, u8)
pub fn frame_count_to_df(frame_count: u64) -> (u8, u8, u8, u8)
Convert a frame count to drop-frame timecode (hh, mm, ss, ff).
Uses the standard SMPTE drop-frame algorithm.
Reference algorithm (from SMPTE 12M): D = frame_count D_f = D + 2 * (D / 17982) + 2 * ((D % 17982 - 2) / 1798) [only if remainder >= 2]
Sourcepub fn df_to_frame_count(hh: u8, mm: u8, ss: u8, ff: u8) -> u64
pub fn df_to_frame_count(hh: u8, mm: u8, ss: u8, ff: u8) -> u64
Convert drop-frame timecode (hh, mm, ss, ff) to a frame count.
Standard SMPTE formula: frame_count = 108000hh + 1800mm + 30ss + ff - 2(total_minutes - total_minutes/10)
Note: 108000 = 30 * 3600 (raw 30fps hour count, NOT the drop-frame hour count).
Sourcepub fn format_df(frame_count: u64) -> String
pub fn format_df(frame_count: u64) -> String
Format a frame count as a drop-frame timecode string.
Drop-frame timecode uses semicolons (;) as separators.