Skip to content

Commit a0c25aa

Browse files
Address review feedback from original PR #457
- Break circular import between native_functions.dart and dart_bridge_vad.dart by moving RacVadResultStruct into ffi_types.dart (where every other FFI struct lives). native_functions.dart no longer needs to import the VAD bridge. - Remove dead NativeFunctions.sttResultFree entry. The STT transcription path runs inside Isolate.run(...) and resolves rac_stt_result_free with its own inline lookup (isolates can't see main-isolate statics), so the cached main-isolate entry was never reachable. Left a short comment in its place explaining why.
1 parent 6b5f227 commit a0c25aa

3 files changed

Lines changed: 20 additions & 19 deletions

File tree

sdk/runanywhere-flutter/packages/runanywhere/lib/native/dart_bridge_vad.dart

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -329,15 +329,3 @@ class VADSpeechEndedEvent extends VADActivityEvent {
329329

330330
const VADSpeechEndedEvent({required this.energy});
331331
}
332-
333-
/// FFI struct for VAD result (matches rac_vad_result_t)
334-
final class RacVadResultStruct extends Struct {
335-
@Int32()
336-
external int isSpeech;
337-
338-
@Float()
339-
external double energy;
340-
341-
@Float()
342-
external double speechProbability;
343-
}

sdk/runanywhere-flutter/packages/runanywhere/lib/native/ffi_types.dart

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1039,6 +1039,18 @@ base class RacVadOnnxResultStruct extends Struct {
10391039
external double probability;
10401040
}
10411041

1042+
/// VAD result struct matching rac_vad_result_t
1043+
base class RacVadResultStruct extends Struct {
1044+
@Int32()
1045+
external int isSpeech;
1046+
1047+
@Float()
1048+
external double energy;
1049+
1050+
@Float()
1051+
external double speechProbability;
1052+
}
1053+
10421054
// =============================================================================
10431055
// VLM API Types (from rac_vlm_types.h)
10441056
// =============================================================================

sdk/runanywhere-flutter/packages/runanywhere/lib/native/native_functions.dart

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import 'dart:ffi';
1212
import 'package:ffi/ffi.dart';
1313
import 'package:runanywhere/native/ffi_types.dart';
1414
import 'package:runanywhere/native/platform_loader.dart';
15-
import 'package:runanywhere/native/dart_bridge_vad.dart' as vad;
1615

1716
/// Cached native function pointers for the RACommons library.
1817
///
@@ -87,9 +86,11 @@ abstract class NativeFunctions {
8786
_lib.lookupFunction<Int32 Function(RacHandle), int Function(RacHandle)>(
8887
'rac_stt_component_cleanup');
8988

90-
static final void Function(Pointer<RacSttResultStruct>) sttResultFree =
91-
_lib.lookupFunction<Void Function(Pointer<RacSttResultStruct>),
92-
void Function(Pointer<RacSttResultStruct>)>('rac_stt_result_free');
89+
// Note: rac_stt_result_free is intentionally NOT cached here. The STT
90+
// transcription path runs inside Isolate.run(...), which cannot access
91+
// main-isolate static state — `_transcribeInIsolate` in dart_bridge_stt.dart
92+
// performs its own inline lookup so each spawned isolate resolves the
93+
// symbol once. A main-isolate cache entry would be dead code.
9394

9495
static final void Function(RacHandle) sttDestroy =
9596
_lib.lookupFunction<Void Function(RacHandle), void Function(RacHandle)>(
@@ -177,19 +178,19 @@ abstract class NativeFunctions {
177178
RacHandle,
178179
Pointer<Float>,
179180
int,
180-
Pointer<vad.RacVadResultStruct>,
181+
Pointer<RacVadResultStruct>,
181182
) vadProcess = _lib.lookupFunction<
182183
Int32 Function(
183184
RacHandle,
184185
Pointer<Float>,
185186
IntPtr,
186-
Pointer<vad.RacVadResultStruct>,
187+
Pointer<RacVadResultStruct>,
187188
),
188189
int Function(
189190
RacHandle,
190191
Pointer<Float>,
191192
int,
192-
Pointer<vad.RacVadResultStruct>,
193+
Pointer<RacVadResultStruct>,
193194
)>('rac_vad_component_process');
194195

195196
static final void Function(RacHandle) vadDestroy =

0 commit comments

Comments
 (0)