feat(voice): add iOS VAD runtime support

This commit is contained in:
Edison Jwa
2026-05-21 20:51:45 +09:00
parent 171baf6e41
commit 6af4ecab0f
73 changed files with 11529 additions and 1249 deletions
+739 -42
View File
@@ -38,7 +38,7 @@ flutter_rust_bridge::frb_generated_boilerplate!(
default_rust_auto_opaque = RustAutoOpaqueMoi,
);
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_VERSION: &str = "2.12.0";
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = 1322894465;
pub(crate) const FLUTTER_RUST_BRIDGE_CODEGEN_CONTENT_HASH: i32 = -1835973251;
// Section: executor
@@ -82,6 +82,41 @@ fn wire__crate__api__add_bookmark_impl(
},
)
}
fn wire__crate__api__audio_processing_stats_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
data_len_: i32,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "audio_processing_stats",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let message = unsafe {
flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(
ptr_,
rust_vec_len_,
data_len_,
)
};
let mut deserializer =
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
deserializer.end();
move |context| async move {
transform_result_sse::<_, crate::BridgeError>(
(move || async move {
let output_ok = crate::api::audio_processing_stats().await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__audio_stats_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
@@ -261,6 +296,43 @@ fn wire__crate__api__disconnect_impl(
},
)
}
fn wire__crate__api__enable_audio_debug_wav_dump_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
data_len_: i32,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "enable_audio_debug_wav_dump",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let message = unsafe {
flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(
ptr_,
rust_vec_len_,
data_len_,
)
};
let mut deserializer =
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
let api_enabled = <bool>::sse_decode(&mut deserializer);
deserializer.end();
move |context| async move {
transform_result_sse::<_, crate::BridgeError>(
(move || async move {
let output_ok =
crate::api::enable_audio_debug_wav_dump(api_enabled).await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__events_stream_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
@@ -495,6 +567,37 @@ fn wire__crate__api__handle_interruption_ended_impl(
},
)
}
fn wire__crate__api__handle_media_services_reset_impl(
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
data_len_: i32,
) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_sync::<flutter_rust_bridge::for_generated::SseCodec, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "handle_media_services_reset",
port: None,
mode: flutter_rust_bridge::for_generated::FfiCallMode::Sync,
},
move || {
let message = unsafe {
flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(
ptr_,
rust_vec_len_,
data_len_,
)
};
let mut deserializer =
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
deserializer.end();
transform_result_sse::<_, ()>((move || {
let output_ok = Result::<_, ()>::Ok({
crate::api::handle_media_services_reset();
})?;
Ok(output_ok)
})())
},
)
}
fn wire__crate__api__handle_route_change_impl(
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
@@ -516,10 +619,11 @@ fn wire__crate__api__handle_route_change_impl(
};
let mut deserializer =
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
let api_route = <crate::api::BridgeAudioRoute>::sse_decode(&mut deserializer);
deserializer.end();
transform_result_sse::<_, ()>((move || {
let output_ok = Result::<_, ()>::Ok({
crate::api::handle_route_change();
crate::api::handle_route_change(api_route);
})?;
Ok(output_ok)
})())
@@ -734,6 +838,43 @@ fn wire__crate__api__ptt_descriptor_impl(
},
)
}
fn wire__crate__api__set_audio_processing_config_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
data_len_: i32,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "set_audio_processing_config",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let message = unsafe {
flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(
ptr_,
rust_vec_len_,
data_len_,
)
};
let mut deserializer =
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
let api_config =
<crate::api::BridgeAudioProcessingConfig>::sse_decode(&mut deserializer);
deserializer.end();
move |context| async move {
transform_result_sse::<_, crate::BridgeError>(
(move || async move {
let output_ok = crate::api::set_audio_processing_config(api_config).await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__set_hard_mute_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
@@ -806,6 +947,43 @@ fn wire__crate__api__set_input_muted_impl(
},
)
}
fn wire__crate__api__set_ios_voice_processing_mode_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
data_len_: i32,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "set_ios_voice_processing_mode",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let message = unsafe {
flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(
ptr_,
rust_vec_len_,
data_len_,
)
};
let mut deserializer =
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
let api_mode =
<crate::api::BridgeIosVoiceProcessingMode>::sse_decode(&mut deserializer);
deserializer.end();
move |context| async move {
transform_result_sse::<_, crate::BridgeError>(
(move || async move {
let output_ok = crate::api::set_ios_voice_processing_mode(api_mode).await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__set_network_state_impl(
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
@@ -1056,6 +1234,42 @@ fn wire__crate__api__set_transmit_mode_impl(
},
)
}
fn wire__crate__api__set_vad_model_path_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
rust_vec_len_: i32,
data_len_: i32,
) {
FLUTTER_RUST_BRIDGE_HANDLER.wrap_async::<flutter_rust_bridge::for_generated::SseCodec, _, _, _>(
flutter_rust_bridge::for_generated::TaskInfo {
debug_name: "set_vad_model_path",
port: Some(port_),
mode: flutter_rust_bridge::for_generated::FfiCallMode::Normal,
},
move || {
let message = unsafe {
flutter_rust_bridge::for_generated::Dart2RustMessageSse::from_wire(
ptr_,
rust_vec_len_,
data_len_,
)
};
let mut deserializer =
flutter_rust_bridge::for_generated::SseDeserializer::new(message);
let api_path = <String>::sse_decode(&mut deserializer);
deserializer.end();
move |context| async move {
transform_result_sse::<_, crate::BridgeError>(
(move || async move {
let output_ok = crate::api::set_vad_model_path(api_path).await?;
Ok(output_ok)
})()
.await,
)
}
},
)
}
fn wire__crate__api__snapshot_impl(
port_: flutter_rust_bridge::for_generated::MessagePort,
ptr_: flutter_rust_bridge::for_generated::PlatformGeneralizedUint8ListPtr,
@@ -1236,6 +1450,117 @@ impl SseDecode for bool {
}
}
impl SseDecode for crate::api::BridgeAudioBackend {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut inner = <i32>::sse_decode(deserializer);
return match inner {
0 => crate::api::BridgeAudioBackend::PlatformVoiceProcessing,
1 => crate::api::BridgeAudioBackend::Sonora,
2 => crate::api::BridgeAudioBackend::WebrtcApm,
3 => crate::api::BridgeAudioBackend::Noop,
_ => unreachable!("Invalid variant for BridgeAudioBackend: {}", inner),
};
}
}
impl SseDecode for crate::api::BridgeAudioProcessingConfig {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut var_route = <crate::api::BridgeAudioRoute>::sse_decode(deserializer);
let mut var_iosMode = <crate::api::BridgeIosVoiceProcessingMode>::sse_decode(deserializer);
let mut var_processingBackend = <crate::api::BridgeAudioBackend>::sse_decode(deserializer);
let mut var_vadBackend = <crate::api::BridgeVadBackend>::sse_decode(deserializer);
let mut var_aec = <crate::api::BridgeEffectOwner>::sse_decode(deserializer);
let mut var_ns = <crate::api::BridgeEffectOwner>::sse_decode(deserializer);
let mut var_agc = <crate::api::BridgeEffectOwner>::sse_decode(deserializer);
let mut var_hpfEnabled = <bool>::sse_decode(deserializer);
let mut var_limiterEnabled = <bool>::sse_decode(deserializer);
let mut var_vadHangoverMs = <u32>::sse_decode(deserializer);
let mut var_vadPreRollMs = <u32>::sse_decode(deserializer);
let mut var_vadMinTxMs = <u32>::sse_decode(deserializer);
let mut var_debugWavDumpEnabled = <bool>::sse_decode(deserializer);
return crate::api::BridgeAudioProcessingConfig {
route: var_route,
ios_mode: var_iosMode,
processing_backend: var_processingBackend,
vad_backend: var_vadBackend,
aec: var_aec,
ns: var_ns,
agc: var_agc,
hpf_enabled: var_hpfEnabled,
limiter_enabled: var_limiterEnabled,
vad_hangover_ms: var_vadHangoverMs,
vad_pre_roll_ms: var_vadPreRollMs,
vad_min_tx_ms: var_vadMinTxMs,
debug_wav_dump_enabled: var_debugWavDumpEnabled,
};
}
}
impl SseDecode for crate::api::BridgeAudioProcessingStats {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut var_inputDbfs = <f32>::sse_decode(deserializer);
let mut var_renderDbfs = <f32>::sse_decode(deserializer);
let mut var_processedDbfs = <f32>::sse_decode(deserializer);
let mut var_vadProbability = <f32>::sse_decode(deserializer);
let mut var_vadActive = <bool>::sse_decode(deserializer);
let mut var_transmitting = <bool>::sse_decode(deserializer);
let mut var_vadBackend = <crate::api::BridgeVadBackend>::sse_decode(deserializer);
let mut var_vadFallbackActive = <bool>::sse_decode(deserializer);
let mut var_processingBackend = <crate::api::BridgeAudioBackend>::sse_decode(deserializer);
let mut var_iosVoiceProcessingMode =
<crate::api::BridgeIosVoiceProcessingMode>::sse_decode(deserializer);
let mut var_audioRoute = <crate::api::BridgeAudioRoute>::sse_decode(deserializer);
let mut var_actualSampleRateHz = <u32>::sse_decode(deserializer);
let mut var_actualIoBufferFrames = <u32>::sse_decode(deserializer);
let mut var_inputOverruns = <u64>::sse_decode(deserializer);
let mut var_outputUnderruns = <u64>::sse_decode(deserializer);
let mut var_callbackXruns = <u64>::sse_decode(deserializer);
let mut var_clippedSamples = <u64>::sse_decode(deserializer);
let mut var_sonoraEnabled = <bool>::sse_decode(deserializer);
let mut var_platformVoiceProcessingEnabled = <bool>::sse_decode(deserializer);
return crate::api::BridgeAudioProcessingStats {
input_dbfs: var_inputDbfs,
render_dbfs: var_renderDbfs,
processed_dbfs: var_processedDbfs,
vad_probability: var_vadProbability,
vad_active: var_vadActive,
transmitting: var_transmitting,
vad_backend: var_vadBackend,
vad_fallback_active: var_vadFallbackActive,
processing_backend: var_processingBackend,
ios_voice_processing_mode: var_iosVoiceProcessingMode,
audio_route: var_audioRoute,
actual_sample_rate_hz: var_actualSampleRateHz,
actual_io_buffer_frames: var_actualIoBufferFrames,
input_overruns: var_inputOverruns,
output_underruns: var_outputUnderruns,
callback_xruns: var_callbackXruns,
clipped_samples: var_clippedSamples,
sonora_enabled: var_sonoraEnabled,
platform_voice_processing_enabled: var_platformVoiceProcessingEnabled,
};
}
}
impl SseDecode for crate::api::BridgeAudioRoute {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut inner = <i32>::sse_decode(deserializer);
return match inner {
0 => crate::api::BridgeAudioRoute::Speaker,
1 => crate::api::BridgeAudioRoute::Earpiece,
2 => crate::api::BridgeAudioRoute::WiredHeadset,
3 => crate::api::BridgeAudioRoute::BluetoothHfp,
4 => crate::api::BridgeAudioRoute::BluetoothA2dp,
5 => crate::api::BridgeAudioRoute::Unknown,
_ => unreachable!("Invalid variant for BridgeAudioRoute: {}", inner),
};
}
}
impl SseDecode for crate::api::BridgeAudioStats {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
@@ -1275,13 +1600,13 @@ impl SseDecode for crate::api::BridgeChannel {
let mut var_parent = <u64>::sse_decode(deserializer);
let mut var_name = <String>::sse_decode(deserializer);
let mut var_order = <i64>::sse_decode(deserializer);
let mut var_has_password = <bool>::sse_decode(deserializer);
let mut var_hasPassword = <bool>::sse_decode(deserializer);
return crate::api::BridgeChannel {
id: var_id,
parent: var_parent,
name: var_name,
order: var_order,
has_password: var_has_password,
has_password: var_hasPassword,
};
}
}
@@ -1292,22 +1617,37 @@ impl SseDecode for crate::api::BridgeClient {
let mut var_id = <u64>::sse_decode(deserializer);
let mut var_channel = <u64>::sse_decode(deserializer);
let mut var_name = <String>::sse_decode(deserializer);
let mut var_input_muted = <bool>::sse_decode(deserializer);
let mut var_output_muted = <bool>::sse_decode(deserializer);
let mut var_is_speaking = <bool>::sse_decode(deserializer);
let mut var_inputMuted = <bool>::sse_decode(deserializer);
let mut var_outputMuted = <bool>::sse_decode(deserializer);
let mut var_isSpeaking = <bool>::sse_decode(deserializer);
let mut var_isServerQuery = <bool>::sse_decode(deserializer);
return crate::api::BridgeClient {
id: var_id,
channel: var_channel,
name: var_name,
input_muted: var_input_muted,
output_muted: var_output_muted,
is_speaking: var_is_speaking,
input_muted: var_inputMuted,
output_muted: var_outputMuted,
is_speaking: var_isSpeaking,
is_server_query: var_isServerQuery,
};
}
}
impl SseDecode for crate::api::BridgeEffectOwner {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut inner = <i32>::sse_decode(deserializer);
return match inner {
0 => crate::api::BridgeEffectOwner::Platform,
1 => crate::api::BridgeEffectOwner::Sonora,
2 => crate::api::BridgeEffectOwner::WebrtcApm,
3 => crate::api::BridgeEffectOwner::Conservative,
4 => crate::api::BridgeEffectOwner::Off,
_ => unreachable!("Invalid variant for BridgeEffectOwner: {}", inner),
};
}
}
impl SseDecode for crate::BridgeError {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
@@ -1455,6 +1795,21 @@ impl SseDecode for crate::api::BridgeEvent {
}
}
impl SseDecode for crate::api::BridgeIosVoiceProcessingMode {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut inner = <i32>::sse_decode(deserializer);
return match inner {
0 => crate::api::BridgeIosVoiceProcessingMode::PlatformVoiceProcessing,
1 => crate::api::BridgeIosVoiceProcessingMode::SonoraExperimental,
_ => unreachable!(
"Invalid variant for BridgeIosVoiceProcessingMode: {}",
inner
),
};
}
}
impl SseDecode for crate::api::BridgeNetworkState {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
@@ -1516,6 +1871,21 @@ impl SseDecode for crate::api::BridgeTransmitMode {
}
}
impl SseDecode for crate::api::BridgeVadBackend {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
let mut inner = <i32>::sse_decode(deserializer);
return match inner {
0 => crate::api::BridgeVadBackend::SileroOnnx,
1 => crate::api::BridgeVadBackend::TenVad,
2 => crate::api::BridgeVadBackend::WebrtcVad,
3 => crate::api::BridgeVadBackend::EnergyDebug,
4 => crate::api::BridgeVadBackend::Disabled,
_ => unreachable!("Invalid variant for BridgeVadBackend: {}", inner),
};
}
}
impl SseDecode for crate::api::BridgeVoiceJoinErrorCode {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_decode(deserializer: &mut flutter_rust_bridge::for_generated::SseDeserializer) -> Self {
@@ -1712,32 +2082,39 @@ fn pde_ffi_dispatcher_primary_impl(
// Codec=Pde (Serialization + dispatch), see doc to use other codecs
match func_id {
1 => wire__crate__api__add_bookmark_impl(port, ptr, rust_vec_len, data_len),
2 => wire__crate__api__audio_stats_impl(port, ptr, rust_vec_len, data_len),
3 => wire__crate__api__bridge_init_impl(port, ptr, rust_vec_len, data_len),
4 => wire__crate__api__connect_impl(port, ptr, rust_vec_len, data_len),
5 => wire__crate__api__delete_bookmark_impl(port, ptr, rust_vec_len, data_len),
6 => wire__crate__api__disconnect_impl(port, ptr, rust_vec_len, data_len),
7 => wire__crate__api__events_stream_impl(port, ptr, rust_vec_len, data_len),
9 => wire__crate__api__get_ptt_binding_impl(port, ptr, rust_vec_len, data_len),
10 => wire__crate__api__get_release_tail_ms_impl(port, ptr, rust_vec_len, data_len),
11 => wire__crate__api__get_transmit_mode_impl(port, ptr, rust_vec_len, data_len),
15 => wire__crate__api__init_storage_impl(port, ptr, rust_vec_len, data_len),
16 => wire__crate__api__is_connected_impl(port, ptr, rust_vec_len, data_len),
17 => wire__crate__api__list_bookmarks_impl(port, ptr, rust_vec_len, data_len),
19 => wire__crate__api__move_to_channel_impl(port, ptr, rust_vec_len, data_len),
20 => wire__crate__api__ptt_descriptor_impl(port, ptr, rust_vec_len, data_len),
21 => wire__crate__api__set_hard_mute_impl(port, ptr, rust_vec_len, data_len),
22 => wire__crate__api__set_input_muted_impl(port, ptr, rust_vec_len, data_len),
24 => wire__crate__api__set_output_gain_impl(port, ptr, rust_vec_len, data_len),
25 => wire__crate__api__set_output_muted_impl(port, ptr, rust_vec_len, data_len),
26 => wire__crate__api__set_ptt_impl(port, ptr, rust_vec_len, data_len),
27 => wire__crate__api__set_ptt_binding_impl(port, ptr, rust_vec_len, data_len),
28 => wire__crate__api__set_release_tail_ms_impl(port, ptr, rust_vec_len, data_len),
29 => wire__crate__api__set_transmit_mode_impl(port, ptr, rust_vec_len, data_len),
30 => wire__crate__api__snapshot_impl(port, ptr, rust_vec_len, data_len),
31 => wire__crate__api__update_bookmark_impl(port, ptr, rust_vec_len, data_len),
32 => wire__crate__api__voice_join_impl(port, ptr, rust_vec_len, data_len),
33 => wire__crate__api__voice_leave_impl(port, ptr, rust_vec_len, data_len),
2 => wire__crate__api__audio_processing_stats_impl(port, ptr, rust_vec_len, data_len),
3 => wire__crate__api__audio_stats_impl(port, ptr, rust_vec_len, data_len),
4 => wire__crate__api__bridge_init_impl(port, ptr, rust_vec_len, data_len),
5 => wire__crate__api__connect_impl(port, ptr, rust_vec_len, data_len),
6 => wire__crate__api__delete_bookmark_impl(port, ptr, rust_vec_len, data_len),
7 => wire__crate__api__disconnect_impl(port, ptr, rust_vec_len, data_len),
8 => wire__crate__api__enable_audio_debug_wav_dump_impl(port, ptr, rust_vec_len, data_len),
9 => wire__crate__api__events_stream_impl(port, ptr, rust_vec_len, data_len),
11 => wire__crate__api__get_ptt_binding_impl(port, ptr, rust_vec_len, data_len),
12 => wire__crate__api__get_release_tail_ms_impl(port, ptr, rust_vec_len, data_len),
13 => wire__crate__api__get_transmit_mode_impl(port, ptr, rust_vec_len, data_len),
18 => wire__crate__api__init_storage_impl(port, ptr, rust_vec_len, data_len),
19 => wire__crate__api__is_connected_impl(port, ptr, rust_vec_len, data_len),
20 => wire__crate__api__list_bookmarks_impl(port, ptr, rust_vec_len, data_len),
22 => wire__crate__api__move_to_channel_impl(port, ptr, rust_vec_len, data_len),
23 => wire__crate__api__ptt_descriptor_impl(port, ptr, rust_vec_len, data_len),
24 => wire__crate__api__set_audio_processing_config_impl(port, ptr, rust_vec_len, data_len),
25 => wire__crate__api__set_hard_mute_impl(port, ptr, rust_vec_len, data_len),
26 => wire__crate__api__set_input_muted_impl(port, ptr, rust_vec_len, data_len),
27 => {
wire__crate__api__set_ios_voice_processing_mode_impl(port, ptr, rust_vec_len, data_len)
}
29 => wire__crate__api__set_output_gain_impl(port, ptr, rust_vec_len, data_len),
30 => wire__crate__api__set_output_muted_impl(port, ptr, rust_vec_len, data_len),
31 => wire__crate__api__set_ptt_impl(port, ptr, rust_vec_len, data_len),
32 => wire__crate__api__set_ptt_binding_impl(port, ptr, rust_vec_len, data_len),
33 => wire__crate__api__set_release_tail_ms_impl(port, ptr, rust_vec_len, data_len),
34 => wire__crate__api__set_transmit_mode_impl(port, ptr, rust_vec_len, data_len),
35 => wire__crate__api__set_vad_model_path_impl(port, ptr, rust_vec_len, data_len),
36 => wire__crate__api__snapshot_impl(port, ptr, rust_vec_len, data_len),
37 => wire__crate__api__update_bookmark_impl(port, ptr, rust_vec_len, data_len),
38 => wire__crate__api__voice_join_impl(port, ptr, rust_vec_len, data_len),
39 => wire__crate__api__voice_leave_impl(port, ptr, rust_vec_len, data_len),
_ => unreachable!(),
}
}
@@ -1750,18 +2127,136 @@ fn pde_ffi_dispatcher_sync_impl(
) -> flutter_rust_bridge::for_generated::WireSyncRust2DartSse {
// Codec=Pde (Serialization + dispatch), see doc to use other codecs
match func_id {
8 => wire__crate__api__export_diagnostics_impl(ptr, rust_vec_len, data_len),
12 => wire__crate__api__handle_interruption_began_impl(ptr, rust_vec_len, data_len),
13 => wire__crate__api__handle_interruption_ended_impl(ptr, rust_vec_len, data_len),
14 => wire__crate__api__handle_route_change_impl(ptr, rust_vec_len, data_len),
18 => wire__crate__api__log_file_path_str_impl(ptr, rust_vec_len, data_len),
23 => wire__crate__api__set_network_state_impl(ptr, rust_vec_len, data_len),
10 => wire__crate__api__export_diagnostics_impl(ptr, rust_vec_len, data_len),
14 => wire__crate__api__handle_interruption_began_impl(ptr, rust_vec_len, data_len),
15 => wire__crate__api__handle_interruption_ended_impl(ptr, rust_vec_len, data_len),
16 => wire__crate__api__handle_media_services_reset_impl(ptr, rust_vec_len, data_len),
17 => wire__crate__api__handle_route_change_impl(ptr, rust_vec_len, data_len),
21 => wire__crate__api__log_file_path_str_impl(ptr, rust_vec_len, data_len),
28 => wire__crate__api__set_network_state_impl(ptr, rust_vec_len, data_len),
_ => unreachable!(),
}
}
// Section: rust2dart
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::BridgeAudioBackend {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
match self {
Self::PlatformVoiceProcessing => 0.into_dart(),
Self::Sonora => 1.into_dart(),
Self::WebrtcApm => 2.into_dart(),
Self::Noop => 3.into_dart(),
_ => unreachable!(),
}
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive
for crate::api::BridgeAudioBackend
{
}
impl flutter_rust_bridge::IntoIntoDart<crate::api::BridgeAudioBackend>
for crate::api::BridgeAudioBackend
{
fn into_into_dart(self) -> crate::api::BridgeAudioBackend {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::BridgeAudioProcessingConfig {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
[
self.route.into_into_dart().into_dart(),
self.ios_mode.into_into_dart().into_dart(),
self.processing_backend.into_into_dart().into_dart(),
self.vad_backend.into_into_dart().into_dart(),
self.aec.into_into_dart().into_dart(),
self.ns.into_into_dart().into_dart(),
self.agc.into_into_dart().into_dart(),
self.hpf_enabled.into_into_dart().into_dart(),
self.limiter_enabled.into_into_dart().into_dart(),
self.vad_hangover_ms.into_into_dart().into_dart(),
self.vad_pre_roll_ms.into_into_dart().into_dart(),
self.vad_min_tx_ms.into_into_dart().into_dart(),
self.debug_wav_dump_enabled.into_into_dart().into_dart(),
]
.into_dart()
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive
for crate::api::BridgeAudioProcessingConfig
{
}
impl flutter_rust_bridge::IntoIntoDart<crate::api::BridgeAudioProcessingConfig>
for crate::api::BridgeAudioProcessingConfig
{
fn into_into_dart(self) -> crate::api::BridgeAudioProcessingConfig {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::BridgeAudioProcessingStats {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
[
self.input_dbfs.into_into_dart().into_dart(),
self.render_dbfs.into_into_dart().into_dart(),
self.processed_dbfs.into_into_dart().into_dart(),
self.vad_probability.into_into_dart().into_dart(),
self.vad_active.into_into_dart().into_dart(),
self.transmitting.into_into_dart().into_dart(),
self.vad_backend.into_into_dart().into_dart(),
self.vad_fallback_active.into_into_dart().into_dart(),
self.processing_backend.into_into_dart().into_dart(),
self.ios_voice_processing_mode.into_into_dart().into_dart(),
self.audio_route.into_into_dart().into_dart(),
self.actual_sample_rate_hz.into_into_dart().into_dart(),
self.actual_io_buffer_frames.into_into_dart().into_dart(),
self.input_overruns.into_into_dart().into_dart(),
self.output_underruns.into_into_dart().into_dart(),
self.callback_xruns.into_into_dart().into_dart(),
self.clipped_samples.into_into_dart().into_dart(),
self.sonora_enabled.into_into_dart().into_dart(),
self.platform_voice_processing_enabled
.into_into_dart()
.into_dart(),
]
.into_dart()
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive
for crate::api::BridgeAudioProcessingStats
{
}
impl flutter_rust_bridge::IntoIntoDart<crate::api::BridgeAudioProcessingStats>
for crate::api::BridgeAudioProcessingStats
{
fn into_into_dart(self) -> crate::api::BridgeAudioProcessingStats {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::BridgeAudioRoute {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
match self {
Self::Speaker => 0.into_dart(),
Self::Earpiece => 1.into_dart(),
Self::WiredHeadset => 2.into_dart(),
Self::BluetoothHfp => 3.into_dart(),
Self::BluetoothA2dp => 4.into_dart(),
Self::Unknown => 5.into_dart(),
_ => unreachable!(),
}
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::api::BridgeAudioRoute {}
impl flutter_rust_bridge::IntoIntoDart<crate::api::BridgeAudioRoute>
for crate::api::BridgeAudioRoute
{
fn into_into_dart(self) -> crate::api::BridgeAudioRoute {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::BridgeAudioStats {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
@@ -1841,6 +2336,27 @@ impl flutter_rust_bridge::IntoIntoDart<crate::api::BridgeClient> for crate::api:
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::BridgeEffectOwner {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
match self {
Self::Platform => 0.into_dart(),
Self::Sonora => 1.into_dart(),
Self::WebrtcApm => 2.into_dart(),
Self::Conservative => 3.into_dart(),
Self::Off => 4.into_dart(),
_ => unreachable!(),
}
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::api::BridgeEffectOwner {}
impl flutter_rust_bridge::IntoIntoDart<crate::api::BridgeEffectOwner>
for crate::api::BridgeEffectOwner
{
fn into_into_dart(self) -> crate::api::BridgeEffectOwner {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::BridgeError {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
match self {
@@ -1973,6 +2489,27 @@ impl flutter_rust_bridge::IntoIntoDart<crate::api::BridgeEvent> for crate::api::
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::BridgeIosVoiceProcessingMode {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
match self {
Self::PlatformVoiceProcessing => 0.into_dart(),
Self::SonoraExperimental => 1.into_dart(),
_ => unreachable!(),
}
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive
for crate::api::BridgeIosVoiceProcessingMode
{
}
impl flutter_rust_bridge::IntoIntoDart<crate::api::BridgeIosVoiceProcessingMode>
for crate::api::BridgeIosVoiceProcessingMode
{
fn into_into_dart(self) -> crate::api::BridgeIosVoiceProcessingMode {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::BridgeNetworkState {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
match self {
@@ -2060,6 +2597,27 @@ impl flutter_rust_bridge::IntoIntoDart<crate::api::BridgeTransmitMode>
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::BridgeVadBackend {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
match self {
Self::SileroOnnx => 0.into_dart(),
Self::TenVad => 1.into_dart(),
Self::WebrtcVad => 2.into_dart(),
Self::EnergyDebug => 3.into_dart(),
Self::Disabled => 4.into_dart(),
_ => unreachable!(),
}
}
}
impl flutter_rust_bridge::for_generated::IntoDartExceptPrimitive for crate::api::BridgeVadBackend {}
impl flutter_rust_bridge::IntoIntoDart<crate::api::BridgeVadBackend>
for crate::api::BridgeVadBackend
{
fn into_into_dart(self) -> crate::api::BridgeVadBackend {
self
}
}
// Codec=Dco (DartCObject based), see doc to use other codecs
impl flutter_rust_bridge::IntoDart for crate::api::BridgeVoiceJoinErrorCode {
fn into_dart(self) -> flutter_rust_bridge::for_generated::DartAbi {
match self {
@@ -2165,6 +2723,91 @@ impl SseEncode for bool {
}
}
impl SseEncode for crate::api::BridgeAudioBackend {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<i32>::sse_encode(
match self {
crate::api::BridgeAudioBackend::PlatformVoiceProcessing => 0,
crate::api::BridgeAudioBackend::Sonora => 1,
crate::api::BridgeAudioBackend::WebrtcApm => 2,
crate::api::BridgeAudioBackend::Noop => 3,
_ => {
unimplemented!("");
}
},
serializer,
);
}
}
impl SseEncode for crate::api::BridgeAudioProcessingConfig {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<crate::api::BridgeAudioRoute>::sse_encode(self.route, serializer);
<crate::api::BridgeIosVoiceProcessingMode>::sse_encode(self.ios_mode, serializer);
<crate::api::BridgeAudioBackend>::sse_encode(self.processing_backend, serializer);
<crate::api::BridgeVadBackend>::sse_encode(self.vad_backend, serializer);
<crate::api::BridgeEffectOwner>::sse_encode(self.aec, serializer);
<crate::api::BridgeEffectOwner>::sse_encode(self.ns, serializer);
<crate::api::BridgeEffectOwner>::sse_encode(self.agc, serializer);
<bool>::sse_encode(self.hpf_enabled, serializer);
<bool>::sse_encode(self.limiter_enabled, serializer);
<u32>::sse_encode(self.vad_hangover_ms, serializer);
<u32>::sse_encode(self.vad_pre_roll_ms, serializer);
<u32>::sse_encode(self.vad_min_tx_ms, serializer);
<bool>::sse_encode(self.debug_wav_dump_enabled, serializer);
}
}
impl SseEncode for crate::api::BridgeAudioProcessingStats {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<f32>::sse_encode(self.input_dbfs, serializer);
<f32>::sse_encode(self.render_dbfs, serializer);
<f32>::sse_encode(self.processed_dbfs, serializer);
<f32>::sse_encode(self.vad_probability, serializer);
<bool>::sse_encode(self.vad_active, serializer);
<bool>::sse_encode(self.transmitting, serializer);
<crate::api::BridgeVadBackend>::sse_encode(self.vad_backend, serializer);
<bool>::sse_encode(self.vad_fallback_active, serializer);
<crate::api::BridgeAudioBackend>::sse_encode(self.processing_backend, serializer);
<crate::api::BridgeIosVoiceProcessingMode>::sse_encode(
self.ios_voice_processing_mode,
serializer,
);
<crate::api::BridgeAudioRoute>::sse_encode(self.audio_route, serializer);
<u32>::sse_encode(self.actual_sample_rate_hz, serializer);
<u32>::sse_encode(self.actual_io_buffer_frames, serializer);
<u64>::sse_encode(self.input_overruns, serializer);
<u64>::sse_encode(self.output_underruns, serializer);
<u64>::sse_encode(self.callback_xruns, serializer);
<u64>::sse_encode(self.clipped_samples, serializer);
<bool>::sse_encode(self.sonora_enabled, serializer);
<bool>::sse_encode(self.platform_voice_processing_enabled, serializer);
}
}
impl SseEncode for crate::api::BridgeAudioRoute {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<i32>::sse_encode(
match self {
crate::api::BridgeAudioRoute::Speaker => 0,
crate::api::BridgeAudioRoute::Earpiece => 1,
crate::api::BridgeAudioRoute::WiredHeadset => 2,
crate::api::BridgeAudioRoute::BluetoothHfp => 3,
crate::api::BridgeAudioRoute::BluetoothA2dp => 4,
crate::api::BridgeAudioRoute::Unknown => 5,
_ => {
unimplemented!("");
}
},
serializer,
);
}
}
impl SseEncode for crate::api::BridgeAudioStats {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
@@ -2209,6 +2852,25 @@ impl SseEncode for crate::api::BridgeClient {
}
}
impl SseEncode for crate::api::BridgeEffectOwner {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<i32>::sse_encode(
match self {
crate::api::BridgeEffectOwner::Platform => 0,
crate::api::BridgeEffectOwner::Sonora => 1,
crate::api::BridgeEffectOwner::WebrtcApm => 2,
crate::api::BridgeEffectOwner::Conservative => 3,
crate::api::BridgeEffectOwner::Off => 4,
_ => {
unimplemented!("");
}
},
serializer,
);
}
}
impl SseEncode for crate::BridgeError {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
@@ -2340,6 +3002,22 @@ impl SseEncode for crate::api::BridgeEvent {
}
}
impl SseEncode for crate::api::BridgeIosVoiceProcessingMode {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<i32>::sse_encode(
match self {
crate::api::BridgeIosVoiceProcessingMode::PlatformVoiceProcessing => 0,
crate::api::BridgeIosVoiceProcessingMode::SonoraExperimental => 1,
_ => {
unimplemented!("");
}
},
serializer,
);
}
}
impl SseEncode for crate::api::BridgeNetworkState {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
@@ -2404,6 +3082,25 @@ impl SseEncode for crate::api::BridgeTransmitMode {
}
}
impl SseEncode for crate::api::BridgeVadBackend {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {
<i32>::sse_encode(
match self {
crate::api::BridgeVadBackend::SileroOnnx => 0,
crate::api::BridgeVadBackend::TenVad => 1,
crate::api::BridgeVadBackend::WebrtcVad => 2,
crate::api::BridgeVadBackend::EnergyDebug => 3,
crate::api::BridgeVadBackend::Disabled => 4,
_ => {
unimplemented!("");
}
},
serializer,
);
}
}
impl SseEncode for crate::api::BridgeVoiceJoinErrorCode {
// Codec=Sse (Serialization based), see doc to use other codecs
fn sse_encode(self, serializer: &mut flutter_rust_bridge::for_generated::SseSerializer) {