|
| 1 | +use crate::bindings::{ |
| 2 | + cc_subtitle, |
| 3 | + eia608_screen, |
| 4 | + encoder_ctx, |
| 5 | +}; |
| 6 | + |
| 7 | +use crate::encoder::common::encode_line; |
| 8 | +use crate::libccxr_exports::time::ccxr_millis_to_time; |
| 9 | + |
| 10 | +use std::os::raw::c_int; |
| 11 | + |
| 12 | +/// Core helper: write a SMPTE-TT paragraph from text + times |
| 13 | +fn write_stringz_as_smptett( |
| 14 | + text: &str, |
| 15 | + context: &mut encoder_ctx, |
| 16 | + ms_start: i64, |
| 17 | + ms_end: i64, |
| 18 | +) { |
| 19 | + let mut h1 = 0; |
| 20 | + let mut m1 = 0; |
| 21 | + let mut s1 = 0; |
| 22 | + let mut ms1 = 0; |
| 23 | + |
| 24 | + let mut h2 = 0; |
| 25 | + let mut m2 = 0; |
| 26 | + let mut s2 = 0; |
| 27 | + let mut ms2 = 0; |
| 28 | + |
| 29 | + unsafe { |
| 30 | + ccxr_millis_to_time(ms_start, &mut h1, &mut m1, &mut s1, &mut ms1); |
| 31 | + ccxr_millis_to_time(ms_end, &mut h2, &mut m2, &mut s2, &mut ms2); |
| 32 | + } |
| 33 | + |
| 34 | + let header = format!( |
| 35 | + "<p begin=\"{:02}:{:02}:{:02}.{:03}\" end=\"{:02}:{:02}:{:02}.{:03}\">", |
| 36 | + h1, m1, s1, ms1, |
| 37 | + h2, m2, s2, ms2 |
| 38 | + ); |
| 39 | + |
| 40 | + encode_line(context, &mut context.buffer, header.as_bytes()); |
| 41 | + |
| 42 | + encode_line(context, &mut context.buffer, line.as_bytes()); |
| 43 | + encode_line(context, &mut context.buffer, &context.encoded_crlf); |
| 44 | +} |
| 45 | +for line in text.split('\n') { |
| 46 | + encode_line(context, &mut context.buffer, line.as_bytes()); |
| 47 | + encode_line(context, &mut context.buffer, &context.encoded_crlf[..]); |
| 48 | +} |
| 49 | + |
| 50 | + encode_line(context, &mut context.buffer, b"</p>"); |
| 51 | +} |
| 52 | + |
| 53 | +/// SMPTE-TT encoder entry for CC buffer (CEA-608) |
| 54 | +pub fn write_cc_buffer_as_smptett( |
| 55 | + _data: &mut eia608_screen, |
| 56 | + _context: &mut encoder_ctx, |
| 57 | +) -> c_int { |
| 58 | + 0 |
| 59 | +} |
| 60 | + |
| 61 | +/// SMPTE-TT encoder entry for subtitle list (text-based) |
| 62 | +pub fn write_cc_subtitle_as_smptett( |
| 63 | + _sub: &mut cc_subtitle, |
| 64 | + _context: &mut encoder_ctx, |
| 65 | +) -> c_int { |
| 66 | + 0 |
| 67 | +} |
| 68 | + |
| 69 | +/// SMPTE-TT encoder entry for bitmap subtitles (OCR) |
| 70 | +pub fn write_cc_bitmap_as_smptett( |
| 71 | + _sub: &mut cc_subtitle, |
| 72 | + _context: &mut encoder_ctx, |
| 73 | +) -> c_int { |
| 74 | + 0 |
| 75 | +} |
0 commit comments