Revert "fix: segment_callaback logic"

This reverts commit 684ec8e733.
This commit is contained in:
newfla 2025-03-03 16:53:36 +01:00
parent cb8f79d474
commit 278df9b843

View file

@ -419,20 +419,26 @@ impl<'a, 'b> FullParams<'a, 'b> {
{ {
unsafe { unsafe {
let user_data = &mut *(user_data as *mut SegmentCallbackFn); let user_data = &mut *(user_data as *mut SegmentCallbackFn);
let text = whisper_rs_sys::whisper_full_get_segment_text_from_state(state, n_new); let n_segments = whisper_rs_sys::whisper_full_n_segments_from_state(state);
let text = CStr::from_ptr(text); let s0 = n_segments - n_new;
//let user_data = user_data as *mut Box<dyn FnMut(SegmentCallbackData)>;
let t0 = whisper_rs_sys::whisper_full_get_segment_t0_from_state(state, n_new); for i in s0..n_segments {
let t1 = whisper_rs_sys::whisper_full_get_segment_t1_from_state(state, n_new); let text = whisper_rs_sys::whisper_full_get_segment_text_from_state(state, i);
let text = CStr::from_ptr(text);
match text.to_str() { let t0 = whisper_rs_sys::whisper_full_get_segment_t0_from_state(state, i);
Ok(n) => user_data(SegmentCallbackData { let t1 = whisper_rs_sys::whisper_full_get_segment_t1_from_state(state, i);
segment: n_new + 1,
start_timestamp: t0, match text.to_str() {
end_timestamp: t1, Ok(n) => user_data(SegmentCallbackData {
text: n.to_string(), segment: i,
}), start_timestamp: t0,
Err(_) => {} end_timestamp: t1,
text: n.to_string(),
}),
Err(_) => {}
}
} }
} }
} }
@ -482,17 +488,23 @@ impl<'a, 'b> FullParams<'a, 'b> {
{ {
unsafe { unsafe {
let user_data = &mut *(user_data as *mut SegmentCallbackFn); let user_data = &mut *(user_data as *mut SegmentCallbackFn);
let text = whisper_rs_sys::whisper_full_get_segment_text_from_state(state, n_new); let n_segments = whisper_rs_sys::whisper_full_n_segments_from_state(state);
let text = CStr::from_ptr(text); let s0 = n_segments - n_new;
//let user_data = user_data as *mut Box<dyn FnMut(SegmentCallbackData)>;
let t0 = whisper_rs_sys::whisper_full_get_segment_t0_from_state(state, n_new); for i in s0..n_segments {
let t1 = whisper_rs_sys::whisper_full_get_segment_t1_from_state(state, n_new); let text = whisper_rs_sys::whisper_full_get_segment_text_from_state(state, i);
user_data(SegmentCallbackData { let text = CStr::from_ptr(text);
segment: n_new,
start_timestamp: t0, let t0 = whisper_rs_sys::whisper_full_get_segment_t0_from_state(state, i);
end_timestamp: t1, let t1 = whisper_rs_sys::whisper_full_get_segment_t1_from_state(state, i);
text: text.to_string_lossy().to_string(), user_data(SegmentCallbackData {
}); segment: i,
start_timestamp: t0,
end_timestamp: t1,
text: text.to_string_lossy().to_string(),
});
}
} }
} }