Skip to content

Commit a125e88

Browse files
committed
Extract register_callbacks as a function
1 parent e235133 commit a125e88

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

bindings/ruby/ext/ruby_whisper.cpp

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,26 @@ static VALUE ruby_whisper_initialize(int argc, VALUE *argv, VALUE self) {
296296
return self;
297297
}
298298

299+
static void register_callbacks(ruby_whisper_params * rwp, VALUE * self) {
300+
if (!NIL_P(rwp->new_segment_callback_container->callback) || 0 != RARRAY_LEN(rwp->new_segment_callback_container->callbacks)) {
301+
rwp->new_segment_callback_container->context = self;
302+
rwp->params.new_segment_callback = new_segment_callback;
303+
rwp->params.new_segment_callback_user_data = rwp->new_segment_callback_container;
304+
}
305+
306+
if (!NIL_P(rwp->progress_callback_container->callback) || 0 != RARRAY_LEN(rwp->progress_callback_container->callbacks)) {
307+
rwp->progress_callback_container->context = self;
308+
rwp->params.progress_callback = progress_callback;
309+
rwp->params.progress_callback_user_data = rwp->progress_callback_container;
310+
}
311+
312+
if (!NIL_P(rwp->abort_callback_container->callback) || 0 != RARRAY_LEN(rwp->abort_callback_container->callbacks)) {
313+
rwp->abort_callback_container->context = self;
314+
rwp->params.abort_callback = abort_callback;
315+
rwp->params.abort_callback_user_data = rwp->abort_callback_container;
316+
}
317+
}
318+
299319
/*
300320
* transcribe a single file
301321
* can emit to a block results
@@ -416,23 +436,7 @@ static VALUE ruby_whisper_transcribe(int argc, VALUE *argv, VALUE self) {
416436
rwp->params.encoder_begin_callback_user_data = &is_aborted;
417437
}
418438

419-
if (!NIL_P(rwp->new_segment_callback_container->callback) || 0 != RARRAY_LEN(rwp->new_segment_callback_container->callbacks)) {
420-
rwp->new_segment_callback_container->context = &self;
421-
rwp->params.new_segment_callback = new_segment_callback;
422-
rwp->params.new_segment_callback_user_data = rwp->new_segment_callback_container;
423-
}
424-
425-
if (!NIL_P(rwp->progress_callback_container->callback) || 0 != RARRAY_LEN(rwp->progress_callback_container->callbacks)) {
426-
rwp->progress_callback_container->context = &self;
427-
rwp->params.progress_callback = progress_callback;
428-
rwp->params.progress_callback_user_data = rwp->progress_callback_container;
429-
}
430-
431-
if (!NIL_P(rwp->abort_callback_container->callback) || 0 != RARRAY_LEN(rwp->abort_callback_container->callbacks)) {
432-
rwp->abort_callback_container->context = &self;
433-
rwp->params.abort_callback = abort_callback;
434-
rwp->params.abort_callback_user_data = rwp->abort_callback_container;
435-
}
439+
register_callbacks(rwp, &self);
436440

437441
if (whisper_full_parallel(rw->context, rwp->params, pcmf32.data(), pcmf32.size(), 1) != 0) {
438442
fprintf(stderr, "failed to process audio\n");

0 commit comments

Comments
 (0)