mirror of
https://github.com/CCExtractor/ccextractor.git
synced 2026-07-08 18:06:30 +00:00
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:
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user