Merge branch 'tazz4843:master' into fix/progress-callback-crash

This commit is contained in:
Roman Steiner 2025-02-28 17:26:42 +01:00 committed by GitHub
commit 4acdc92236
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -419,20 +419,15 @@ 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 n_segments = whisper_rs_sys::whisper_full_n_segments_from_state(state); let text = whisper_rs_sys::whisper_full_get_segment_text_from_state(state, n_new);
let s0 = n_segments - n_new;
//let user_data = user_data as *mut Box<dyn FnMut(SegmentCallbackData)>;
for i in s0..n_segments {
let text = whisper_rs_sys::whisper_full_get_segment_text_from_state(state, i);
let text = CStr::from_ptr(text); let text = CStr::from_ptr(text);
let t0 = whisper_rs_sys::whisper_full_get_segment_t0_from_state(state, i); let t0 = whisper_rs_sys::whisper_full_get_segment_t0_from_state(state, n_new);
let t1 = whisper_rs_sys::whisper_full_get_segment_t1_from_state(state, i); let t1 = whisper_rs_sys::whisper_full_get_segment_t1_from_state(state, n_new);
match text.to_str() { match text.to_str() {
Ok(n) => user_data(SegmentCallbackData { Ok(n) => user_data(SegmentCallbackData {
segment: i, segment: n_new + 1,
start_timestamp: t0, start_timestamp: t0,
end_timestamp: t1, end_timestamp: t1,
text: n.to_string(), text: n.to_string(),
@ -441,7 +436,6 @@ impl<'a, 'b> FullParams<'a, 'b> {
} }
} }
} }
}
match closure.into() { match closure.into() {
Some(closure) => { Some(closure) => {
@ -488,25 +482,19 @@ 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 n_segments = whisper_rs_sys::whisper_full_n_segments_from_state(state); let text = whisper_rs_sys::whisper_full_get_segment_text_from_state(state, n_new);
let s0 = n_segments - n_new;
//let user_data = user_data as *mut Box<dyn FnMut(SegmentCallbackData)>;
for i in s0..n_segments {
let text = whisper_rs_sys::whisper_full_get_segment_text_from_state(state, i);
let text = CStr::from_ptr(text); let text = CStr::from_ptr(text);
let t0 = whisper_rs_sys::whisper_full_get_segment_t0_from_state(state, i); let t0 = whisper_rs_sys::whisper_full_get_segment_t0_from_state(state, n_new);
let t1 = whisper_rs_sys::whisper_full_get_segment_t1_from_state(state, i); let t1 = whisper_rs_sys::whisper_full_get_segment_t1_from_state(state, n_new);
user_data(SegmentCallbackData { user_data(SegmentCallbackData {
segment: i, segment: n_new,
start_timestamp: t0, start_timestamp: t0,
end_timestamp: t1, end_timestamp: t1,
text: text.to_string_lossy().to_string(), text: text.to_string_lossy().to_string(),
}); });
} }
} }
}
match closure.into() { match closure.into() {
Some(closure) => { Some(closure) => {