Feat(rust): Implement WebVTT-specific timestamp format and layout anchor (#2135)

* Feat(rust): Implement WebVTT-specific timestamp format and layout anchor

* style: apply rustfmt to g608.rs

* fix(rust): use WebVTT-spec dot separator for milliseconds in timestamp line
This commit is contained in:
Pranav Sharma
2026-03-07 13:56:55 +05:30
committed by GitHub
parent a44db9f617
commit b2c1babf90

View File

@@ -191,9 +191,20 @@ pub fn write_cc_buffer_as_g608(data: &eia608_screen, context: &mut encoder_ctx)
}
// Create timeline string for timestamps
let timestamp_line = format!(
"{h1:02}:{m1:02}:{s1:02},{ms1:03} --> {h2:02}:{m2:02}:{s2:02},{ms2:03}{encoded_clrf}"
);
let is_webvtt = context.write_format == crate::bindings::ccx_output_format::CCX_OF_WEBVTT;
let timestamp_line = if is_webvtt {
// WebVTT Standard requires dots instead of commas for milliseconds
// and supports trailing settings (e.g., vertical text direction, alignment)
format!(
"{h1:02}:{m1:02}:{s1:02}.{ms1:03} --> {h2:02}:{m2:02}:{s2:02}.{ms2:03}{encoded_clrf}"
)
} else {
// Legacy SRT Standard requires commas
format!(
"{h1:02}:{m1:02}:{s1:02},{ms1:03} --> {h2:02}:{m2:02}:{s2:02},{ms2:03}{encoded_clrf}"
)
};
// Encode and write timestamp line
let used = encode_line(context, buffer_slice, timestamp_line.as_bytes());