sdk/Vxc.h

Classes

Name
structvx_message_base
structvx_req_base
structvx_resp_base
structvx_evt_base
structvx_state_buddy_contact
structvx_state_buddy
structvx_state_buddy_group
structvx_participant
Channel participant.
structvx_state_participant
State participant.
structvx_state_session
State session.
structvx_state_sessiongroup
State session group.
structvx_state_account
State account.
structvx_state_connector
State connector.
structvx_channel
Channel struct.
structvx_voice_font
Voice font struct.
structvx_block_rule
structvx_auto_accept_rule
structvx_user_channel
structvx_connectivity_test_result
test_type - Enumeration that defines the test performed (for values, see appendix ?15.8).
structvx_account
structvx_device
structvx_buddy
structvx_group
structvx_name_value_pair
structvx_conversation
structvx_stat_sample
structvx_stat_thread
structvx_system_stats
structvxa_capture_device_stats_t
Get statistics that are useful for debugging audio capture issues.
structvxa_render_device_stats_t
Get statistics that are useful for debugging audio render issues.
structvx_vxd
The Vivox eXtended Data (VXD) that is received.
structvx_tts_utterance
Text-to-speech utterance.
structvx_tts_voice
Text-to-speech voice.

Types

Name
enumvx_attempt_stun { attempt_stun_unspecified = 0, attempt_stun_on = 1, attempt_stun_off = 2}
A type of STUN probe.
enumvx_connector_mode { connector_mode_normal = 0, connector_mode_legacy = 1}
A type of API mode.
enumvx_session_handle_type { session_handle_type_unique = 0, session_handle_type_legacy = 1, session_handle_type_heirarchical_numeric = 2, session_handle_type_heirarchical_unique = 3}
A type of API mode.
enumvx_log_type { log_to_none = 0, log_to_file = 1, log_to_callback = 2, log_to_file_and_callback = 3}
A type of logging for the application.
enumvx_message_type { msg_none = 0, msg_request = 1, msg_response = 2, msg_event = 3}
Used as a run time type indicator for all messages passed between the application and SDK.
enumvx_sessiongroup_recording_control_type { VX_SESSIONGROUP_RECORDING_CONTROL_STOP = 0, VX_SESSIONGROUP_RECORDING_CONTROL_START = 1, VX_SESSIONGROUP_RECORDING_CONTROL_FLUSH_TO_FILE = 2}
enumvx_sessiongroup_audio_injection_control_type { VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_STOP = 0, vx_sessiongroup_audio_injection_control_stop = VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_STOP, VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_START = 1, vx_sessiongroup_audio_injection_control_start = VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_START, VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_RESTART = 2, vx_sessiongroup_audio_injection_control_restart = VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_RESTART, VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_MIN = VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_STOP, vx_sessiongroup_audio_injection_control_min = vx_sessiongroup_audio_injection_control_stop, VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_MAX = VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_RESTART, vx_sessiongroup_audio_injection_control_max = vx_sessiongroup_audio_injection_control_restart}
enumvx_sessiongroup_playback_control_type { VX_SESSIONGROUP_PLAYBACK_CONTROL_STOP = 0, VX_SESSIONGROUP_PLAYBACK_CONTROL_START = 1, VX_SESSIONGROUP_PLAYBACK_CONTROL_PAUSE = 3, VX_SESSIONGROUP_PLAYBACK_CONTROL_UNPAUSE = 4}
enumvx_sessiongroup_playback_mode { VX_SESSIONGROUP_PLAYBACK_MODE_NORMAL = 0, VX_SESSIONGROUP_PLAYBACK_MODE_VOX = 1}
enumvx_control_communications_operation { vx_control_communications_operation_block = 0, vx_control_communications_operation_unblock = 1, vx_control_communications_operation_list = 2, vx_control_communications_operation_block_list = 2, vx_control_communications_operation_clear = 3, vx_control_communications_operation_clear_block_list = 3, vx_control_communications_operation_mute = 4, vx_control_communications_operation_unmute = 5, vx_control_communications_operation_mute_list = 6, vx_control_communications_operation_clear_mute_list = 7}
The methods in which communication can be controlled.
enumvx_media_type { media_type_none = 0, media_type_text = 1, media_type_audio = 2, media_type_video = 3, media_type_audiovideo = 4}
enumvx_termination_status { termination_status_none = 0, termination_status_busy = 1, termination_status_decline = 2}
enumvx_diagnostic_dump_level { diagnostic_dump_level_all = 0, diagnostic_dump_level_sessions = 1}
enumvx_media_ringback { media_ringback_none = 0, media_ringback_ringing = 1, media_ringback_busy = 3}
enumvx_channel_type { channel_type_normal = 0, channel_type_positional = 2}
enumvx_channel_mode { channel_mode_none = 0, channel_mode_normal = 1, channel_mode_presentation = 2, channel_mode_lecture = 3, channel_mode_open = 4, channel_mode_auditorium = 5}
enumvx_channel_search_type { channel_search_type_all = 0, channel_search_type_non_positional = 1, channel_search_type_positional = 2}
enumvx_channel_moderation_type { channel_moderation_type_all = 0, channel_moderation_type_current_user = 1}
enumvx_sessiongroup_type { sessiongroup_type_normal = 0, sessiongroup_type_playback = 1}
The type of the session group specified at session group creation time.
enumvx_participant_removed_reason { participant_left = 0, participant_timeout = 1, participant_kicked = 2, participant_banned = 3}
Indicates the reason why a participant was removed from a session.
enumvx_connection_state { connection_state_disconnected = 0, connection_state_connected = 1, connection_state_recovering = 3, connection_state_failed_to_recover = 4, connection_state_recovered = 5}
Indicates current network connection state.
enumvx_request_type { req_none = 0, req_connector_create = 1, req_connector_initiate_shutdown = 2, req_account_login = 3, req_account_logout = 4, req_account_set_login_properties = 5, req_sessiongroup_create = 6, req_sessiongroup_terminate = 7, req_sessiongroup_add_session = 8, req_sessiongroup_remove_session = 9, req_sessiongroup_set_focus = 10, req_sessiongroup_unset_focus = 11, req_sessiongroup_reset_focus = 12, req_sessiongroup_set_tx_session = 13, req_sessiongroup_set_tx_all_sessions = 14, req_sessiongroup_set_tx_no_session = 15, req_session_create = 16, req_session_media_connect = 18, req_session_media_disconnect = 19, req_session_terminate = 21, req_session_mute_local_speaker = 22, req_session_set_local_speaker_volume = 23, req_session_set_local_render_volume = 24, req_session_channel_invite_user = 25, req_session_set_participant_volume_for_me = 26, req_session_set_participant_mute_for_me = 27, req_session_set_3d_position = 28, req_session_set_voice_font = 29, req_account_channel_add_acl = 53, req_account_channel_remove_acl = 54, req_account_channel_get_acl = 55, req_channel_mute_user = 56, req_channel_ban_user = 57, req_channel_get_banned_users = 58, req_channel_kick_user = 59, req_channel_mute_all_users = 60, req_connector_mute_local_mic = 61, req_connector_mute_local_speaker = 62, req_connector_set_local_mic_volume = 63, req_connector_set_local_speaker_volume = 64, req_connector_get_local_audio_info = 65, req_account_buddy_set = 67, req_account_buddy_delete = 68, req_account_list_buddies_and_groups = 71, req_session_send_message = 72, req_account_set_presence = 73, req_account_send_subscription_reply = 74, req_session_send_notification = 75, req_account_create_block_rule = 76, req_account_delete_block_rule = 77, req_account_list_block_rules = 78, req_account_create_auto_accept_rule = 79, req_account_delete_auto_accept_rule = 80, req_account_list_auto_accept_rules = 81, req_account_update_account = 82, req_account_get_account = 83, req_account_send_sms = 84, req_aux_connectivity_info = 86, req_aux_get_render_devices = 87, req_aux_get_capture_devices = 88, req_aux_set_render_device = 89, req_aux_set_capture_device = 90, req_aux_get_mic_level = 91, req_aux_get_speaker_level = 92, req_aux_set_mic_level = 93, req_aux_set_speaker_level = 94, req_aux_render_audio_start = 95, req_aux_render_audio_stop = 96, req_aux_capture_audio_start = 97, req_aux_capture_audio_stop = 98, req_aux_global_monitor_keyboard_mouse = 99, req_aux_set_idle_timeout = 100, req_aux_create_account = 101, req_aux_reactivate_account = 102, req_aux_deactivate_account = 103, req_account_post_crash_dump = 104, req_aux_reset_password = 105, req_sessiongroup_set_session_3d_position = 106, req_account_get_session_fonts = 107, req_account_get_template_fonts = 108, req_aux_start_buffer_capture = 109, req_aux_play_audio_buffer = 110, req_sessiongroup_control_recording = 111, req_sessiongroup_control_playback = 112, req_sessiongroup_set_playback_options = 113, req_session_text_connect = 114, req_session_text_disconnect = 115, req_channel_set_lock_mode = 116, req_aux_render_audio_modify = 117, req_session_send_dtmf = 118, req_aux_set_vad_properties = 120, req_aux_get_vad_properties = 121, req_sessiongroup_control_audio_injection = 124, req_account_channel_change_owner = 125, req_account_send_user_app_data = 128, req_aux_diagnostic_state_dump = 129, req_account_web_call = 130, req_account_anonymous_login = 131, req_account_authtoken_login = 132, req_sessiongroup_get_stats = 133, req_account_send_message = 134, req_aux_notify_application_state_change = 135, req_account_control_communications = 136, req_session_archive_query = 137, req_account_archive_query = 138, req_session_transcription_control = 139, req_aux_get_derumbler_properties = 140, req_aux_set_derumbler_properties = 141, req_session_chat_history_query = 142, req_account_chat_history_query = 143, req_account_chat_history_get_last_read = 144, req_session_edit_message = 145, req_account_edit_message = 146, req_session_delete_message = 147, req_account_delete_message = 148, req_account_get_conversations = 149, req_account_chat_history_set_marker = 150, req_account_safe_voice_update_consent = 151, req_account_safe_voice_get_consent = 152, req_max = req_account_safe_voice_get_consent + 1}
The set of requests that can be issued.
enumvx_response_type { resp_none = 0, resp_connector_create = 1, resp_connector_initiate_shutdown = 2, resp_account_login = 3, resp_account_logout = 4, resp_account_set_login_properties = 5, resp_sessiongroup_create = 6, resp_sessiongroup_terminate = 7, resp_sessiongroup_add_session = 8, resp_sessiongroup_remove_session = 9, resp_sessiongroup_set_focus = 10, resp_sessiongroup_unset_focus = 11, resp_sessiongroup_reset_focus = 12, resp_sessiongroup_set_tx_session = 13, resp_sessiongroup_set_tx_all_sessions = 14, resp_sessiongroup_set_tx_no_session = 15, resp_session_create = 16, resp_session_media_connect = 18, resp_session_media_disconnect = 19, resp_session_terminate = 21, resp_session_mute_local_speaker = 22, resp_session_set_local_speaker_volume = 23, resp_session_set_local_render_volume = 24, resp_session_channel_invite_user = 25, resp_session_set_participant_volume_for_me = 26, resp_session_set_participant_mute_for_me = 27, resp_session_set_3d_position = 28, resp_session_set_voice_font = 29, resp_account_channel_get_list = 33, resp_account_channel_add_acl = 53, resp_account_channel_remove_acl = 54, resp_account_channel_get_acl = 55, resp_channel_mute_user = 56, resp_channel_ban_user = 57, resp_channel_get_banned_users = 58, resp_channel_kick_user = 59, resp_channel_mute_all_users = 60, resp_connector_mute_local_mic = 61, resp_connector_mute_local_speaker = 62, resp_connector_set_local_mic_volume = 63, resp_connector_set_local_speaker_volume = 64, resp_connector_get_local_audio_info = 65, resp_account_buddy_set = 67, resp_account_buddy_delete = 68, resp_account_list_buddies_and_groups = 71, resp_session_send_message = 72, resp_account_set_presence = 73, resp_account_send_subscription_reply = 74, resp_session_send_notification = 75, resp_account_create_block_rule = 76, resp_account_delete_block_rule = 77, resp_account_list_block_rules = 78, resp_account_create_auto_accept_rule = 79, resp_account_delete_auto_accept_rule = 80, resp_account_list_auto_accept_rules = 81, resp_account_update_account = 82, resp_account_get_account = 83, resp_account_send_sms = 84, resp_aux_connectivity_info = 86, resp_aux_get_render_devices = 87, resp_aux_get_capture_devices = 88, resp_aux_set_render_device = 89, resp_aux_set_capture_device = 90, resp_aux_get_mic_level = 91, resp_aux_get_speaker_level = 92, resp_aux_set_mic_level = 93, resp_aux_set_speaker_level = 94, resp_aux_render_audio_start = 95, resp_aux_render_audio_stop = 96, resp_aux_capture_audio_start = 97, resp_aux_capture_audio_stop = 98, resp_aux_global_monitor_keyboard_mouse = 99, resp_aux_set_idle_timeout = 100, resp_aux_create_account = 101, resp_aux_reactivate_account = 102, resp_aux_deactivate_account = 103, resp_account_post_crash_dump = 104, resp_aux_reset_password = 105, resp_sessiongroup_set_session_3d_position = 106, resp_account_get_session_fonts = 107, resp_account_get_template_fonts = 108, resp_aux_start_buffer_capture = 109, resp_aux_play_audio_buffer = 110, resp_sessiongroup_control_recording = 111, resp_sessiongroup_control_playback = 112, resp_sessiongroup_set_playback_options = 113, resp_session_text_connect = 114, resp_session_text_disconnect = 115, resp_channel_set_lock_mode = 116, resp_aux_render_audio_modify = 117, resp_session_send_dtmf = 118, resp_aux_set_vad_properties = 120, resp_aux_get_vad_properties = 121, resp_sessiongroup_control_audio_injection = 124, resp_account_channel_change_owner = 125, resp_account_send_user_app_data = 128, resp_aux_diagnostic_state_dump = 129, resp_account_web_call = 130, resp_account_anonymous_login = 131, resp_account_authtoken_login = 132, resp_sessiongroup_get_stats = 133, resp_account_send_message = 134, resp_aux_notify_application_state_change = 135, resp_account_control_communications = 136, resp_session_archive_query = 137, resp_account_archive_query = 138, resp_session_transcription_control = 139, resp_aux_get_derumbler_properties = 140, resp_aux_set_derumbler_properties = 141, resp_session_chat_history_query = 142, resp_account_chat_history_query = 143, resp_account_chat_history_get_last_read = 144, resp_session_edit_message = 145, resp_account_edit_message = 146, resp_session_delete_message = 147, resp_account_delete_message = 148, resp_account_get_conversations = 149, resp_account_chat_history_set_marker = 150, resp_account_safe_voice_update_consent = 151, resp_account_safe_voice_get_consent = 152, resp_max = resp_account_safe_voice_get_consent + 1}
Response types that are reported back to the calling app.
enumvx_event_type { evt_none = 0, evt_account_login_state_change = 2, evt_buddy_presence = 7, evt_subscription = 8, evt_session_notification = 9, evt_message = 10, evt_aux_audio_properties = 11, evt_buddy_changed = 15, evt_buddy_group_changed = 16, evt_buddy_and_group_list_changed = 17, evt_keyboard_mouse = 18, evt_idle_state_changed = 19, evt_media_stream_updated = 20, evt_text_stream_updated = 21, evt_sessiongroup_added = 22, evt_sessiongroup_removed = 23, evt_session_added = 24, evt_session_removed = 25, evt_participant_added = 26, evt_participant_removed = 27, evt_participant_updated = 28, evt_sessiongroup_playback_frame_played = 30, evt_session_updated = 31, evt_sessiongroup_updated = 32, evt_media_completion = 33, evt_server_app_data = 35, evt_user_app_data = 36, evt_network_message = 38, evt_voice_service_connection_state_changed = 39, evt_publication_state_changed = 40, evt_audio_device_hot_swap = 41, evt_user_to_user_message = 42, evt_session_archive_message = 43, evt_session_archive_query_end = 44, evt_account_archive_message = 45, evt_account_archive_query_end = 46, evt_account_send_message_failed = 47, evt_transcribed_message = 48, evt_tts_injection_started = 49, evt_tts_injection_ended = 50, evt_tts_injection_failed = 51, evt_stt_failed = 52, evt_connection_state_changed = 53, evt_presence_updated = 54, evt_session_edit_message = 55, evt_account_edit_message = 56, evt_session_delete_message = 57, evt_account_delete_message = 58, evt_max = evt_account_delete_message + 1}
Event types that are reported back to the calling app.
enumND_ERROR { ND_E_NO_ERROR = 0, ND_E_TEST_NOT_RUN = 1, ND_E_NO_INTERFACE = 2, ND_E_NO_INTERFACE_WITH_GATEWAY = 3, ND_E_NO_INTERFACE_WITH_ROUTE = 4, ND_E_TIMEOUT = 5, ND_E_CANT_ICMP = 6, ND_E_CANT_RESOLVE_VIVOX_UDP_SERVER = 7, ND_E_CANT_RESOLVE_ROOT_DNS_SERVER = 8, ND_E_CANT_CONVERT_LOCAL_IP_ADDRESS = 9, ND_E_CANT_CONTACT_STUN_SERVER_ON_UDP_PORT_3478 = 10, ND_E_CANT_CREATE_TCP_SOCKET = 11, ND_E_CANT_LOAD_ICMP_LIBRARY = 12, ND_E_CANT_FIND_SENDECHO2_PROCADDR = 13, ND_E_CANT_CONNECT_TO_ECHO_SERVER = 14, ND_E_ECHO_SERVER_LOGIN_SEND_FAILED = 15, ND_E_ECHO_SERVER_LOGIN_RECV_FAILED = 16, ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_STATUS = 17, ND_E_ECHO_SERVER_LOGIN_RESPONSE_FAILED_STATUS = 18, ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_SESSIONID = 19, ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_SIPPORT = 20, ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_AUDIORTP = 21, ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_AUDIORTCP = 22, ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_VIDEORTP = 23, ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_VIDEORTCP = 24, ND_E_ECHO_SERVER_CANT_ALLOCATE_SIP_SOCKET = 25, ND_E_ECHO_SERVER_CANT_ALLOCATE_MEDIA_SOCKET = 26, ND_E_ECHO_SERVER_SIP_UDP_SEND_FAILED = 27, ND_E_ECHO_SERVER_SIP_UDP_RECV_FAILED = 28, ND_E_ECHO_SERVER_SIP_TCP_SEND_FAILED = 29, ND_E_ECHO_SERVER_SIP_TCP_RECV_FAILED = 30, ND_E_ECHO_SERVER_SIP_NO_UDP_OR_TCP = 31, ND_E_ECHO_SERVER_SIP_NO_UDP = 32, ND_E_ECHO_SERVER_SIP_NO_TCP = 33, ND_E_ECHO_SERVER_SIP_MALFORMED_TCP_PACKET = 34, ND_E_ECHO_SERVER_SIP_UDP_DIFFERENT_LENGTH = 35, ND_E_ECHO_SERVER_SIP_UDP_DATA_DIFFERENT = 36, ND_E_ECHO_SERVER_SIP_TCP_PACKETS_DIFFERENT = 37, ND_E_ECHO_SERVER_SIP_TCP_PACKETS_DIFFERENT_SIZE = 38, ND_E_ECHO_SERVER_LOGIN_RECV_FAILED_TIMEOUT = 39, ND_E_ECHO_SERVER_TCP_SET_ASYNC_FAILED = 40, ND_E_ECHO_SERVER_UDP_SET_ASYNC_FAILED = 41, ND_E_ECHO_SERVER_CANT_RESOLVE_NAME = 42}
enumND_TEST_TYPE { ND_TEST_LOCATE_INTERFACE = 0, ND_TEST_PING_GATEWAY = 1, ND_TEST_DNS = 2, ND_TEST_STUN = 3, ND_TEST_ECHO = 4, ND_TEST_ECHO_SIP_FIRST_PORT = 5, ND_TEST_ECHO_SIP_FIRST_PORT_INVITE_REQUEST = 6, ND_TEST_ECHO_SIP_FIRST_PORT_INVITE_RESPONSE = 7, ND_TEST_ECHO_SIP_FIRST_PORT_REGISTER_REQUEST = 8, ND_TEST_ECHO_SIP_FIRST_PORT_REGISTER_RESPONSE = 9, ND_TEST_ECHO_SIP_SECOND_PORT = 10, ND_TEST_ECHO_SIP_SECOND_PORT_INVITE_REQUEST = 11, ND_TEST_ECHO_SIP_SECOND_PORT_INVITE_RESPONSE = 12, ND_TEST_ECHO_SIP_SECOND_PORT_REGISTER_REQUEST = 13, ND_TEST_ECHO_SIP_SECOND_PORT_REGISTER_RESPONSE = 14, ND_TEST_ECHO_MEDIA = 15, ND_TEST_ECHO_MEDIA_LARGE_PACKET = 16}
enumvx_session_answer_mode { mode_none = 0, mode_auto_answer = 1, mode_verify_answer = 2, mode_busy_answer = 3}
Determine how incoming calls are handled.
enumvx_buddy_management_mode { mode_auto_accept = 0, mode_auto_add = 1, mode_block = 2, mode_hide = 3, mode_application = 4}
enumvx_rule_type { rule_none = 0, rule_allow = 1, rule_block = 2, rule_hide = 3}
enumvx_font_type { type_none = 0, type_root = 1, type_user = 2}
enumvx_font_status { status_none = 0, status_free = 1, status_not_free = 2}
enumvx_subscription_type { subscription_presence = 0}
enumvx_notification_type { notification_not_typing = 0, notification_typing = 1, notification_hand_lowered = 2, notification_hand_raised = 3, notification_min = notification_not_typing, notification_max = notification_hand_raised}
enumvx_dtmf_type { dtmf_0 = 0, dtmf_1 = 1, dtmf_2 = 2, dtmf_3 = 3, dtmf_4 = 4, dtmf_5 = 5, dtmf_6 = 6, dtmf_7 = 7, dtmf_8 = 8, dtmf_9 = 9, dtmf_pound = 10, dtmf_star = 11, dtmf_A = 12, dtmf_B = 13, dtmf_C = 14, dtmf_D = 15, dtmf_max = dtmf_D}
enumvx_text_mode { text_mode_disabled = 0, text_mode_enabled = 1}
enumvx_channel_lock_mode { channel_unlock = 0, channel_lock = 1}
enumvx_mute_scope { mute_scope_all = 0, mute_scope_audio = 1, mute_scope_text = 2}
enumvx_recording_frame_type_t { VX_RECORDING_FRAME_TYPE_DELTA = 0, VX_RECORDING_FRAME_TYPE_CONTROL = 1}
Hold a recorded audio frame.
enumvx_audiosource_operation { op_none = 0, op_safeupdate = 1, op_delete = 2}
enumvx_aux_audio_properties_state { aux_audio_properties_none = 0}
enumvx_login_state_change_state { login_state_logged_out = 0, login_state_logged_in = 1, login_state_logging_in = 2, login_state_logging_out = 3, login_state_resetting = 4, login_state_error = 100}
enumvx_publication_state_change_state { publication_state_success = 0, publication_state_transient_error = 1, publication_state_permanent_error = 2}
enumvx_buddy_presence_state { buddy_presence_unknown = 0, buddy_presence_pending = 1, buddy_presence_online = 2, buddy_presence_busy = 3, buddy_presence_brb = 4, buddy_presence_away = 5, buddy_presence_onthephone = 6, buddy_presence_outtolunch = 7, buddy_presence_custom = 8, buddy_presence_online_slc = 9, buddy_presence_closed = 0, buddy_presence_offline = 0, buddy_presence_chat = 10, buddy_presence_extended_away = 11, buddy_presence_min = buddy_presence_unknown, buddy_presence_max = buddy_presence_extended_away}
enumvx_presence_state { presence_online = 0, presence_busy = 1, presence_brb = 2, presence_away = 3, presence_onthephone = 4, presence_offline = 5, presence_chat = 6, presence_extended_away = 7, presence_min = presence_online, presence_max = presence_extended_away}
enumvx_session_notification_state { session_notification_none = 0}
enumvx_message_state { message_none = 0}
enumvx_session_text_state { session_text_disconnected = 0, session_text_connected = 1, session_text_connecting = 2, session_text_disconnecting = 3}
enumvx_session_media_state { session_media_disconnected = 1, session_media_connected = 2, session_media_ringing = 3, session_media_connecting = 6, session_media_disconnecting = 7}
enumvx_participant_type { participant_user = 0, part_user = participant_user, participant_moderator = 1, part_moderator = participant_moderator, participant_owner = 2, part_focus = participant_owner}
enumorientation_type { orientation_default = 0, orientation_legacy = 1, orientation_vivox = 2}
enumvx_media_completion_type { media_completion_type_none = 0, aux_buffer_audio_capture = 1, aux_buffer_audio_render = 2, sessiongroup_audio_injection = 3}
enumvx_device_type { vx_device_type_specific_device = 0, vx_device_type_default_system = 1, vx_device_type_null = 2, vx_device_type_default_communication = 3}
The type of device.
enumvx_conversation_type { vx_conversation_channel = 0, vx_conversation_direct = 1}
enumvx_codec { vx_codec_siren7 = 0x2, vx_codec_siren14 = 0x4, vx_codec_opus8 = 0x10, vx_codec_opus40 = 0x20, vx_codec_opus57 = 0x40, vx_codec_opus72 = 0x80, VX_DEPRECATED_ENUM_GCC =(vx_codec_pcmu, 5.19) = 0x10}
The configured_codecs field in vx_req_connector_create is a mask of these constants.
enumvx_application_state_notification_type { vx_application_state_notification_type_before_background = 0, vx_application_state_notification_type_after_foreground = 1, vx_application_state_notification_type_periodic_background_idle = 2}
Indicates the state of the application.
enumVXA_ERROR_CODES { VXA_SUCCESS = 0, VXA_INVALID_PARAMETER = 1, VXA_DEVICE_DOES_NOT_EXIST = 2, VXA_INTERNAL_ERROR = 3, VXA_OUT_OF_MEMORY = 4, VXA_INVALID_STATE = 5, VXA_NO_MORE_DATA = 6, VXA_FEATURE_NOT_SUPPORTED = 7, VXA_MAX_DEVICES_EXCEEDED = 8, VXA_NO_BUFFERS_AVAILABLE = 9, VXA_ACCESS_DENIED = 10}
Error codes that are returned by the VXA subsystem.
enumVXA_CAPTURE_FLAGS { VXA_CAPTURE_OPEN_FLAG_USE_AEC = 0x00000001, VXA_CAPTURE_OPEN_FLAG_USE_AGC = 0x00000002}
Values passed when opening capture devices.
enumvx_channel_rolloff_curve_type { channel_rolloff_curve_type_none = 0, channel_rolloff_curve_type_inverse_distance_clamped = 1, channel_rolloff_curve_type_linear_distance_clamped = 2, channel_rolloff_curve_type_exponential_distance_clamped = 3}
Rolloff curve types to serve as the distance model for a positional channel.
enumvx_opus_vbr_mode { opus_mode_cbr = 0, opus_mode_lvbr = 1, opus_mode_vbr = 2}
Values for OPUS VBR mode.
enumvx_opus_bandwidth { opus_bandwidth_auto = 0, opus_bandwidth_nb = 1, opus_bandwidth_mb = 2, opus_bandwidth_wb = 3, opus_bandwidth_swb = 4, opus_bandwidth_fb = 5}
Values for OPUS bandwidth.
enumvx_crash_test_type { vx_crash_access_zero_pointer = 0, vx_crash_access_violation = 1, vx_crash_stack_overflow = 2, vx_crash_heap_corruption = 3}
Values for vx_crash_test( crash type ).
enumvx_path_id { path_cache_folder = 0}
The type of path used by the SDK.
enumvx_noise_suppression_level { noise_suppression_low = 0, noise_suppression_moderate = 1, noise_suppression_high = 2, noise_suppression_very_high = 3}
enumvx_tts_destination { tts_dest_remote_transmission = 0, tts_dest_local_playback = 1, tts_dest_remote_transmission_with_local_playback = 2, tts_dest_queued_remote_transmission = 3, tts_dest_queued_local_playback = 4, tts_dest_queued_remote_transmission_with_local_playback = 5, tts_dest_screen_reader = 6}
Text-to-speech (TTS) definitions.
enumvx_tts_status { tts_status_success = 0, tts_error_invalid_engine_type = -1001, tts_error_engine_allocation_failed = -1002, tts_error_not_supported = -1003, tts_error_max_characters_exceeded = -1004, tts_error_utterance_below_min_duration = -1005, tts_status_input_text_was_enqueued = -1006, tts_error_sdk_not_initialized = -1007, tts_error_destination_queue_is_full = -1008, tts_status_enqueue_not_necessary = -1009, tts_error_utterance_not_found = -1010, tts_error_manager_not_found = -1011, tts_error_invalid_argument = -1012, tts_error_internal = -1013}
Status codes that are returned by the text-to-speech subsystem.
enumvx_tts_engine_type { tts_engine_vivox_default = 0}
Text-to-speech engine types.
typedef char *VX_COOKIE
A request cookie type.
typedef VX_COOKIEVX_HANDLE
A generic handle type for state objects (for example: accounts, connectors, sessions, or session groups).
typedef unsigned intVX_SDK_HANDLE
typedef time_tvx_time_t
typedef struct vx_message_basevx_message_base_t
typedef struct vx_req_basevx_req_base_t
typedef struct vx_resp_basevx_resp_base_t
typedef struct vx_evt_basevx_evt_base_t
typedef struct vx_state_buddy_contactvx_state_buddy_contact_t
typedef vx_state_buddy_contact_t *vx_state_buddy_contact_ref_t
typedef vx_state_buddy_contact_ref_t *vx_state_buddy_contact_list_t
typedef struct vx_state_buddyvx_state_buddy_t
typedef vx_state_buddy_t *vx_state_buddy_ref_t
typedef vx_state_buddy_ref_t *vx_state_buddy_list_t
typedef struct vx_state_buddy_groupvx_state_buddy_group_t
typedef vx_state_buddy_group_t *vx_state_buddy_group_ref_t
typedef vx_state_buddy_group_ref_t *vx_state_buddy_group_list_t
typedef struct vx_participantvx_participant_t
Channel participant.
typedef vx_participant_t *vx_participant_ref_t
Creates a participant list with the given size.
typedef vx_participant_ref_t *vx_participant_list_t
typedef struct vx_state_participantvx_state_participant_t
State participant.
typedef vx_state_participant_t *vx_state_participant_ref_t
Creates a state_participant list with the given size.
typedef vx_state_participant_ref_t *vx_state_participant_list_t
typedef struct vx_state_sessionvx_state_session_t
State session.
typedef vx_state_session_t *vx_state_session_ref_t
Creates a state_session list with the given size.
typedef vx_state_session_ref_t *vx_state_session_list_t
typedef struct vx_state_sessiongroupvx_state_sessiongroup_t
State session group.
typedef vx_state_sessiongroup_t *vx_state_sessiongroup_ref_t
Creates a state_sessiongroup list with the given size.
typedef vx_state_sessiongroup_ref_t *vx_state_sessiongroup_list_t
typedef struct vx_state_accountvx_state_account_t
State account.
typedef vx_state_account_t *vx_state_account_ref_t
Creates a state_account list with the given size.
typedef vx_state_account_ref_t *vx_state_account_list_t
typedef struct vx_state_connectorvx_state_connector_t
State connector.
typedef vx_state_connector_t *vx_state_connector_ref_t
Creates a state_connector list with the given size.
typedef vx_state_connector_ref_t *vx_state_connector_list_t
typedef struct vx_channelvx_channel_t
Channel struct.
typedef vx_channel_t *vx_channel_ref_t
typedef vx_channel_ref_t *vx_channel_list_t
typedef struct vx_voice_fontvx_voice_font_t
Voice font struct.
typedef vx_voice_font_t *vx_voice_font_ref_t
typedef vx_voice_font_ref_t *vx_voice_font_list_t
typedef struct vx_block_rulevx_block_rule_t
typedef vx_block_rule_t *vx_block_rule_ref_t
typedef vx_block_rule_ref_t *vx_block_rules_t
typedef struct vx_auto_accept_rulevx_auto_accept_rule_t
typedef vx_auto_accept_rule_t *vx_auto_accept_rule_ref_t
typedef vx_auto_accept_rule_ref_t *vx_auto_accept_rules_t
typedef struct vx_user_channelvx_user_channel_t
typedef vx_user_channel_t *vx_user_channel_ref_t
typedef vx_user_channel_ref_t *vx_user_channels_t
typedef struct vx_connectivity_test_resultvx_connectivity_test_result_t
test_type - Enumeration that defines the test performed (for values, see appendix ?15.8).
typedef vx_connectivity_test_result_t *vx_connectivity_test_result_ref_t
typedef vx_connectivity_test_result_ref_t *vx_connectivity_test_results_t
typedef struct vx_accountvx_account_t
typedef enum vx_device_typevx_device_type_t
The type of device.
typedef struct vx_devicevx_device_t
typedef vx_device_t *vx_device_ref_t
typedef vx_device_ref_t *vx_devices_t
typedef struct vx_buddyvx_buddy_t
typedef vx_buddy_t *vx_buddy_ref_t
typedef vx_buddy_ref_t *vx_buddy_list_t
typedef struct vx_groupvx_group_t
typedef vx_group_t *vx_group_ref_t
typedef vx_group_ref_t *vx_group_list_t
typedef struct vx_name_value_pairvx_name_value_pair_t
typedef vx_name_value_pair_t *vx_name_value_pair_ref_t
typedef vx_name_value_pair_ref_t *vx_name_value_pairs_t
typedef struct vx_conversationvx_conversation_t
typedef vx_conversation_t *vx_conversation_ref_t
typedef vx_conversation_ref_t *vx_conversation_list_t
typedef struct vx_stat_samplevx_stat_sample_t
typedef struct vx_stat_threadvx_stat_thread_t
typedef struct vx_system_statsvx_system_stats_t
typedef enum vx_application_state_notification_typevx_application_state_notification_type_t
Indicates the state of the application.
typedef intvxa_status_t
The common return code for vxa* methods.
typedef struct vxa_capture_device_stats_tvxa_capture_device_stats_t
Get statistics that are useful for debugging audio capture issues.
typedef struct vxa_render_device_stats_tvxa_render_device_stats_t
Get statistics that are useful for debugging audio render issues.
typedef enum vx_crash_test_typevx_crash_test_type_t
Values for vx_crash_test( crash type ).
typedef struct vx_vxdvx_vxd_t
The Vivox eXtended Data (VXD) that is received.
typedef unsigned intvx_tts_manager_id
typedef unsigned intvx_tts_utterance_id
typedef unsigned intvx_tts_voice_id
typedef struct vx_tts_utterance_implvx_tts_utterance_impl_t
typedef struct vx_tts_utterancevx_tts_utterance_t
Text-to-speech utterance.
typedef struct vx_tts_voicevx_tts_voice_t
Text-to-speech voice.

Functions

Name
VIVOXSDK_DLLEXPORT intvx_cookie_create(const char * value, VX_COOKIE * cookie)
Allocate and initialize a cookie.
VIVOXSDK_DLLEXPORT intvx_cookie_free(VX_COOKIE * cookie)
Free a cookie.
VIVOXSDK_DLLEXPORT intvx_state_buddy_contact_create(vx_state_buddy_contact_t ** contact)
VIVOXSDK_DLLEXPORT intvx_state_buddy_contact_free(vx_state_buddy_contact_t * contact)
VIVOXSDK_DLLEXPORT intvx_state_buddy_contact_list_create(int size, vx_state_buddy_contact_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_state_buddy_contact_list_free(vx_state_buddy_contact_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_state_buddy_create(vx_state_buddy_t ** buddy)
VIVOXSDK_DLLEXPORT intvx_state_buddy_free(vx_state_buddy_t * buddy)
VIVOXSDK_DLLEXPORT intvx_state_buddy_list_create(int size, vx_state_buddy_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_state_buddy_list_free(vx_state_buddy_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_state_buddy_group_create(vx_state_buddy_group_t ** group)
VIVOXSDK_DLLEXPORT intvx_state_buddy_group_free(vx_state_buddy_group_t * group)
VIVOXSDK_DLLEXPORT intvx_state_buddy_group_list_create(int size, vx_state_buddy_group_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_state_buddy_group_list_free(vx_state_buddy_group_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_participant_create(vx_participant_t ** participant)
VIVOXSDK_DLLEXPORT intvx_participant_free(vx_participant_t * participant)
VIVOXSDK_DLLEXPORT intvx_participant_list_create(int size, vx_participant_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_participant_list_free(vx_participant_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_state_participant_create(vx_state_participant_t ** state_participant)
VIVOXSDK_DLLEXPORT intvx_state_participant_free(vx_state_participant_t * state_participant)
VIVOXSDK_DLLEXPORT intvx_state_participant_list_create(int size, vx_state_participant_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_state_participant_list_free(vx_state_participant_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_state_session_create(vx_state_session_t ** state_session)
VIVOXSDK_DLLEXPORT intvx_state_session_free(vx_state_session_t * state_session)
VIVOXSDK_DLLEXPORT intvx_state_session_list_create(int size, vx_state_session_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_state_session_list_free(vx_state_session_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_state_sessiongroup_create(vx_state_sessiongroup_t ** state_sessiongroup)
VIVOXSDK_DLLEXPORT intvx_state_sessiongroup_free(vx_state_sessiongroup_t * state_sessiongroup)
VIVOXSDK_DLLEXPORT intvx_state_sessiongroup_list_create(int size, vx_state_sessiongroup_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_state_sessiongroup_list_free(vx_state_sessiongroup_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_state_account_create(vx_state_account_t ** state_account)
VIVOXSDK_DLLEXPORT intvx_state_account_free(vx_state_account_t * state_account)
VIVOXSDK_DLLEXPORT intvx_state_account_list_create(int size, vx_state_account_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_state_account_list_free(vx_state_account_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_state_connector_create(vx_state_connector_t ** state_connector)
VIVOXSDK_DLLEXPORT intvx_state_connector_free(vx_state_connector_t * state_connector)
VIVOXSDK_DLLEXPORT intvx_state_connector_list_create(int size, vx_state_connector_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_state_connector_list_free(vx_state_connector_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_channel_create(vx_channel_t ** channel)
VIVOXSDK_DLLEXPORT intvx_channel_free(vx_channel_t * channel)
VIVOXSDK_DLLEXPORT intvx_channel_list_create(int size, vx_channel_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_channel_list_free(vx_channel_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_voice_font_create(vx_voice_font_t ** channel)
VIVOXSDK_DLLEXPORT intvx_voice_font_free(vx_voice_font_t * channel)
VIVOXSDK_DLLEXPORT intvx_voice_font_list_create(int size, vx_voice_font_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_voice_font_list_free(vx_voice_font_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_string_list_create(int size, char *** list_out)
VIVOXSDK_DLLEXPORT intvx_string_list_free(char ** list)
VIVOXSDK_DLLEXPORT intvx_block_rule_create(vx_block_rule_t ** block_rule)
VIVOXSDK_DLLEXPORT intvx_block_rule_free(vx_block_rule_t * block_rule)
VIVOXSDK_DLLEXPORT intvx_block_rules_create(int size, vx_block_rules_t * list_out)
VIVOXSDK_DLLEXPORT intvx_block_rules_free(vx_block_rule_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_auto_accept_rule_create(vx_auto_accept_rule_t ** auto_accept_rule)
VIVOXSDK_DLLEXPORT intvx_auto_accept_rule_free(vx_auto_accept_rule_t * auto_accept_rule)
VIVOXSDK_DLLEXPORT intvx_auto_accept_rules_create(int size, vx_auto_accept_rules_t * list_out)
VIVOXSDK_DLLEXPORT intvx_auto_accept_rules_free(vx_auto_accept_rule_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_user_channel_create(vx_user_channel_t ** user_channel)
VIVOXSDK_DLLEXPORT intvx_user_channel_free(vx_user_channel_t * user_channel)
VIVOXSDK_DLLEXPORT intvx_user_channels_create(int size, vx_user_channels_t * list_out)
VIVOXSDK_DLLEXPORT intvx_user_channels_free(vx_user_channel_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_connectivity_test_result_create(vx_connectivity_test_result_t ** connectivity_test_result, ND_TEST_TYPE tt)
VIVOXSDK_DLLEXPORT intvx_connectivity_test_result_free(vx_connectivity_test_result_t * connectivity_test_result)
VIVOXSDK_DLLEXPORT intvx_connectivity_test_results_create(int size, vx_connectivity_test_results_t * list_out)
VIVOXSDK_DLLEXPORT intvx_connectivity_test_results_free(vx_connectivity_test_result_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_account_create(vx_account_t ** account)
VIVOXSDK_DLLEXPORT intvx_account_free(vx_account_t * account)
VIVOXSDK_DLLEXPORT intvx_device_create(vx_device_t ** device)
VIVOXSDK_DLLEXPORT intvx_device_free(vx_device_t * device)
VIVOXSDK_DLLEXPORT intvx_devices_create(int size, vx_devices_t * list_out)
VIVOXSDK_DLLEXPORT intvx_devices_free(vx_device_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_buddy_create(vx_buddy_t ** buddy)
VIVOXSDK_DLLEXPORT intvx_buddy_free(vx_buddy_t * buddy)
VIVOXSDK_DLLEXPORT intvx_buddy_list_create(int size, vx_buddy_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_buddy_list_free(vx_buddy_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_group_create(vx_group_t ** group)
VIVOXSDK_DLLEXPORT intvx_group_free(vx_group_t * group)
VIVOXSDK_DLLEXPORT intvx_group_list_create(int size, vx_group_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_group_list_free(vx_group_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_name_value_pair_create(vx_name_value_pair_t ** nvpair)
VIVOXSDK_DLLEXPORT intvx_name_value_pair_free(vx_name_value_pair_t * nvpair)
VIVOXSDK_DLLEXPORT intvx_name_value_pairs_create(int size, vx_name_value_pairs_t * list_out)
VIVOXSDK_DLLEXPORT intvx_name_value_pairs_free(vx_name_value_pair_t ** list, int size)
VIVOXSDK_DLLEXPORT intvx_conversation_create(vx_conversation_t ** conversation)
VIVOXSDK_DLLEXPORT intvx_conversation_free(vx_conversation_t * conversation)
VIVOXSDK_DLLEXPORT intvx_conversation_list_create(int size, vx_conversation_list_t * list_out)
VIVOXSDK_DLLEXPORT intvx_conversation_list_free(int size, vx_conversation_t ** list)
VIVOXSDK_DLLEXPORT char *vx_strdup(const char * )
Allocate string data to send to the SDK.
VIVOXSDK_DLLEXPORT intvx_free(char * )
Free string data returned to the application.
VIVOXSDK_DLLEXPORT intvx_unallocate(void * p)
VIVOXSDK_DLLEXPORT void *vx_allocate(size_t nBytes)
VIVOXSDK_DLLEXPORT void *vx_reallocate(void * p, size_t nBytes)
VIVOXSDK_DLLEXPORT void *vx_calloc(size_t num, size_t bytesPerElement)
VIVOXSDK_DLLEXPORT void *vx_allocate_aligned(size_t alignment, size_t size)
VIVOXSDK_DLLEXPORT intvx_unallocate_aligned(void * p)
VIVOXSDK_DLLEXPORT intvx_get_message(vx_message_base_t ** message)
The VxSDK polling function.
VIVOXSDK_DLLEXPORT intvx_issue_request(vx_req_base_t * request)
VIVOXSDK_DLLEXPORT intvx_issue_request2(vx_req_base_t * request)
Execute the given request.
VIVOXSDK_DLLEXPORT intvx_issue_request3(vx_req_base_t * request, int * request_count)
Execute the given request.
VIVOXSDK_DLLEXPORT intvx_request_to_xml(void * request, char ** xml)
Get the XML for the given request.
VIVOXSDK_DLLEXPORT vx_request_typevx_xml_to_request(const char * xml, void ** request, char ** error)
Get a request for the given XML string.
VIVOXSDK_DLLEXPORT intvx_response_to_xml(void * response, char ** xml)
Get the XML for the given response.
VIVOXSDK_DLLEXPORT vx_response_typevx_xml_to_response(const char * xml, void ** response, char ** error)
Get a response for the given XML string.
VIVOXSDK_DLLEXPORT intvx_event_to_xml(void * event, char ** xml)
Get the XML for the given event.
VIVOXSDK_DLLEXPORT vx_event_typevx_xml_to_event(const char * xml, void ** event, char ** error)
Get a event for the given XML string.
VIVOXSDK_DLLEXPORT vx_message_typevx_get_message_type(const char * xml)
Determine whether the XML refers to a request, response, or event.
VIVOXSDK_DLLEXPORT unsigned long longvx_get_time_ms(void )
Get Millisecond Counter.
VIVOXSDK_DLLEXPORT unsigned long longvx_get_time_milli_seconds(void )
Get Millisecond Counter.
VIVOXSDK_DLLEXPORT unsigned long longvx_get_time_micro_seconds(void )
Get Microsecond Counter.
VIVOXSDK_DLLEXPORT long longvx_sleep_milli_seconds(unsigned long long milli_seconds)
Sleep for the specified number of milliseconds.
VIVOXSDK_DLLEXPORT intvx_register_message_notification_handler(void(*)(void *) pf_handler, void * cookie)
Register a callback that is called when a message is placed in the queue.
VIVOXSDK_DLLEXPORT intvx_unregister_message_notification_handler(void(*)(void *) pf_handler, void * cookie)
Unregister a notification handler.
VIVOXSDK_DLLEXPORT vx_message_base_t *vx_wait_for_message(int msTimeout)
Block the caller until a message is available.
VIVOXSDK_DLLEXPORT intvx_register_logging_initialization(vx_log_type log_type, const char * log_folder, const char * log_filename_prefix, const char * log_filename_suffix, int log_level, void(*)(const char *source, const char *level, const char *message) pf_handler)
Register a callback that is called to initialize logging.
VIVOXSDK_DLLEXPORT char *vx_get_log_file_path(void )
VIVOXSDK_DLLEXPORT intvx_unregister_logging_handler(void(*)(void *) pf_handler, void * cookie)
Unregister the logging callback notification handler.
VIVOXSDK_DLLEXPORT intvx_create_account(const char * acct_mgmt_server, const char * admin_name, const char * admin_pw, const char * uname, const char * pw)
VIVOXSDK_DLLEXPORT intvx_get_crash_dump_count(void )
The number of crash dumps stored on disk.
VIVOXSDK_DLLEXPORT intvx_set_crash_dump_generation_enabled(int value)
Enable crash dump generation.
VIVOXSDK_DLLEXPORT intvx_get_crash_dump_generation(void )
Determine if crash dump generation is enabled.
VIVOXSDK_DLLEXPORT char *vx_read_crash_dump(int index)
Get the Base64-encoded crash dump information.
VIVOXSDK_DLLEXPORT time_tvx_get_crash_dump_timestamp(int index)
Get the timestamp of a crash.
VIVOXSDK_DLLEXPORT intvx_delete_crash_dump(int index)
Delete the crash dump.
VIVOXSDK_DLLEXPORT intvx_on_application_exit(void )
Some applications may need to call this routine before exiting.
VIVOXSDK_DLLEXPORT const char *vx_get_sdk_version_info(void )
Get the SDK version info.
VIVOXSDK_DLLEXPORT const char *vx_get_sdk_version_info_ex(void )
Get the SDK extended version info.
VIVOXSDK_DLLEXPORT intvx_apply_font_to_file(const char * fontDefinition, const char * inputFile, const char * outputFile)
Apply a Vivox voice font to a .wav file.
VIVOXSDK_DLLEXPORT intvx_apply_font_to_file_return_energy_ratio(const char * fontDefinition, const char * inputFile, const char * outputFile, double * energyRatio)
Apply a Vivox voice font to a .wav file and return the energy ratio (Output Energy/Input Energy).
VIVOXSDK_DLLEXPORT intvx_apply_font_to_vxz_file_return_energy_ratio(const char * fontDefinition, const char * inputFile, const char * outputFile, double * energyRatio)
Apply a Vivox voice font to a .vxz file and return the energy ratio (Output Energy/Input Energy)
VIVOXSDK_DLLEXPORT void *vx_copy_audioBuffer(void * audioBufferPtr)
Create a copy of the internal local audio buffer associated with the vx_req_aux_start_buffer_capture_t request/response.
VIVOXSDK_DLLEXPORT doublevx_get_audioBuffer_duration(void * audioBufferPtr)
Get the duration of the audio buffer in seconds.
VIVOXSDK_DLLEXPORT intvx_get_audioBuffer_sample_rate(void * audioBufferPtr)
Get the sample rate of the audio buffer.
VIVOXSDK_DLLEXPORT intvx_free_audioBuffer(void ** audioBufferPtr)
Free up all memory associated with an allocated Vivox audioBufferPtr.
VIVOXSDK_DLLEXPORT intvx_export_audioBuffer_to_pcm(void * audioBufferPtr, short * pcmBuffer, int maxSamples)
Export audio data in an audioBufferPtr to a memory buffer as PCM.
VIVOXSDK_DLLEXPORT intvx_export_audioBuffer_to_wav_file(void * audioBufferPtr, const char * outputFile)
Export audio data in an audioBufferPtr to a .wav file.
VIVOXSDK_DLLEXPORT intvx_export_audioBuffer_to_memory(void * audioBufferPtr, short ** audioBufferOut, int * nSamplesOut, int * sampleRateOut, int * nChannelsOut)
Export audio data in an audioBufferPtr to memory.
VIVOXSDK_DLLEXPORT intvx_set_out_of_process_server_address(const char * address, unsigned short port)
Set the default out of process server address.
VIVOXSDK_DLLEXPORT intvx_initialize(void )
VIVOXSDK_DLLEXPORT intvx_initialize3(vx_sdk_config_t * config, size_t config_size)
An application must call this API before calling any other Vivox API, except vx_get_default_config3();.
VIVOXSDK_DLLEXPORT intvx_is_initialized(void )
Check if the Vivox SDK was initialized with an vx_initialize3() call, and not yet uninitialized with an vx_uninitialize() call.
VIVOXSDK_DLLEXPORT intvx_get_default_config3(vx_sdk_config_t * config, size_t config_size)
An application must call this API before calling any other Vivox API.
VIVOXSDK_DLLEXPORT intvx_uninitialize(void )
An application must call this before exit.
VIVOXSDK_DLLEXPORT intvx_debug_call(void * )
VIVOXSDK_DLLEXPORT intvx_get_system_stats(vx_system_stats_t * system_stats)
Get statistics about various system internals.
VIVOXSDK_DLLEXPORT intvx_get_int_var(const char * var_name, int * p_value)
Get named variables.
VIVOXSDK_DLLEXPORT intvx_set_int_var(const char * var_name, int value)
Set named variables.
VIVOXSDK_DLLEXPORT intvx_destroy_message(vx_message_base_t * message)
Deallocate any message of any type.
VIVOXSDK_DLLEXPORT char *vx_debug_generate_token(const char * issuer, vx_time_t expiration, const char * vxa, unsigned long long serial, const char * subject, const char * from_uri, const char * to_uri, const unsigned char * key, size_t key_len)
Generate a Vivox Access Token.
VIVOXSDK_DLLEXPORT unsigned intvx_get_http(const char * url, unsigned int * response_code, char ** content, size_t * content_len, char ** content_type, size_t * content_type_len)
Synchronously download the contents of the specified URL with the GET method.
VIVOXSDK_DLLEXPORT intvx_free_http(char ** content, char ** content_type)
Free the memory allocated during the vx_get_http() call.
VIVOXSDK_DLLEXPORT char *vx_get_random_user_id(const char * prefix)
Get a random guest user ID with the given prefix.
VIVOXSDK_DLLEXPORT char *vx_get_random_user_id_ex(const char * prefix, const char * issuer)
Get a random guest user ID for the given issuer with the given prefix.
VIVOXSDK_DLLEXPORT char *vx_get_random_channel_uri(const char * prefix, const char * realm)
Get a random ephemeral channel ID with the given prefix for the specific realm.
VIVOXSDK_DLLEXPORT char *vx_get_random_channel_uri_ex(const char * prefix, const char * realm, const char * issuer)
Get a random ephemeral channel ID for the given issuer with the given prefix for the specific realm.
VIVOXSDK_DLLEXPORT char *vx_get_user_uri(const char * name, const char * realm, const char * issuer)
Generate the fully specified URI of a user with the given name for the given realm and issuer.
VIVOXSDK_DLLEXPORT char *vx_get_echo_channel_uri(const char * name, const char * realm, const char * issuer)
Generate the fully specified URI of an echo channel with the given name for the given realm and issuer.
VIVOXSDK_DLLEXPORT char *vx_get_general_channel_uri(const char * name, const char * realm, const char * issuer)
Generate the fully specified URI of a general non-positional channel with the given name for the given realm and issuer.
VIVOXSDK_DLLEXPORT char *vx_get_positional_channel_uri(const char * name, const char * realm, int max_range, int clamping_distance, double rolloff, vx_channel_rolloff_curve_type distance_model, const char * issuer)
Generate the fully specified URI of a positional channel with the given name and 3D properties for the given realm and issuer.
VIVOXSDK_DLLEXPORT char *vx_uri_to_string(int is_multitenant, const char * uri)
Return a textual representation of the compositional elements of a Vivox URI, suitable for logging.
VIVOXSDK_DLLEXPORT intvx_opus_set_bit_rate(int bits_per_second)
Set the bitrate for all OPUS encoders.
VIVOXSDK_DLLEXPORT intvx_opus_get_bit_rate(int * p_bits_per_second)
Get the current OPUS bitrate.
VIVOXSDK_DLLEXPORT intvx_opus_set_complexity(int complexity)
Set the complexity for all OPUS encoders.
VIVOXSDK_DLLEXPORT intvx_opus_get_complexity(int * p_complexity)
Get the current OPUS complexity.
VIVOXSDK_DLLEXPORT intvx_opus_set_vbr_mode(int vbr_mode)
Set the VBR mode for all OPUS encoders.
VIVOXSDK_DLLEXPORT intvx_opus_get_vbr_mode(int * p_vbr_mode)
Get the current OPUS VBR mode.
VIVOXSDK_DLLEXPORT intvx_opus_set_bandwidth(int bandwidth)
Set the bandwidth for all OPUS encoders.
VIVOXSDK_DLLEXPORT intvx_opus_get_bandwidth(int * p_bandwidth)
Get the current OPUS bandwidth.
VIVOXSDK_DLLEXPORT unsigned intvx_get_available_codecs_mask(void )
Get a mask for all available codecs (to be used as configured_codecs).
VIVOXSDK_DLLEXPORT unsigned intvx_get_default_codecs_mask(void )
Get a recommended default mask for available codecs (to be used as configured_codecs).
VIVOXSDK_DLLEXPORT intvx_get_dump_memory_interval(void )
Get the current period of the Memory Usage information dumping to logcat.
VIVOXSDK_DLLEXPORT intvx_cpumonitor_start(int interval, int report_interval)
Start the CPU load information dumping to logcat.
VIVOXSDK_DLLEXPORT intvx_cpumonitor_stop(void )
Stop the CPU load information dumping to logcat.
VIVOXSDK_DLLEXPORT intvx_cpumonitor_start_eater(int nthreads, int priority)
Start the requested number of tight loop threads with the requested priority.
VIVOXSDK_DLLEXPORT intvx_cpumonitor_stop_eater(void )
Stop all the CPU eater threads started with vx_cpumonitor_start_eater() call.
VIVOXSDK_DLLEXPORT intvx_crash_test(vx_crash_test_type_t crash_type)
Crash the program.
VIVOXSDK_DLLEXPORT intvx_set_message_rate_params(unsigned bucketSize, float messageSpeed, int fillBucket)
Change the API message rate parameters.
VIVOXSDK_DLLEXPORT intvx_set_default_message_rate_params(void )
Return the API message rate parameters to their default state.
VIVOXSDK_DLLEXPORT intvx_android_set_mic_mute(int mute)
Mute or unmute the mic on Android.
VIVOXSDK_DLLEXPORT intvx_internal_enable_debug_mode_disable_strict_checks(void )
Internal: enable debug mode and disable the strict parameter check of some requests.
VIVOXSDK_DLLEXPORT intvx_internal_disable_debug_mode_enable_strict_checks(void )
Internal: disable the debug mode enabled by vx_internal_enable_debug_mode_disable_strict_checks.
VIVOXSDK_DLLEXPORT intvx_is_access_token_well_formed(const char * access_token, char ** error)
Verify whether the passed access token is well-formed.
VIVOXSDK_DLLEXPORT intvx_vxd_send(VX_HANDLE session_handle, const char * data, size_t size)
Send VXD into the channel.
VIVOXSDK_DLLEXPORT intvx_vxd_recv(VX_HANDLE session_handle, vx_vxd_t ** vxd_ptr)
Receive VXD from the channel.
VIVOXSDK_DLLEXPORT intvx_vxd_destroy(vx_vxd_t * vxd)
Dispose of the VXD object returned by vx_vxd_recv().
VIVOXSDK_DLLEXPORT char *vx_get_path(unsigned int path_id)
Get a specific path of various files and folders used by the SDK.
VIVOXSDK_DLLEXPORT intvx_get_dynamic_voice_processing_switching_enabled(int * enabled)
Get the current value of the dynamic voice processing switching enabled setting.
VIVOXSDK_DLLEXPORT intvx_set_dynamic_voice_processing_switching_enabled(int enabled)
Enable and disable dynamic voice processing switching.
VIVOXSDK_DLLEXPORT intvx_get_ios_voice_processing_io_mode(int * mode)
Get the mode for the ios_voice_processing_io_mode configuration field.
VIVOXSDK_DLLEXPORT intvx_set_ios_voice_processing_io_mode(int mode)
Set the mode for the ios_voice_processing_io_mode configuration field.
VIVOXSDK_DLLEXPORT intvx_get_platform_aec_enabled(int * enabled)
Return an indication of whether platform-provided AEC is being used.
VIVOXSDK_DLLEXPORT intvx_set_platform_aec_enabled(int enabled)
Enable and disable platform-provided AEC.
VIVOXSDK_DLLEXPORT intvx_get_vivox_aec_enabled(int * enabled)
Get the internal AEC enabled/disabled state.
VIVOXSDK_DLLEXPORT intvx_set_vivox_aec_enabled(int enabled)
Enable or disable the SDK's internal AEC.
VIVOXSDK_DLLEXPORT intvx_get_noise_suppression_enabled(int * enabled)
Get the capture audio noise suppressor enabled/disabled state.
VIVOXSDK_DLLEXPORT intvx_get_noise_suppression_level(vx_noise_suppression_level * level)
Get the capture audio noise suppressor suppression level.
VIVOXSDK_DLLEXPORT intvx_set_noise_suppression_enabled(int enabled)
Enable or disable the SDK's capture audio noise suppressor.
VIVOXSDK_DLLEXPORT intvx_set_noise_suppression_level(vx_noise_suppression_level level)
Set the capture audio noise suppressor's suppression level.
VIVOXSDK_DLLEXPORT intvx_set_agc_enabled(int enabled)
Enable or disable the SDK's internal AGC.
VIVOXSDK_DLLEXPORT intvx_get_agc_enabled(int * enabled)
Get the internal AGC enabled/disabled state.
VIVOXSDK_DLLEXPORT intvx_set_volume_based_duplication_suppression_enabled(int enabled)
Enable or disable volume based audio duplication suppression.
VIVOXSDK_DLLEXPORT intvx_get_volume_based_duplication_suppression_enabled(int * enabled)
Get the internal state of the volume based audio duplication suppression.
VIVOXSDK_DLLEXPORT intvx_set_3d_channel_volume_protection_enabled(int enabled)
Enable or disable the SDK's internal volume protection for 3D channels.
VIVOXSDK_DLLEXPORT intvx_get_3d_channel_volume_protection_enabled(int * enabled)
Get the internal 3D channel volume protection state.
VIVOXSDK_DLLEXPORT intvx_set_audio_clipping_protector_enabled(int enabled)
Enable or disable the SDK's internal audio clipping protector (soft clipper).
VIVOXSDK_DLLEXPORT intvx_get_audio_clipping_protector_enabled(int * enabled)
Get the internal audio clipping protector enabled state.
VIVOXSDK_DLLEXPORT intvx_set_audio_clipping_protector_parameters(float minimum_threshold_db, float threshold_boost_slope)
Change the behavior of the SDK's internal audio clipping protector (soft clipper).
VIVOXSDK_DLLEXPORT intvx_get_audio_clipping_protector_parameters(float * minimum_threshold_db, float * threshold_boost_slope)
Get the internal audio clipping protector's parameters.
VIVOXSDK_DLLEXPORT vx_tts_statusvx_tts_initialize(vx_tts_engine_type engine_type, vx_tts_manager_id * tts_manager_id)
Initialize a new text-to-speech manager.
VIVOXSDK_DLLEXPORT vx_tts_statusvx_tts_get_voices(vx_tts_manager_id tts_manager_id, int * num_voices, vx_tts_voice_t ** voices)
Get the available voices for a text-to-speech manager.
VIVOXSDK_DLLEXPORT vx_tts_statusvx_tts_shutdown(vx_tts_manager_id * tts_manager_id)
Uninitialize and shut down a text-to-speech manager.
VIVOXSDK_DLLEXPORT const char *vx_get_tts_status_string(vx_tts_status status_code)
Return a textual representation of a text-to-speech status code.
VIVOXSDK_DLLEXPORT vx_tts_statusvx_tts_speak(vx_tts_manager_id tts_manager_id, vx_tts_voice_id voice_id, const char * input_text, vx_tts_destination tts_dest, vx_tts_utterance_id * utterance_id)
Convert the input text into speech and process the generated utterance on the selected destination.
VIVOXSDK_DLLEXPORT vx_tts_statusvx_tts_speak_to_buffer(vx_tts_manager_id tts_manager_id, vx_tts_voice_id voice_id, const char * input_text, vx_tts_utterance_t ** utterance)
Convert the input text into speech and return the generated utterance.
VIVOXSDK_DLLEXPORT vx_tts_statusvx_tts_destroy_utterance(vx_tts_manager_id tts_manager_id, vx_tts_utterance_t * utterance)
Destroy an utterance.
VIVOXSDK_DLLEXPORT vx_tts_statusvx_tts_cancel_utterance(vx_tts_manager_id tts_manager_id, vx_tts_utterance_id utterance_id)
Cancel playback of an ongoing or an enqueued text-to-speech message by its unique identifier.
VIVOXSDK_DLLEXPORT vx_tts_statusvx_tts_cancel_all_in_dest(vx_tts_manager_id tts_manager_id, vx_tts_destination tts_dest)
Cancel playback of ongoing and all enqueued text-to-speech messages in a destination.
VIVOXSDK_DLLEXPORT vx_tts_statusvx_tts_cancel_all(vx_tts_manager_id tts_manager_id)
Cancel playback for all ongoing and enqueued text-to-speech messages on all destinations.

Defines

Name
VIVOX_SDK_HAS_CRASH_REPORTING
VIVOX_SDK_HAS_VOICE_FONTS
VIVOX_SDK_HAS_GROUP_IM
VIVOX_SDK_HAS_MUTE_SCOPE
VIVOX_SDK_HAS_PARTICIPANT_TYPE
VIVOX_SDK_HAS_NETWORK_MESSAGE
VIVOX_SDK_HAS_AUX_DIAGNOSTIC_STATE
VIVOX_SDK_SESSION_RENDER_AUDIO_OBSOLETE
VIVOX_SDK_SESSION_GET_LOCAL_AUDIO_INFO_OBSOLETE
VIVOX_SDK_SESSION_MEDIA_RINGBACK_OBSOLETE
VIVOX_SDK_SESSION_CONNECT_OBSOLETE
VIVOX_SDK_EVT_SESSION_PARTICIPANT_LIST_OBSOLETE
VIVOX_SDK_HAS_INTEGRATED_PROXY
VIVOX_SDK_HAS_NO_CHANNEL_FOLDERS
VIVOX_SDK_HAS_NO_SCORE
VIVOX_SDK_HAS_GENERIC_APP_NOTIFICATIONS_ONLY
VIVOX_SDK_HAS_FRAME_TOTALS
VIVOX_SDK_NO_LEGACY_RECORDING
VIVOX_SDK_NO_IS_AD_PLAYING
VIVOX_SDK_HAS_ACCOUNT_SEND_MSG
VIVOX_SDK_HAS_PLC_STATS
VIVOX_SDK_HAS_DEVICE_ADDED_REMOVED
VIVOX_SDK_HAS_AUDIO_UNIT_CALLBACKS
VX_MEDIA_FLAGS_AUDIO
Participant media flags.
VX_MEDIA_FLAGS_TEXT
VX_GET_MESSAGE_NO_MESSAGE
VX_GET_MESSAGE_AVAILABLE
VX_GET_MESSAGE_FAILURE
VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000_EXPANDED
VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000
VIVOX_V_V2_AUDIO_DATA_MONO_SIREN7_16000_EXPANDED
VIVOX_V_V2_AUDIO_DATA_MONO_OPUS_48000_EXPANDED
VIVOX_VANI_SIREN7
The configured_codecs field in vx_req_connector_create is a mask of these constants.
VIVOX_VANI_SIREN14
VIVOX_VANI_LEGACY_MASK
VIVOX_VANI_OPUS8
VIVOX_VANI_OPUS40
VIVOX_VANI_OPUS57
VIVOX_VANI_OPUS72
VIVOX_VANI_OPUS
VIVOX_VANI_OPUS_MASK
VIVOX_VANI_PCMU
VX_VAR_DECODER_COUNT_LIMIT
VX_VAR_DECODER_HANGOVER_LIMIT
VX_VAR_RTP_ENCRYPTION
MAX_VXA_DEVICE_COUNT
The maximum number of application-provided capture devices.
VX_TTS_CHARACTER_COUNT_LIMIT
VX_TTS_MAX_DESTINATION_QUEUE_SIZE
VX_TTS_DEFAULT_DESTINATION

Types Documentation

enum vx_attempt_stun

EnumeratorValueDescription
attempt_stun_unspecified0Use the default as configured on the account management server.
attempt_stun_on1Use STUN.
attempt_stun_off2Do not use STUN.

A type of STUN probe.

enum vx_connector_mode

EnumeratorValueDescription
connector_mode_normal0The default and only valid value.
connector_mode_legacy1

A type of API mode.

The required setting is connector_mode_normal.

enum vx_session_handle_type

EnumeratorValueDescription
session_handle_type_unique0Each handle is unique for the lifetime of the connector.
session_handle_type_legacy1Handles are sequential integers.
session_handle_type_heirarchical_numeric2Handles are hierarchical numeric.
session_handle_type_heirarchical_unique3Handles are hierarchical unique.

A type of API mode.

The recommended setting is connector_mode_normal.

enum vx_log_type

EnumeratorValueDescription
log_to_none0Unused.
log_to_file1
log_to_callback2Send log information to the client application through the registered callback method.
log_to_file_and_callback3

A type of logging for the application.

The Vivox SDK is capable of logging to a native log file and/or sending log information to the client application through a callback method registered with the SDK.

enum vx_message_type

EnumeratorValueDescription
msg_none0Unused.
msg_request1Indicates that the message is a request.
msg_response2Indicates that the message is a response.
msg_event3Indicates that the message is an event.

Used as a run time type indicator for all messages passed between the application and SDK.

enum vx_sessiongroup_recording_control_type

EnumeratorValueDescription
VX_SESSIONGROUP_RECORDING_CONTROL_STOP0Stop a recording.
VX_SESSIONGROUP_RECORDING_CONTROL_START1Start a recording.
VX_SESSIONGROUP_RECORDING_CONTROL_FLUSH_TO_FILE2Flush a continuous recording.

enum vx_sessiongroup_audio_injection_control_type

EnumeratorValueDescription
VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_STOP0Stop audio injection.
vx_sessiongroup_audio_injection_control_stopVX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_STOP
VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_START1Start audio injection (only if currently stopped).
vx_sessiongroup_audio_injection_control_startVX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_START
VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_RESTART2Restart audio injection (start if currently stopped, or stop if currently injecting and then restart).
vx_sessiongroup_audio_injection_control_restartVX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_RESTART
VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_MINVX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_STOP
vx_sessiongroup_audio_injection_control_minvx_sessiongroup_audio_injection_control_stop
VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_MAXVX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_RESTART
vx_sessiongroup_audio_injection_control_maxvx_sessiongroup_audio_injection_control_restart

enum vx_sessiongroup_playback_control_type

EnumeratorValueDescription
VX_SESSIONGROUP_PLAYBACK_CONTROL_STOP0Stop playback. When playback is stopped, it closes the playback file and generates a media frame played event, with 0 for the first frame, and 0 for the total frames.
VX_SESSIONGROUP_PLAYBACK_CONTROL_START1Start playback.
VX_SESSIONGROUP_PLAYBACK_CONTROL_PAUSE3Pause playback.
VX_SESSIONGROUP_PLAYBACK_CONTROL_UNPAUSE4Unpause playback.

enum vx_sessiongroup_playback_mode

EnumeratorValueDescription
VX_SESSIONGROUP_PLAYBACK_MODE_NORMAL0Normal mode playback.
VX_SESSIONGROUP_PLAYBACK_MODE_VOX1Vox mode playback: Catch-up mode. Skip all silence periods. Playback at desired speed.

enum vx_control_communications_operation

EnumeratorValueDescription
vx_control_communications_operation_block0The issuing user does not hear the blocked user, and the blocked user does not hear the issuing user.
vx_control_communications_operation_unblock1The issuing user does hear the blocked user, and the blocked user does hear the issuing user, unless the blocked user has also blocked the issuing user.
vx_control_communications_operation_list2
vx_control_communications_operation_block_list2
vx_control_communications_operation_clear3
vx_control_communications_operation_clear_block_list3
vx_control_communications_operation_mute4
vx_control_communications_operation_unmute5
vx_control_communications_operation_mute_list6
vx_control_communications_operation_clear_mute_list7

The methods in which communication can be controlled.

enum vx_media_type

EnumeratorValueDescription
media_type_none0
media_type_text1
media_type_audio2
media_type_video3
media_type_audiovideo4

enum vx_termination_status

EnumeratorValueDescription
termination_status_none0
termination_status_busy1
termination_status_decline2

enum vx_diagnostic_dump_level

EnumeratorValueDescription
diagnostic_dump_level_all0
diagnostic_dump_level_sessions1

enum vx_media_ringback

EnumeratorValueDescription
media_ringback_none0
media_ringback_ringing1
media_ringback_busy3

enum vx_channel_type

EnumeratorValueDescription
channel_type_normal0
channel_type_positional2

enum vx_channel_mode

EnumeratorValueDescription
channel_mode_none0
channel_mode_normal1
channel_mode_presentation2
channel_mode_lecture3
channel_mode_open4
channel_mode_auditorium5

enum vx_channel_search_type

EnumeratorValueDescription
channel_search_type_all0
channel_search_type_non_positional1
channel_search_type_positional2

enum vx_channel_moderation_type

EnumeratorValueDescription
channel_moderation_type_all0
channel_moderation_type_current_user1

enum vx_sessiongroup_type

EnumeratorValueDescription
sessiongroup_type_normal0Normal type for general use.
sessiongroup_type_playback1Playback type. Only use this for playing back a Vivox recording.

The type of the session group specified at session group creation time.

enum vx_participant_removed_reason

EnumeratorValueDescription
participant_left0
participant_timeout1
participant_kicked2
participant_banned3

Indicates the reason why a participant was removed from a session.

enum vx_connection_state

EnumeratorValueDescription
connection_state_disconnected0
connection_state_connected1
connection_state_recovering3
connection_state_failed_to_recover4
connection_state_recovered5

Indicates current network connection state.

enum vx_request_type

EnumeratorValueDescription
req_none0
req_connector_create1
req_connector_initiate_shutdown2
req_account_login3
req_account_logout4
req_account_set_login_properties5
req_sessiongroup_create6
req_sessiongroup_terminate7
req_sessiongroup_add_session8
req_sessiongroup_remove_session9
req_sessiongroup_set_focus10
req_sessiongroup_unset_focus11
req_sessiongroup_reset_focus12
req_sessiongroup_set_tx_session13
req_sessiongroup_set_tx_all_sessions14
req_sessiongroup_set_tx_no_session15
req_session_create16Do not use. Instead, use req_sessiongroup_add_session
req_session_media_connect18
req_session_media_disconnect19
req_session_terminate21
req_session_mute_local_speaker22
req_session_set_local_speaker_volume23
req_session_set_local_render_volume24
req_session_channel_invite_user25
req_session_set_participant_volume_for_me26
req_session_set_participant_mute_for_me27
req_session_set_3d_position28
req_session_set_voice_font29
req_account_channel_add_acl53
req_account_channel_remove_acl54
req_account_channel_get_acl55
req_channel_mute_user56
req_channel_ban_user57
req_channel_get_banned_users58
req_channel_kick_user59
req_channel_mute_all_users60
req_connector_mute_local_mic61
req_connector_mute_local_speaker62
req_connector_set_local_mic_volume63
req_connector_set_local_speaker_volume64
req_connector_get_local_audio_info65
req_account_buddy_set67
req_account_buddy_delete68
req_account_list_buddies_and_groups71
req_session_send_message72
req_account_set_presence73
req_account_send_subscription_reply74
req_session_send_notification75
req_account_create_block_rule76
req_account_delete_block_rule77
req_account_list_block_rules78
req_account_create_auto_accept_rule79
req_account_delete_auto_accept_rule80
req_account_list_auto_accept_rules81
req_account_update_account82Deprecated.
req_account_get_account83Deprecated.
req_account_send_sms84
req_aux_connectivity_info86
req_aux_get_render_devices87
req_aux_get_capture_devices88
req_aux_set_render_device89
req_aux_set_capture_device90
req_aux_get_mic_level91
req_aux_get_speaker_level92
req_aux_set_mic_level93
req_aux_set_speaker_level94
req_aux_render_audio_start95
req_aux_render_audio_stop96
req_aux_capture_audio_start97
req_aux_capture_audio_stop98
req_aux_global_monitor_keyboard_mouse99
req_aux_set_idle_timeout100
req_aux_create_account101
req_aux_reactivate_account102
req_aux_deactivate_account103
req_account_post_crash_dump104
req_aux_reset_password105
req_sessiongroup_set_session_3d_position106
req_account_get_session_fonts107
req_account_get_template_fonts108
req_aux_start_buffer_capture109
req_aux_play_audio_buffer110
req_sessiongroup_control_recording111
req_sessiongroup_control_playback112
req_sessiongroup_set_playback_options113
req_session_text_connect114
req_session_text_disconnect115
req_channel_set_lock_mode116
req_aux_render_audio_modify117
req_session_send_dtmf118
req_aux_set_vad_properties120
req_aux_get_vad_properties121
req_sessiongroup_control_audio_injection124
req_account_channel_change_owner125Not yet implemented (3030)
req_account_send_user_app_data128Not yet implemented (3030)
req_aux_diagnostic_state_dump129
req_account_web_call130
req_account_anonymous_login131
req_account_authtoken_login132
req_sessiongroup_get_stats133
req_account_send_message134
req_aux_notify_application_state_change135
req_account_control_communications136
req_session_archive_query137
req_account_archive_query138
req_session_transcription_control139
req_aux_get_derumbler_properties140
req_aux_set_derumbler_properties141
req_session_chat_history_query142
req_account_chat_history_query143
req_account_chat_history_get_last_read144
req_session_edit_message145
req_account_edit_message146
req_session_delete_message147
req_account_delete_message148
req_account_get_conversations149
req_account_chat_history_set_marker150
req_account_safe_voice_update_consent151
req_account_safe_voice_get_consent152
req_maxreq_account_safe_voice_get_consent + 1

The set of requests that can be issued.

enum vx_response_type

EnumeratorValueDescription
resp_none0
resp_connector_create1
resp_connector_initiate_shutdown2
resp_account_login3
resp_account_logout4
resp_account_set_login_properties5
resp_sessiongroup_create6
resp_sessiongroup_terminate7
resp_sessiongroup_add_session8
resp_sessiongroup_remove_session9
resp_sessiongroup_set_focus10
resp_sessiongroup_unset_focus11
resp_sessiongroup_reset_focus12
resp_sessiongroup_set_tx_session13
resp_sessiongroup_set_tx_all_sessions14
resp_sessiongroup_set_tx_no_session15
resp_session_create16Do not use.
resp_session_media_connect18
resp_session_media_disconnect19
resp_session_terminate21
resp_session_mute_local_speaker22
resp_session_set_local_speaker_volume23
resp_session_set_local_render_volume24
resp_session_channel_invite_user25
resp_session_set_participant_volume_for_me26
resp_session_set_participant_mute_for_me27
resp_session_set_3d_position28
resp_session_set_voice_font29
resp_account_channel_get_list33
resp_account_channel_add_acl53
resp_account_channel_remove_acl54
resp_account_channel_get_acl55
resp_channel_mute_user56
resp_channel_ban_user57
resp_channel_get_banned_users58
resp_channel_kick_user59
resp_channel_mute_all_users60
resp_connector_mute_local_mic61
resp_connector_mute_local_speaker62
resp_connector_set_local_mic_volume63
resp_connector_set_local_speaker_volume64
resp_connector_get_local_audio_info65
resp_account_buddy_set67
resp_account_buddy_delete68
resp_account_list_buddies_and_groups71
resp_session_send_message72
resp_account_set_presence73
resp_account_send_subscription_reply74
resp_session_send_notification75
resp_account_create_block_rule76
resp_account_delete_block_rule77
resp_account_list_block_rules78
resp_account_create_auto_accept_rule79
resp_account_delete_auto_accept_rule80
resp_account_list_auto_accept_rules81
resp_account_update_account82Deprecated.
resp_account_get_account83Deprecated.
resp_account_send_sms84
resp_aux_connectivity_info86
resp_aux_get_render_devices87
resp_aux_get_capture_devices88
resp_aux_set_render_device89
resp_aux_set_capture_device90
resp_aux_get_mic_level91
resp_aux_get_speaker_level92
resp_aux_set_mic_level93
resp_aux_set_speaker_level94
resp_aux_render_audio_start95
resp_aux_render_audio_stop96
resp_aux_capture_audio_start97
resp_aux_capture_audio_stop98
resp_aux_global_monitor_keyboard_mouse99
resp_aux_set_idle_timeout100
resp_aux_create_account101
resp_aux_reactivate_account102
resp_aux_deactivate_account103
resp_account_post_crash_dump104
resp_aux_reset_password105
resp_sessiongroup_set_session_3d_position106
resp_account_get_session_fonts107
resp_account_get_template_fonts108
resp_aux_start_buffer_capture109
resp_aux_play_audio_buffer110
resp_sessiongroup_control_recording111
resp_sessiongroup_control_playback112
resp_sessiongroup_set_playback_options113
resp_session_text_connect114
resp_session_text_disconnect115
resp_channel_set_lock_mode116
resp_aux_render_audio_modify117
resp_session_send_dtmf118
resp_aux_set_vad_properties120
resp_aux_get_vad_properties121
resp_sessiongroup_control_audio_injection124
resp_account_channel_change_owner125Not yet implemented (3030)
resp_account_send_user_app_data128Not yet implemented (3030)
resp_aux_diagnostic_state_dump129
resp_account_web_call130
resp_account_anonymous_login131
resp_account_authtoken_login132
resp_sessiongroup_get_stats133
resp_account_send_message134
resp_aux_notify_application_state_change135
resp_account_control_communications136
resp_session_archive_query137
resp_account_archive_query138
resp_session_transcription_control139
resp_aux_get_derumbler_properties140
resp_aux_set_derumbler_properties141
resp_session_chat_history_query142
resp_account_chat_history_query143
resp_account_chat_history_get_last_read144
resp_session_edit_message145
resp_account_edit_message146
resp_session_delete_message147
resp_account_delete_message148
resp_account_get_conversations149
resp_account_chat_history_set_marker150
resp_account_safe_voice_update_consent151
resp_account_safe_voice_get_consent152
resp_maxresp_account_safe_voice_get_consent + 1

Response types that are reported back to the calling app.

enum vx_event_type

EnumeratorValueDescription
evt_none0
evt_account_login_state_change2
evt_buddy_presence7
evt_subscription8
evt_session_notification9
evt_message10
evt_aux_audio_properties11
evt_buddy_changed15
evt_buddy_group_changed16
evt_buddy_and_group_list_changed17
evt_keyboard_mouse18
evt_idle_state_changed19
evt_media_stream_updated20
evt_text_stream_updated21
evt_sessiongroup_added22
evt_sessiongroup_removed23
evt_session_added24
evt_session_removed25
evt_participant_added26
evt_participant_removed27
evt_participant_updated28
evt_sessiongroup_playback_frame_played30
evt_session_updated31
evt_sessiongroup_updated32
evt_media_completion33
evt_server_app_data35
evt_user_app_data36
evt_network_message38
evt_voice_service_connection_state_changed39
evt_publication_state_changed40
evt_audio_device_hot_swap41
evt_user_to_user_message42
evt_session_archive_message43
evt_session_archive_query_end44
evt_account_archive_message45
evt_account_archive_query_end46
evt_account_send_message_failed47
evt_transcribed_message48
evt_tts_injection_started49
evt_tts_injection_ended50
evt_tts_injection_failed51
evt_stt_failed52
evt_connection_state_changed53
evt_presence_updated54
evt_session_edit_message55
evt_account_edit_message56
evt_session_delete_message57
evt_account_delete_message58
evt_maxevt_account_delete_message + 1

Event types that are reported back to the calling app.

enum ND_ERROR

EnumeratorValueDescription
ND_E_NO_ERROR0
ND_E_TEST_NOT_RUN1
ND_E_NO_INTERFACE2
ND_E_NO_INTERFACE_WITH_GATEWAY3
ND_E_NO_INTERFACE_WITH_ROUTE4
ND_E_TIMEOUT5
ND_E_CANT_ICMP6
ND_E_CANT_RESOLVE_VIVOX_UDP_SERVER7
ND_E_CANT_RESOLVE_ROOT_DNS_SERVER8
ND_E_CANT_CONVERT_LOCAL_IP_ADDRESS9
ND_E_CANT_CONTACT_STUN_SERVER_ON_UDP_PORT_347810
ND_E_CANT_CREATE_TCP_SOCKET11
ND_E_CANT_LOAD_ICMP_LIBRARY12
ND_E_CANT_FIND_SENDECHO2_PROCADDR13
ND_E_CANT_CONNECT_TO_ECHO_SERVER14
ND_E_ECHO_SERVER_LOGIN_SEND_FAILED15
ND_E_ECHO_SERVER_LOGIN_RECV_FAILED16
ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_STATUS17
ND_E_ECHO_SERVER_LOGIN_RESPONSE_FAILED_STATUS18
ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_SESSIONID19
ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_SIPPORT20
ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_AUDIORTP21
ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_AUDIORTCP22
ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_VIDEORTP23
ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_VIDEORTCP24
ND_E_ECHO_SERVER_CANT_ALLOCATE_SIP_SOCKET25
ND_E_ECHO_SERVER_CANT_ALLOCATE_MEDIA_SOCKET26
ND_E_ECHO_SERVER_SIP_UDP_SEND_FAILED27
ND_E_ECHO_SERVER_SIP_UDP_RECV_FAILED28
ND_E_ECHO_SERVER_SIP_TCP_SEND_FAILED29
ND_E_ECHO_SERVER_SIP_TCP_RECV_FAILED30
ND_E_ECHO_SERVER_SIP_NO_UDP_OR_TCP31
ND_E_ECHO_SERVER_SIP_NO_UDP32
ND_E_ECHO_SERVER_SIP_NO_TCP33
ND_E_ECHO_SERVER_SIP_MALFORMED_TCP_PACKET34
ND_E_ECHO_SERVER_SIP_UDP_DIFFERENT_LENGTH35
ND_E_ECHO_SERVER_SIP_UDP_DATA_DIFFERENT36
ND_E_ECHO_SERVER_SIP_TCP_PACKETS_DIFFERENT37
ND_E_ECHO_SERVER_SIP_TCP_PACKETS_DIFFERENT_SIZE38
ND_E_ECHO_SERVER_LOGIN_RECV_FAILED_TIMEOUT39
ND_E_ECHO_SERVER_TCP_SET_ASYNC_FAILED40
ND_E_ECHO_SERVER_UDP_SET_ASYNC_FAILED41
ND_E_ECHO_SERVER_CANT_RESOLVE_NAME42

enum ND_TEST_TYPE

EnumeratorValueDescription
ND_TEST_LOCATE_INTERFACE0
ND_TEST_PING_GATEWAY1
ND_TEST_DNS2
ND_TEST_STUN3
ND_TEST_ECHO4
ND_TEST_ECHO_SIP_FIRST_PORT5
ND_TEST_ECHO_SIP_FIRST_PORT_INVITE_REQUEST6
ND_TEST_ECHO_SIP_FIRST_PORT_INVITE_RESPONSE7
ND_TEST_ECHO_SIP_FIRST_PORT_REGISTER_REQUEST8
ND_TEST_ECHO_SIP_FIRST_PORT_REGISTER_RESPONSE9
ND_TEST_ECHO_SIP_SECOND_PORT10
ND_TEST_ECHO_SIP_SECOND_PORT_INVITE_REQUEST11
ND_TEST_ECHO_SIP_SECOND_PORT_INVITE_RESPONSE12
ND_TEST_ECHO_SIP_SECOND_PORT_REGISTER_REQUEST13
ND_TEST_ECHO_SIP_SECOND_PORT_REGISTER_RESPONSE14
ND_TEST_ECHO_MEDIA15
ND_TEST_ECHO_MEDIA_LARGE_PACKET16

enum vx_session_answer_mode

EnumeratorValueDescription
mode_none0Not valid for use.
mode_auto_answer1
mode_verify_answer2Requires the client to explicitly answer the incoming call.
mode_busy_answer3The incoming call is automatically answered with a 486 busy.

Determine how incoming calls are handled.

Set at login.

enum vx_buddy_management_mode

EnumeratorValueDescription
mode_auto_accept0
mode_auto_add1
mode_block2
mode_hide3
mode_application4

enum vx_rule_type

EnumeratorValueDescription
rule_none0
rule_allow1
rule_block2
rule_hide3

enum vx_font_type

EnumeratorValueDescription
type_none0
type_root1
type_user2

enum vx_font_status

EnumeratorValueDescription
status_none0
status_free1
status_not_free2

enum vx_subscription_type

EnumeratorValueDescription
subscription_presence0

enum vx_notification_type

EnumeratorValueDescription
notification_not_typing0
notification_typing1
notification_hand_lowered2
notification_hand_raised3
notification_minnotification_not_typing
notification_maxnotification_hand_raised

enum vx_dtmf_type

EnumeratorValueDescription
dtmf_00
dtmf_11
dtmf_22
dtmf_33
dtmf_44
dtmf_55
dtmf_66
dtmf_77
dtmf_88
dtmf_99
dtmf_pound10
dtmf_star11
dtmf_A12
dtmf_B13
dtmf_C14
dtmf_D15
dtmf_maxdtmf_D

enum vx_text_mode

EnumeratorValueDescription
text_mode_disabled0
text_mode_enabled1

enum vx_channel_lock_mode

EnumeratorValueDescription
channel_unlock0
channel_lock1

enum vx_mute_scope

EnumeratorValueDescription
mute_scope_all0
mute_scope_audio1
mute_scope_text2

enum vx_recording_frame_type_t

EnumeratorValueDescription
VX_RECORDING_FRAME_TYPE_DELTA0
VX_RECORDING_FRAME_TYPE_CONTROL1

Hold a recorded audio frame.

enum vx_audiosource_operation

EnumeratorValueDescription
op_none0
op_safeupdate1
op_delete2

enum vx_aux_audio_properties_state

EnumeratorValueDescription
aux_audio_properties_none0

enum vx_login_state_change_state

EnumeratorValueDescription
login_state_logged_out0
login_state_logged_in1
login_state_logging_in2
login_state_logging_out3
login_state_resetting4
login_state_error100

enum vx_publication_state_change_state

EnumeratorValueDescription
publication_state_success0
publication_state_transient_error1
publication_state_permanent_error2

enum vx_buddy_presence_state

EnumeratorValueDescription
buddy_presence_unknown0OBSOLETE.
buddy_presence_pending1OBSOLETE.
buddy_presence_online2
buddy_presence_busy3
buddy_presence_brb4
buddy_presence_away5
buddy_presence_onthephone6
buddy_presence_outtolunch7
buddy_presence_custom8OBSOLETE.
buddy_presence_online_slc9OBSOLETE.
buddy_presence_closed0OBSOLETE.
buddy_presence_offline0
buddy_presence_chat10
buddy_presence_extended_away11
buddy_presence_minbuddy_presence_unknown
buddy_presence_maxbuddy_presence_extended_away

enum vx_presence_state

EnumeratorValueDescription
presence_online0
presence_busy1
presence_brb2
presence_away3
presence_onthephone4
presence_offline5
presence_chat6
presence_extended_away7
presence_minpresence_online
presence_maxpresence_extended_away

enum vx_session_notification_state

EnumeratorValueDescription
session_notification_none0

enum vx_message_state

EnumeratorValueDescription
message_none0

enum vx_session_text_state

EnumeratorValueDescription
session_text_disconnected0
session_text_connected1
session_text_connecting2
session_text_disconnecting3

enum vx_session_media_state

EnumeratorValueDescription
session_media_disconnected1
session_media_connected2
session_media_ringing3
session_media_connecting6
session_media_disconnecting7

enum vx_participant_type

EnumeratorValueDescription
participant_user0
part_userparticipant_user
participant_moderator1
part_moderatorparticipant_moderator
participant_owner2
part_focusparticipant_owner

enum orientation_type

EnumeratorValueDescription
orientation_default0
orientation_legacy1
orientation_vivox2

enum vx_media_completion_type

EnumeratorValueDescription
media_completion_type_none0
aux_buffer_audio_capture1
aux_buffer_audio_render2
sessiongroup_audio_injection3

enum vx_device_type

EnumeratorValueDescription
vx_device_type_specific_device0This type is a specific device.
vx_device_type_default_system1This type means to use whatever the system has configured as a default at the time of the call.
vx_device_type_null2This is the null device, which means that either the input or output from or to that device does not occur.
vx_device_type_default_communication3This type means to use whatever the system has configured as a default communication device at the time of the call.

The type of device.

enum vx_conversation_type

EnumeratorValueDescription
vx_conversation_channel0
vx_conversation_direct1

enum vx_codec

EnumeratorValueDescription
vx_codec_siren70x2
vx_codec_siren140x4
vx_codec_opus80x10
vx_codec_opus400x20
vx_codec_opus570x40
vx_codec_opus720x80
VX_DEPRECATED_ENUM_GCC=(vx_codec_pcmu, 5.19) 0x10

The configured_codecs field in vx_req_connector_create is a mask of these constants.

enum vx_application_state_notification_type

EnumeratorValueDescription
vx_application_state_notification_type_before_background0
vx_application_state_notification_type_after_foreground1
vx_application_state_notification_type_periodic_background_idle2

Indicates the state of the application.

Note: Valid only on mobile platforms.

enum VXA_ERROR_CODES

EnumeratorValueDescription
VXA_SUCCESS0Method executed successfully.
VXA_INVALID_PARAMETER1The caller provided an invalid parameter.
VXA_DEVICE_DOES_NOT_EXIST2The caller attempted to open a device that does not exist.
VXA_INTERNAL_ERROR3There was an unexpected operating system-specific failure.
VXA_OUT_OF_MEMORY4The method could not allocate enough memory to complete the request.
VXA_INVALID_STATE5The method attempted to perform an invalid operation on the object in its current state. Typically, this is an attempt to open an already open device, or to read or write a closed device. Can also be called if VXA is not initialized.
VXA_NO_MORE_DATA6Returned by "read()" functions when there is no more data available.
VXA_FEATURE_NOT_SUPPORTED7Returned by the method if the feature is not supported.
VXA_MAX_DEVICES_EXCEEDED8Returned by the method if there is an attempt to create more than MAX_VXA_DEVICE_COUNT devices.
VXA_NO_BUFFERS_AVAILABLE9Returned by the method if there are no more render buffers available.
VXA_ACCESS_DENIED10Returned by the method if the app does not have microphone access permission.

Error codes that are returned by the VXA subsystem.

enum VXA_CAPTURE_FLAGS

EnumeratorValueDescription
VXA_CAPTURE_OPEN_FLAG_USE_AEC0x00000001Use acoustic echo cancellation.
VXA_CAPTURE_OPEN_FLAG_USE_AGC0x00000002Use automatic gain control.

Values passed when opening capture devices.

enum vx_channel_rolloff_curve_type

EnumeratorValueDescription
channel_rolloff_curve_type_none0No distance-based attenuation is applied. All speakers are rendered as if they were in the same position as the listener.
channel_rolloff_curve_type_inverse_distance_clamped1The attenuation increases in inverse proportion to the distance. The rolloff factor is the inverse of the slope of the attenuation curve.
channel_rolloff_curve_type_linear_distance_clamped2The attenuation increases in linear proportion to the distance. The rolloff factor is the negative slope of the attenuation curve.
channel_rolloff_curve_type_exponential_distance_clamped3The attenuation increases in inverse proportion to the distance raised to the power of the rolloff factor.

Rolloff curve types to serve as the distance model for a positional channel.

This tells the server which algorithm to use when computing attenuation.

enum vx_opus_vbr_mode

EnumeratorValueDescription
opus_mode_cbr0A constant bitrate mode.
opus_mode_lvbr1A limited variable bitrate mode.
opus_mode_vbr2A variable bitrate mode.

Values for OPUS VBR mode.

enum vx_opus_bandwidth

EnumeratorValueDescription
opus_bandwidth_auto0Automatic bandwidth (default).
opus_bandwidth_nb1Narrowband, 4kHz.
opus_bandwidth_mb2Medium-band, 6kHz.
opus_bandwidth_wb3Wideband, 8kHz.
opus_bandwidth_swb4Super-wideband, 12 kHz.
opus_bandwidth_fb5Fullband, 20 kHz.

Values for OPUS bandwidth.

enum vx_crash_test_type

EnumeratorValueDescription
vx_crash_access_zero_pointer0Crash on access to the zero pointer.
vx_crash_access_violation1Crash on access to a restricted page.
vx_crash_stack_overflow2Overflow the program stack.
vx_crash_heap_corruption3Corrupt the heap and try to allocate more memory.

Values for vx_crash_test( crash type ).

enum vx_path_id

EnumeratorValueDescription
path_cache_folder0The path to the folder where internal SDK data is stored. Ends with a platform-specific separator.

The type of path used by the SDK.

enum vx_noise_suppression_level

EnumeratorValueDescription
noise_suppression_low0
noise_suppression_moderate1
noise_suppression_high2
noise_suppression_very_high3

enum vx_tts_destination

EnumeratorValueDescription
tts_dest_remote_transmission0Immediately send to participants in connected sessions. Mixes new messages with any other ongoing messages.
tts_dest_local_playback1Immediately play back locally on a render device (for example, speakers). Mixes new messages with any other ongoing messages.
tts_dest_remote_transmission_with_local_playback2Immediately play back locally on a render device and send to participants in connected sessions. Mixes new messages with any other ongoing messages.
tts_dest_queued_remote_transmission3Send to participants in connected sessions, or enqueue if there is already an ongoing message playing in this destination.
tts_dest_queued_local_playback4Play back locally on a render device (for example, speakers), or enqueue if there is already an ongoing message playing in this destination.
tts_dest_queued_remote_transmission_with_local_playback5Play back locally on a render device and send to participants in connected sessions. Enqueue if there is already an ongoing message playing in this destination.
tts_dest_screen_reader6Immediately play back locally on a render device (for example, speakers). Replaces the currently playing message in this destination.

Text-to-speech (TTS) definitions.

Destination definitions used by the text-to-speech subsystem.

enum vx_tts_status

EnumeratorValueDescription
tts_status_success0Successful TTS operation.
tts_error_invalid_engine_type-1001Invalid TTS engine type.
tts_error_engine_allocation_failed-1002TTS engine allocation failed.
tts_error_not_supported-1003TTS operation is not supported or is not yet implemented.
tts_error_max_characters_exceeded-1004Message exceeded the maximum number of input text characters. The maximum number of characters is 200.
tts_error_utterance_below_min_duration-1005The text-to-speech utterance was below 20ms after synthesis and was ignored.
tts_status_input_text_was_enqueued-1006TTS message was enqueued because there is another TTS message already playing.
tts_error_sdk_not_initialized-1007SDK is not initialized. Initialize the SDK and retry.
tts_error_destination_queue_is_full-1008Destination queue is full. Destination queue limit is 10 items.
tts_status_enqueue_not_necessary-1009Queue is empty and no active TTS message is playing. Ready for injection.
tts_error_utterance_not_found-1010Utterance was not found.
tts_error_manager_not_found-1011Text-to-speech manager was not found.
tts_error_invalid_argument-1012One or more arguments are invalid.
tts_error_internal-1013Internal error.

Status codes that are returned by the text-to-speech subsystem.

enum vx_tts_engine_type

EnumeratorValueDescription
tts_engine_vivox_default0Vivox Default TTS Engine.

Text-to-speech engine types.

typedef char* VX_COOKIE;

A request cookie type.

Used when passing in requests to the SDK.

typedef VX_HANDLE

typedef VX_COOKIE VX_HANDLE;

A generic handle type for state objects (for example: accounts, connectors, sessions, or session groups).

typedef VX_SDK_HANDLE

typedef unsigned int VX_SDK_HANDLE;

typedef vx_time_t

typedef time_t vx_time_t;

typedef vx_message_base_t

typedef struct vx_message_base vx_message_base_t;

typedef vx_req_base_t

typedef struct vx_req_base vx_req_base_t;

typedef vx_resp_base_t

typedef struct vx_resp_base vx_resp_base_t;

typedef vx_evt_base_t

typedef struct vx_evt_base vx_evt_base_t;

typedef vx_state_buddy_contact_t

typedef struct vx_state_buddy_contact vx_state_buddy_contact_t;

typedef vx_state_buddy_contact_ref_t

typedef vx_state_buddy_contact_t* vx_state_buddy_contact_ref_t;

typedef vx_state_buddy_contact_list_t

typedef vx_state_buddy_contact_ref_t* vx_state_buddy_contact_list_t;

typedef vx_state_buddy_t

typedef struct vx_state_buddy vx_state_buddy_t;

typedef vx_state_buddy_ref_t

typedef vx_state_buddy_t* vx_state_buddy_ref_t;

typedef vx_state_buddy_list_t

typedef vx_state_buddy_ref_t* vx_state_buddy_list_t;

typedef vx_state_buddy_group_t

typedef struct vx_state_buddy_group vx_state_buddy_group_t;

typedef vx_state_buddy_group_ref_t

typedef vx_state_buddy_group_t* vx_state_buddy_group_ref_t;

typedef vx_state_buddy_group_list_t

typedef vx_state_buddy_group_ref_t* vx_state_buddy_group_list_t;

typedef vx_participant_t

typedef struct vx_participant vx_participant_t;

Channel participant.

typedef vx_participant_ref_t

typedef vx_participant_t* vx_participant_ref_t;

Creates a participant list with the given size.

typedef vx_participant_list_t

typedef vx_participant_ref_t* vx_participant_list_t;

typedef vx_state_participant_t

typedef struct vx_state_participant vx_state_participant_t;

State participant.

Only used for state dump.

typedef vx_state_participant_ref_t

typedef vx_state_participant_t* vx_state_participant_ref_t;

Creates a state_participant list with the given size.

typedef vx_state_participant_list_t

typedef vx_state_participant_ref_t* vx_state_participant_list_t;

typedef vx_state_session_t

typedef struct vx_state_session vx_state_session_t;

State session.

Only used for state dump.

typedef vx_state_session_ref_t

typedef vx_state_session_t* vx_state_session_ref_t;

Creates a state_session list with the given size.

typedef vx_state_session_list_t

typedef vx_state_session_ref_t* vx_state_session_list_t;

typedef vx_state_sessiongroup_t

typedef struct vx_state_sessiongroup vx_state_sessiongroup_t;

State session group.

Only used for state dump.

typedef vx_state_sessiongroup_ref_t

typedef vx_state_sessiongroup_t* vx_state_sessiongroup_ref_t;

Creates a state_sessiongroup list with the given size.

typedef vx_state_sessiongroup_list_t

typedef vx_state_sessiongroup_ref_t* vx_state_sessiongroup_list_t;

typedef vx_state_account_t

typedef struct vx_state_account vx_state_account_t;

State account.

Only used for state dump.

typedef vx_state_account_ref_t

typedef vx_state_account_t* vx_state_account_ref_t;

Creates a state_account list with the given size.

typedef vx_state_account_list_t

typedef vx_state_account_ref_t* vx_state_account_list_t;

typedef vx_state_connector_t

typedef struct vx_state_connector vx_state_connector_t;

State connector.

Only used for state dump.

typedef vx_state_connector_ref_t

typedef vx_state_connector_t* vx_state_connector_ref_t;

Creates a state_connector list with the given size.

typedef vx_state_connector_list_t

typedef vx_state_connector_ref_t* vx_state_connector_list_t;

typedef vx_channel_t

typedef struct vx_channel vx_channel_t;

Channel struct.

typedef vx_channel_ref_t

typedef vx_channel_t* vx_channel_ref_t;

typedef vx_channel_list_t

typedef vx_channel_ref_t* vx_channel_list_t;

typedef vx_voice_font_t

typedef struct vx_voice_font vx_voice_font_t;

Voice font struct.

typedef vx_voice_font_ref_t

typedef vx_voice_font_t* vx_voice_font_ref_t;

typedef vx_voice_font_list_t

typedef vx_voice_font_ref_t* vx_voice_font_list_t;

typedef vx_block_rule_t

typedef struct vx_block_rule vx_block_rule_t;

typedef vx_block_rule_ref_t

typedef vx_block_rule_t* vx_block_rule_ref_t;

typedef vx_block_rules_t

typedef vx_block_rule_ref_t* vx_block_rules_t;

typedef vx_auto_accept_rule_t

typedef struct vx_auto_accept_rule vx_auto_accept_rule_t;

typedef vx_auto_accept_rule_ref_t

typedef vx_auto_accept_rule_t* vx_auto_accept_rule_ref_t;

typedef vx_auto_accept_rules_t

typedef vx_auto_accept_rule_ref_t* vx_auto_accept_rules_t;

typedef vx_user_channel_t

typedef struct vx_user_channel vx_user_channel_t;

typedef vx_user_channel_ref_t

typedef vx_user_channel_t* vx_user_channel_ref_t;

typedef vx_user_channels_t

typedef vx_user_channel_ref_t* vx_user_channels_t;

typedef vx_connectivity_test_result_t

typedef struct vx_connectivity_test_result vx_connectivity_test_result_t;

test_type - Enumeration that defines the test performed (for values, see appendix ?15.8).

error_code - Enumeration that defines the error or success of the test (for values, see appendix ?15.9). test_additional_info - Any additional information for this test. For example, this could be the IP addresses used, port numbers, or error information.

typedef vx_connectivity_test_result_ref_t

typedef vx_connectivity_test_result_t* vx_connectivity_test_result_ref_t;

typedef vx_connectivity_test_results_t

typedef vx_connectivity_test_result_ref_t* vx_connectivity_test_results_t;

typedef vx_account_t

typedef struct vx_account vx_account_t;

typedef vx_device_type_t

typedef enum vx_device_type vx_device_type_t;

The type of device.

typedef vx_device_t

typedef struct vx_device vx_device_t;

typedef vx_device_ref_t

typedef vx_device_t* vx_device_ref_t;

typedef vx_devices_t

typedef vx_device_ref_t* vx_devices_t;

typedef vx_buddy_t

typedef struct vx_buddy vx_buddy_t;

typedef vx_buddy_ref_t

typedef vx_buddy_t* vx_buddy_ref_t;

typedef vx_buddy_list_t

typedef vx_buddy_ref_t* vx_buddy_list_t;

typedef vx_group_t

typedef struct vx_group vx_group_t;

typedef vx_group_ref_t

typedef vx_group_t* vx_group_ref_t;

typedef vx_group_list_t

typedef vx_group_ref_t* vx_group_list_t;

typedef vx_name_value_pair_t

typedef struct vx_name_value_pair vx_name_value_pair_t;

typedef vx_name_value_pair_ref_t

typedef vx_name_value_pair_t* vx_name_value_pair_ref_t;

typedef vx_name_value_pairs_t

typedef vx_name_value_pair_ref_t* vx_name_value_pairs_t;

typedef vx_conversation_t

typedef struct vx_conversation vx_conversation_t;

typedef vx_conversation_ref_t

typedef vx_conversation_t* vx_conversation_ref_t;

typedef vx_conversation_list_t

typedef vx_conversation_ref_t* vx_conversation_list_t;

typedef vx_stat_sample_t

typedef struct vx_stat_sample vx_stat_sample_t;

typedef vx_stat_thread_t

typedef struct vx_stat_thread vx_stat_thread_t;

typedef vx_system_stats_t

typedef struct vx_system_stats vx_system_stats_t;

typedef vx_application_state_notification_type_t

typedef enum vx_application_state_notification_type vx_application_state_notification_type_t;

Indicates the state of the application.

Note: Valid only on mobile platforms.

typedef vxa_status_t

typedef int vxa_status_t;

The common return code for vxa* methods.

typedef vxa_capture_device_stats_t

typedef struct vxa_capture_device_stats_t vxa_capture_device_stats_t;

Get statistics that are useful for debugging audio capture issues.

typedef vxa_render_device_stats_t

typedef struct vxa_render_device_stats_t vxa_render_device_stats_t;

Get statistics that are useful for debugging audio render issues.

typedef vx_crash_test_type_t

typedef enum vx_crash_test_type vx_crash_test_type_t;

Values for vx_crash_test( crash type ).

typedef vx_vxd_t

typedef struct vx_vxd vx_vxd_t;

The Vivox eXtended Data (VXD) that is received.

typedef vx_tts_manager_id

typedef unsigned int vx_tts_manager_id;

typedef vx_tts_utterance_id

typedef unsigned int vx_tts_utterance_id;

typedef vx_tts_voice_id

typedef unsigned int vx_tts_voice_id;

typedef vx_tts_utterance_impl_t

typedef struct vx_tts_utterance_impl vx_tts_utterance_impl_t;

typedef vx_tts_utterance_t

typedef struct vx_tts_utterance vx_tts_utterance_t;

Text-to-speech utterance.

typedef vx_tts_voice_t

typedef struct vx_tts_voice vx_tts_voice_t;

Text-to-speech voice.

Functions Documentation

VIVOXSDK_DLLEXPORT int vx_cookie_create(
    const char * value,
    VX_COOKIE * cookie
)

Allocate and initialize a cookie.

VIVOXSDK_DLLEXPORT int vx_cookie_free(
    VX_COOKIE * cookie
)

Free a cookie.

function vx_state_buddy_contact_create

VIVOXSDK_DLLEXPORT int vx_state_buddy_contact_create(
    vx_state_buddy_contact_t ** contact
)

function vx_state_buddy_contact_free

VIVOXSDK_DLLEXPORT int vx_state_buddy_contact_free(
    vx_state_buddy_contact_t * contact
)

function vx_state_buddy_contact_list_create

VIVOXSDK_DLLEXPORT int vx_state_buddy_contact_list_create(
    int size,
    vx_state_buddy_contact_list_t * list_out
)

function vx_state_buddy_contact_list_free

VIVOXSDK_DLLEXPORT int vx_state_buddy_contact_list_free(
    vx_state_buddy_contact_t ** list,
    int size
)

function vx_state_buddy_create

VIVOXSDK_DLLEXPORT int vx_state_buddy_create(
    vx_state_buddy_t ** buddy
)

function vx_state_buddy_free

VIVOXSDK_DLLEXPORT int vx_state_buddy_free(
    vx_state_buddy_t * buddy
)

function vx_state_buddy_list_create

VIVOXSDK_DLLEXPORT int vx_state_buddy_list_create(
    int size,
    vx_state_buddy_list_t * list_out
)

function vx_state_buddy_list_free

VIVOXSDK_DLLEXPORT int vx_state_buddy_list_free(
    vx_state_buddy_t ** list,
    int size
)

function vx_state_buddy_group_create

VIVOXSDK_DLLEXPORT int vx_state_buddy_group_create(
    vx_state_buddy_group_t ** group
)

function vx_state_buddy_group_free

VIVOXSDK_DLLEXPORT int vx_state_buddy_group_free(
    vx_state_buddy_group_t * group
)

function vx_state_buddy_group_list_create

VIVOXSDK_DLLEXPORT int vx_state_buddy_group_list_create(
    int size,
    vx_state_buddy_group_list_t * list_out
)

function vx_state_buddy_group_list_free

VIVOXSDK_DLLEXPORT int vx_state_buddy_group_list_free(
    vx_state_buddy_group_t ** list,
    int size
)

function vx_participant_create

VIVOXSDK_DLLEXPORT int vx_participant_create(
    vx_participant_t ** participant
)

function vx_participant_free

VIVOXSDK_DLLEXPORT int vx_participant_free(
    vx_participant_t * participant
)

function vx_participant_list_create

VIVOXSDK_DLLEXPORT int vx_participant_list_create(
    int size,
    vx_participant_list_t * list_out
)

function vx_participant_list_free

VIVOXSDK_DLLEXPORT int vx_participant_list_free(
    vx_participant_t ** list,
    int size
)

function vx_state_participant_create

VIVOXSDK_DLLEXPORT int vx_state_participant_create(
    vx_state_participant_t ** state_participant
)

function vx_state_participant_free

VIVOXSDK_DLLEXPORT int vx_state_participant_free(
    vx_state_participant_t * state_participant
)

function vx_state_participant_list_create

VIVOXSDK_DLLEXPORT int vx_state_participant_list_create(
    int size,
    vx_state_participant_list_t * list_out
)

function vx_state_participant_list_free

VIVOXSDK_DLLEXPORT int vx_state_participant_list_free(
    vx_state_participant_t ** list,
    int size
)

function vx_state_session_create

VIVOXSDK_DLLEXPORT int vx_state_session_create(
    vx_state_session_t ** state_session
)

function vx_state_session_free

VIVOXSDK_DLLEXPORT int vx_state_session_free(
    vx_state_session_t * state_session
)

function vx_state_session_list_create

VIVOXSDK_DLLEXPORT int vx_state_session_list_create(
    int size,
    vx_state_session_list_t * list_out
)

function vx_state_session_list_free

VIVOXSDK_DLLEXPORT int vx_state_session_list_free(
    vx_state_session_t ** list,
    int size
)

function vx_state_sessiongroup_create

VIVOXSDK_DLLEXPORT int vx_state_sessiongroup_create(
    vx_state_sessiongroup_t ** state_sessiongroup
)

function vx_state_sessiongroup_free

VIVOXSDK_DLLEXPORT int vx_state_sessiongroup_free(
    vx_state_sessiongroup_t * state_sessiongroup
)

function vx_state_sessiongroup_list_create

VIVOXSDK_DLLEXPORT int vx_state_sessiongroup_list_create(
    int size,
    vx_state_sessiongroup_list_t * list_out
)

function vx_state_sessiongroup_list_free

VIVOXSDK_DLLEXPORT int vx_state_sessiongroup_list_free(
    vx_state_sessiongroup_t ** list,
    int size
)

function vx_state_account_create

VIVOXSDK_DLLEXPORT int vx_state_account_create(
    vx_state_account_t ** state_account
)

function vx_state_account_free

VIVOXSDK_DLLEXPORT int vx_state_account_free(
    vx_state_account_t * state_account
)

function vx_state_account_list_create

VIVOXSDK_DLLEXPORT int vx_state_account_list_create(
    int size,
    vx_state_account_list_t * list_out
)

function vx_state_account_list_free

VIVOXSDK_DLLEXPORT int vx_state_account_list_free(
    vx_state_account_t ** list,
    int size
)

function vx_state_connector_create

VIVOXSDK_DLLEXPORT int vx_state_connector_create(
    vx_state_connector_t ** state_connector
)

function vx_state_connector_free

VIVOXSDK_DLLEXPORT int vx_state_connector_free(
    vx_state_connector_t * state_connector
)

function vx_state_connector_list_create

VIVOXSDK_DLLEXPORT int vx_state_connector_list_create(
    int size,
    vx_state_connector_list_t * list_out
)

function vx_state_connector_list_free

VIVOXSDK_DLLEXPORT int vx_state_connector_list_free(
    vx_state_connector_t ** list,
    int size
)

function vx_channel_create

VIVOXSDK_DLLEXPORT int vx_channel_create(
    vx_channel_t ** channel
)

function vx_channel_free

VIVOXSDK_DLLEXPORT int vx_channel_free(
    vx_channel_t * channel
)

function vx_channel_list_create

VIVOXSDK_DLLEXPORT int vx_channel_list_create(
    int size,
    vx_channel_list_t * list_out
)

function vx_channel_list_free

VIVOXSDK_DLLEXPORT int vx_channel_list_free(
    vx_channel_t ** list,
    int size
)

function vx_voice_font_create

VIVOXSDK_DLLEXPORT int vx_voice_font_create(
    vx_voice_font_t ** channel
)

function vx_voice_font_free

VIVOXSDK_DLLEXPORT int vx_voice_font_free(
    vx_voice_font_t * channel
)

function vx_voice_font_list_create

VIVOXSDK_DLLEXPORT int vx_voice_font_list_create(
    int size,
    vx_voice_font_list_t * list_out
)

function vx_voice_font_list_free

VIVOXSDK_DLLEXPORT int vx_voice_font_list_free(
    vx_voice_font_t ** list,
    int size
)

function vx_string_list_create

VIVOXSDK_DLLEXPORT int vx_string_list_create(
    int size,
    char *** list_out
)

function vx_string_list_free

VIVOXSDK_DLLEXPORT int vx_string_list_free(
    char ** list
)

function vx_block_rule_create

VIVOXSDK_DLLEXPORT int vx_block_rule_create(
    vx_block_rule_t ** block_rule
)

function vx_block_rule_free

VIVOXSDK_DLLEXPORT int vx_block_rule_free(
    vx_block_rule_t * block_rule
)

function vx_block_rules_create

VIVOXSDK_DLLEXPORT int vx_block_rules_create(
    int size,
    vx_block_rules_t * list_out
)

function vx_block_rules_free

VIVOXSDK_DLLEXPORT int vx_block_rules_free(
    vx_block_rule_t ** list,
    int size
)

function vx_auto_accept_rule_create

VIVOXSDK_DLLEXPORT int vx_auto_accept_rule_create(
    vx_auto_accept_rule_t ** auto_accept_rule
)

function vx_auto_accept_rule_free

VIVOXSDK_DLLEXPORT int vx_auto_accept_rule_free(
    vx_auto_accept_rule_t * auto_accept_rule
)

function vx_auto_accept_rules_create

VIVOXSDK_DLLEXPORT int vx_auto_accept_rules_create(
    int size,
    vx_auto_accept_rules_t * list_out
)

function vx_auto_accept_rules_free

VIVOXSDK_DLLEXPORT int vx_auto_accept_rules_free(
    vx_auto_accept_rule_t ** list,
    int size
)

function vx_user_channel_create

VIVOXSDK_DLLEXPORT int vx_user_channel_create(
    vx_user_channel_t ** user_channel
)

function vx_user_channel_free

VIVOXSDK_DLLEXPORT int vx_user_channel_free(
    vx_user_channel_t * user_channel
)

function vx_user_channels_create

VIVOXSDK_DLLEXPORT int vx_user_channels_create(
    int size,
    vx_user_channels_t * list_out
)

function vx_user_channels_free

VIVOXSDK_DLLEXPORT int vx_user_channels_free(
    vx_user_channel_t ** list,
    int size
)

function vx_connectivity_test_result_create

VIVOXSDK_DLLEXPORT int vx_connectivity_test_result_create(
    vx_connectivity_test_result_t ** connectivity_test_result,
    ND_TEST_TYPE tt
)

function vx_connectivity_test_result_free

VIVOXSDK_DLLEXPORT int vx_connectivity_test_result_free(
    vx_connectivity_test_result_t * connectivity_test_result
)

function vx_connectivity_test_results_create

VIVOXSDK_DLLEXPORT int vx_connectivity_test_results_create(
    int size,
    vx_connectivity_test_results_t * list_out
)

function vx_connectivity_test_results_free

VIVOXSDK_DLLEXPORT int vx_connectivity_test_results_free(
    vx_connectivity_test_result_t ** list,
    int size
)

function vx_account_create

VIVOXSDK_DLLEXPORT int vx_account_create(
    vx_account_t ** account
)

function vx_account_free

VIVOXSDK_DLLEXPORT int vx_account_free(
    vx_account_t * account
)

function vx_device_create

VIVOXSDK_DLLEXPORT int vx_device_create(
    vx_device_t ** device
)

function vx_device_free

VIVOXSDK_DLLEXPORT int vx_device_free(
    vx_device_t * device
)

function vx_devices_create

VIVOXSDK_DLLEXPORT int vx_devices_create(
    int size,
    vx_devices_t * list_out
)

function vx_devices_free

VIVOXSDK_DLLEXPORT int vx_devices_free(
    vx_device_t ** list,
    int size
)

function vx_buddy_create

VIVOXSDK_DLLEXPORT int vx_buddy_create(
    vx_buddy_t ** buddy
)

function vx_buddy_free

VIVOXSDK_DLLEXPORT int vx_buddy_free(
    vx_buddy_t * buddy
)

function vx_buddy_list_create

VIVOXSDK_DLLEXPORT int vx_buddy_list_create(
    int size,
    vx_buddy_list_t * list_out
)

function vx_buddy_list_free

VIVOXSDK_DLLEXPORT int vx_buddy_list_free(
    vx_buddy_t ** list,
    int size
)

function vx_group_create

VIVOXSDK_DLLEXPORT int vx_group_create(
    vx_group_t ** group
)

function vx_group_free

VIVOXSDK_DLLEXPORT int vx_group_free(
    vx_group_t * group
)

function vx_group_list_create

VIVOXSDK_DLLEXPORT int vx_group_list_create(
    int size,
    vx_group_list_t * list_out
)

function vx_group_list_free

VIVOXSDK_DLLEXPORT int vx_group_list_free(
    vx_group_t ** list,
    int size
)

function vx_name_value_pair_create

VIVOXSDK_DLLEXPORT int vx_name_value_pair_create(
    vx_name_value_pair_t ** nvpair
)

function vx_name_value_pair_free

VIVOXSDK_DLLEXPORT int vx_name_value_pair_free(
    vx_name_value_pair_t * nvpair
)

function vx_name_value_pairs_create

VIVOXSDK_DLLEXPORT int vx_name_value_pairs_create(
    int size,
    vx_name_value_pairs_t * list_out
)

function vx_name_value_pairs_free

VIVOXSDK_DLLEXPORT int vx_name_value_pairs_free(
    vx_name_value_pair_t ** list,
    int size
)

function vx_conversation_create

VIVOXSDK_DLLEXPORT int vx_conversation_create(
    vx_conversation_t ** conversation
)

function vx_conversation_free

VIVOXSDK_DLLEXPORT int vx_conversation_free(
    vx_conversation_t * conversation
)

function vx_conversation_list_create

VIVOXSDK_DLLEXPORT int vx_conversation_list_create(
    int size,
    vx_conversation_list_t * list_out
)

function vx_conversation_list_free

VIVOXSDK_DLLEXPORT int vx_conversation_list_free(
    int size,
    vx_conversation_t ** list
)

function vx_strdup

VIVOXSDK_DLLEXPORT char * vx_strdup(
    const char * 
)

Allocate string data to send to the SDK.

Note: This function will not work until vx_initialize3() is called and after vx_uninitialize() is called.

function vx_free

VIVOXSDK_DLLEXPORT int vx_free(
    char * 
)

Free string data returned to the application.

Note: This function will not work until vx_initialize3() is called and after vx_uninitialize() is called.

This function is rarely used in practice.

function vx_unallocate

VIVOXSDK_DLLEXPORT int vx_unallocate(
    void * p
)

function vx_allocate

VIVOXSDK_DLLEXPORT void * vx_allocate(
    size_t nBytes
)

function vx_reallocate

VIVOXSDK_DLLEXPORT void * vx_reallocate(
    void * p,
    size_t nBytes
)

function vx_calloc

VIVOXSDK_DLLEXPORT void * vx_calloc(
    size_t num,
    size_t bytesPerElement
)

function vx_allocate_aligned

VIVOXSDK_DLLEXPORT void * vx_allocate_aligned(
    size_t alignment,
    size_t size
)

function vx_unallocate_aligned

VIVOXSDK_DLLEXPORT int vx_unallocate_aligned(
    void * p
)

function vx_get_message

VIVOXSDK_DLLEXPORT int vx_get_message(
    vx_message_base_t ** message
)

The VxSDK polling function.

Parameters:

  • message [out] The object containing the message data.

Return: The status of the poll: VX_GET_MESSAGE_AVAILABLE = Success, VX_GET_MESSAGE_FAILURE = Failure, VX_GET_MESSAGE_NO_MESSAGE = No Message Available

This should be called periodically to check for any incoming events.

function vx_issue_request

VIVOXSDK_DLLEXPORT int vx_issue_request(
    vx_req_base_t * request
)

Parameters:

  • request The request object to execute. This is of one of the vx_req_* structs.

Return: The success status of the request.

function vx_issue_request2

VIVOXSDK_DLLEXPORT int vx_issue_request2(
    vx_req_base_t * request
)

Execute the given request.

Parameters:

  • request The request object to execute. This is of one of the vx_req_* structs.

Return: The success status of the request.

This function returns an error if the SDK is not initialized (see vx_initialize3()).

function vx_issue_request3

VIVOXSDK_DLLEXPORT int vx_issue_request3(
    vx_req_base_t * request,
    int * request_count
)

Execute the given request.

Parameters:

  • request The request object to execute. This is of one of the vx_req_* structs.
  • request_count If non-null, vx_issue_request3 outputs the number of requests that are still outstanding. Requests at a rate of 12 requests per second - an application can use this value to determine if the application is issuing requests at an unacceptable rate.

Return: The success status of the request.

This function returns an error if the SDK is not initialized (see vx_initialize3()).

function vx_request_to_xml

VIVOXSDK_DLLEXPORT int vx_request_to_xml(
    void * request,
    char ** xml
)

Get the XML for the given request.

Parameters:

  • request The request object.
  • xml [out] The XML string.

function vx_xml_to_request

VIVOXSDK_DLLEXPORT vx_request_type vx_xml_to_request(
    const char * xml,
    void ** request,
    char ** error
)

Get a request for the given XML string.

Parameters:

  • xml The XML string.
  • request [out] The request struct.
  • error [out] The XML parse error string (if any error occurs). NULL otherwise.

Return: The request struct type. If no struct could be created from the XML, req_none is returned.

function vx_response_to_xml

VIVOXSDK_DLLEXPORT int vx_response_to_xml(
    void * response,
    char ** xml
)

Get the XML for the given response.

Parameters:

  • response The response object.
  • xml [out] The XML string.

function vx_xml_to_response

VIVOXSDK_DLLEXPORT vx_response_type vx_xml_to_response(
    const char * xml,
    void ** response,
    char ** error
)

Get a response for the given XML string.

Parameters:

  • xml The XML string.
  • response [out] The response struct.
  • error [out] The XML parse error string (if any error occurs). NULL otherwise.

Return: The response struct type. If no struct could be created from the XML, resp_none is returned.

function vx_event_to_xml

VIVOXSDK_DLLEXPORT int vx_event_to_xml(
    void * event,
    char ** xml
)

Get the XML for the given event.

Parameters:

  • event The event object.
  • xml [out] The XML string.

function vx_xml_to_event

VIVOXSDK_DLLEXPORT vx_event_type vx_xml_to_event(
    const char * xml,
    void ** event,
    char ** error
)

Get a event for the given XML string.

Parameters:

  • xml The XML string.
  • event [out] The event struct.
  • error [out] The XML parse error string (if any error occurs). NULL otherwise.

Return: The event struct type. If no struct could be created from the XML, req_none is returned.

function vx_get_message_type

VIVOXSDK_DLLEXPORT vx_message_type vx_get_message_type(
    const char * xml
)

Determine whether the XML refers to a request, response, or event.

function vx_get_time_ms

VIVOXSDK_DLLEXPORT unsigned long long vx_get_time_ms(
    void 
)

Get Millisecond Counter.

function vx_get_time_milli_seconds

VIVOXSDK_DLLEXPORT unsigned long long vx_get_time_milli_seconds(
    void 
)

Get Millisecond Counter.

function vx_get_time_micro_seconds

VIVOXSDK_DLLEXPORT unsigned long long vx_get_time_micro_seconds(
    void 
)

Get Microsecond Counter.

function vx_sleep_milli_seconds

VIVOXSDK_DLLEXPORT long long vx_sleep_milli_seconds(
    unsigned long long milli_seconds
)

Sleep for the specified number of milliseconds.

Parameters:

  • milli_seconds [in] Duration to sleep in milliseconds.

Return: The difference between the actual and the specified sleep time in milliseconds.

function vx_register_message_notification_handler

VIVOXSDK_DLLEXPORT int vx_register_message_notification_handler(
    void(*)(void *) pf_handler,
    void * cookie
)

Register a callback that is called when a message is placed in the queue.

The application should use this to signal the main application thread that will then wakeup and call vx_get_message;

function vx_unregister_message_notification_handler

VIVOXSDK_DLLEXPORT int vx_unregister_message_notification_handler(
    void(*)(void *) pf_handler,
    void * cookie
)

Unregister a notification handler.

function vx_wait_for_message

VIVOXSDK_DLLEXPORT vx_message_base_t * vx_wait_for_message(
    int msTimeout
)

Block the caller until a message is available.

Returns NULL if no message was available within the allotted time.

function vx_register_logging_initialization

VIVOXSDK_DLLEXPORT int vx_register_logging_initialization(
    vx_log_type log_type,
    const char * log_folder,
    const char * log_filename_prefix,
    const char * log_filename_suffix,
    int log_level,
    void(*)(const char *source, const char *level, const char *message) pf_handler
)

Register a callback that is called to initialize logging.

The application should use this to signal the main application thread that will then wakeup and call vx_get_message;

function vx_get_log_file_path

VIVOXSDK_DLLEXPORT char * vx_get_log_file_path(
    void 
)

Deprecated:

File logging is not supported. Get the SDK log file path.

function vx_unregister_logging_handler

VIVOXSDK_DLLEXPORT int vx_unregister_logging_handler(
    void(*)(void *) pf_handler,
    void * cookie
)

Unregister the logging callback notification handler.

Parameters:

  • pf_handler - OBSOLETE AND UNUSED
  • cookie - OBSOLETE AND UNUSED

Because the parameters are reserved for future use, pass NULL for each of the parameters (for example: vx_unregister_logging_handler(0, 0);). If a logging handler is registered, then it must be unregistered before shutting down the SDK.

function vx_create_account

VIVOXSDK_DLLEXPORT int vx_create_account(
    const char * acct_mgmt_server,
    const char * admin_name,
    const char * admin_pw,
    const char * uname,
    const char * pw
)

function vx_get_crash_dump_count

VIVOXSDK_DLLEXPORT int vx_get_crash_dump_count(
    void 
)

The number of crash dumps stored on disk.

Note: Not supported on mobile or console platforms.

function vx_set_crash_dump_generation_enabled

VIVOXSDK_DLLEXPORT int vx_set_crash_dump_generation_enabled(
    int value
)

Enable crash dump generation.

Note: Not supported on mobile or console platforms.

function vx_get_crash_dump_generation

VIVOXSDK_DLLEXPORT int vx_get_crash_dump_generation(
    void 
)

Determine if crash dump generation is enabled.

Note: Not supported on mobile or console platforms.

function vx_read_crash_dump

VIVOXSDK_DLLEXPORT char * vx_read_crash_dump(
    int index
)

Get the Base64-encoded crash dump information.

Note: Not supported on mobile or console platforms.

function vx_get_crash_dump_timestamp

VIVOXSDK_DLLEXPORT time_t vx_get_crash_dump_timestamp(
    int index
)

Get the timestamp of a crash.

Note: Not supported on mobile or console platforms.

function vx_delete_crash_dump

VIVOXSDK_DLLEXPORT int vx_delete_crash_dump(
    int index
)

Delete the crash dump.

Note: Not supported on mobile or console platforms.

function vx_on_application_exit

VIVOXSDK_DLLEXPORT int vx_on_application_exit(
    void 
)

Some applications may need to call this routine before exiting.

Note: Applications must call vx_uninitialize() before calling this routine.

Attention: PC, console, and mobile applications are not required to call this routine because it has no effect for applications on these platforms.

function vx_get_sdk_version_info

VIVOXSDK_DLLEXPORT const char * vx_get_sdk_version_info(
    void 
)

Get the SDK version info.

function vx_get_sdk_version_info_ex

VIVOXSDK_DLLEXPORT const char * vx_get_sdk_version_info_ex(
    void 
)

Get the SDK extended version info.

function vx_apply_font_to_file

VIVOXSDK_DLLEXPORT int vx_apply_font_to_file(
    const char * fontDefinition,
    const char * inputFile,
    const char * outputFile
)

Apply a Vivox voice font to a .wav file.

Parameters:

  • fontDefinition - A string that contains the font "definition" in XML format.
  • inputFile - A string that contains the path to the input .wav file, which contains the "unmodified" voice.
  • outputFile - A string that contains the path to the output .wav file with the font applied.

Return: - 0 if successful, non-zero if failed.

function vx_apply_font_to_file_return_energy_ratio

VIVOXSDK_DLLEXPORT int vx_apply_font_to_file_return_energy_ratio(
    const char * fontDefinition,
    const char * inputFile,
    const char * outputFile,
    double * energyRatio
)

Apply a Vivox voice font to a .wav file and return the energy ratio (Output Energy/Input Energy).

Parameters:

  • fontDefinition - A string that contains the font "definition" in XML format.
  • inputFile - A string that contains the path to the input .wav file, which contains the "unmodified" voice.
  • outputFile - A string that contains the path to the output .wav file with the font applied.
  • energyRatio - The Raw Energy ratio between the input and output audio.

Return: - 0 if successful, non-zero if failed.

function vx_apply_font_to_vxz_file_return_energy_ratio

VIVOXSDK_DLLEXPORT int vx_apply_font_to_vxz_file_return_energy_ratio(
    const char * fontDefinition,
    const char * inputFile,
    const char * outputFile,
    double * energyRatio
)

Apply a Vivox voice font to a .vxz file and return the energy ratio (Output Energy/Input Energy)

Parameters:

  • fontDefinition - A string that contains the font "definition" in XML format.
  • inputFile - A string that contains the path to the input .vxz file, which contans the "unmodified" voice.
  • outputFile - A string that contains the path to the output .wav file with the font applied.
  • energyRatio - The Raw Energy ratio between the input and output audio.

Return: - 0 if successful, non-zero if failed.

function vx_copy_audioBuffer

VIVOXSDK_DLLEXPORT void * vx_copy_audioBuffer(
    void * audioBufferPtr
)

Create a copy of the internal local audio buffer associated with the vx_req_aux_start_buffer_capture_t request/response.

Parameters:

  • audioBufferPtr - A void pointer that should be passed in uninitialized.

See: vx_req_aux_start_buffer_capture

Return: - No return value is provided. On success, the audioBufferPtr will point to a copy of the internal audio buffer. Otherwise, audioBufferPtr is set to NULL.

function vx_get_audioBuffer_duration

VIVOXSDK_DLLEXPORT double vx_get_audioBuffer_duration(
    void * audioBufferPtr
)

Get the duration of the audio buffer in seconds.

Parameters:

  • audioBufferPtr - A void pointer that should be passed in uninitialized.

See: vx_req_aux_start_buffer_capture

Return: - The duration of the audio buffer in seconds.

function vx_get_audioBuffer_sample_rate

VIVOXSDK_DLLEXPORT int vx_get_audioBuffer_sample_rate(
    void * audioBufferPtr
)

Get the sample rate of the audio buffer.

Parameters:

  • audioBufferPtr - A pointer to audio data in a Vivox proprietary format.

See: vx_req_aux_start_buffer_capture

Return: - The sample rate of the buffer's data. 0 if the buffer does not exist.

function vx_free_audioBuffer

VIVOXSDK_DLLEXPORT int vx_free_audioBuffer(
    void ** audioBufferPtr
)

Free up all memory associated with an allocated Vivox audioBufferPtr.

Parameters:

  • audioBufferPtr - A pointer to audio data in a Vivox proprietary format.

Generated by the vx_copy_audioBuffer() call.

function vx_export_audioBuffer_to_pcm

VIVOXSDK_DLLEXPORT int vx_export_audioBuffer_to_pcm(
    void * audioBufferPtr,
    short * pcmBuffer,
    int maxSamples
)

Export audio data in an audioBufferPtr to a memory buffer as PCM.

Parameters:

  • audioBufferPtr - A pointer to audio data in a Vivox proprietary format.
  • pcmBuffer - A pointer to the pre-allocated memory buffer.
  • maxSamples - The length of the buffer in samples.

Return: - The number of samples copied to the buffer. -1 if failed.

function vx_export_audioBuffer_to_wav_file

VIVOXSDK_DLLEXPORT int vx_export_audioBuffer_to_wav_file(
    void * audioBufferPtr,
    const char * outputFile
)

Export audio data in an audioBufferPtr to a .wav file.

Parameters:

  • audioBufferPtr - A pointer to audio data in a Vivox proprietary format.
  • outputFile - A string that contains the path to the output .wav file.

Return: - 0 if successful, non-zero if failed.

function vx_export_audioBuffer_to_memory

VIVOXSDK_DLLEXPORT int vx_export_audioBuffer_to_memory(
    void * audioBufferPtr,
    short ** audioBufferOut,
    int * nSamplesOut,
    int * sampleRateOut,
    int * nChannelsOut
)

Export audio data in an audioBufferPtr to memory.

Parameters:

  • audioBufferPtr - A pointer to audio data in a Vivox proprietary format.
  • audioBufferOut - An interleaved (if stereo) audio buffer of PCM-encoded audio. Note that this must be freed with vx_free().
  • nSamplesOut - The number of samples.
  • sampleRateOut - The sample rate of the audio buffer.
  • nChannelsOut - The number of channels in the buffer.

Return: - 0 if successful, non-zero if failed.

function vx_set_out_of_process_server_address

VIVOXSDK_DLLEXPORT int vx_set_out_of_process_server_address(
    const char * address,
    unsigned short port
)

Set the default out of process server address.

Parameters:

  • address - The address of the out of process server. Use "127.0.0.1" for most applications.
  • port - port - Use 44125 for most applications.

Return: - 0 if successful, non-zero if failed.

When an address is set, requests issued by using vx_issue_request are sent to the server at the supplied address instead of being handled in the current process context.

function vx_initialize

VIVOXSDK_DLLEXPORT int vx_initialize(
    void 
)

Return: - 0 if successful, non-zero if failed.

function vx_initialize3

VIVOXSDK_DLLEXPORT int vx_initialize3(
    vx_sdk_config_t * config,
    size_t config_size
)

An application must call this API before calling any other Vivox API, except vx_get_default_config3();.

Return: - 0 if successful, non-zero if failed.

function vx_is_initialized

VIVOXSDK_DLLEXPORT int vx_is_initialized(
    void 
)

Check if the Vivox SDK was initialized with an vx_initialize3() call, and not yet uninitialized with an vx_uninitialize() call.

Return: - 0 if not initialized, non-zero if initialized.

function vx_get_default_config3

VIVOXSDK_DLLEXPORT int vx_get_default_config3(
    vx_sdk_config_t * config,
    size_t config_size
)

An application must call this API before calling any other Vivox API.

Return: - 0 if successful, non-zero if failed.

function vx_uninitialize

VIVOXSDK_DLLEXPORT int vx_uninitialize(
    void 
)

An application must call this before exit.

Return: - 0 if successful, non-zero if failed.

function vx_debug_call

VIVOXSDK_DLLEXPORT int vx_debug_call(
    void * 
)

function vx_get_system_stats

VIVOXSDK_DLLEXPORT int vx_get_system_stats(
    vx_system_stats_t * system_stats
)

Get statistics about various system internals.

Return: - 0 if successful, non-zero if failed.

function vx_get_int_var

VIVOXSDK_DLLEXPORT int vx_get_int_var(
    const char * var_name,
    int * p_value
)

Get named variables.

Parameters:

  • var_name - The name of the variable.
  • p_value - Where to store the value of the variable.

Return: - 0 if successful, non-zero if failed.

function vx_set_int_var

VIVOXSDK_DLLEXPORT int vx_set_int_var(
    const char * var_name,
    int value
)

Set named variables.

Parameters:

  • var_name - The name of the variable.
  • - The integer value to set.

Return: - 0 if successful, non-zero if failed.

function vx_destroy_message

VIVOXSDK_DLLEXPORT int vx_destroy_message(
    vx_message_base_t * message
)

Deallocate any message of any type.

function vx_debug_generate_token

VIVOXSDK_DLLEXPORT char * vx_debug_generate_token(
    const char * issuer,
    vx_time_t expiration,
    const char * vxa,
    unsigned long long serial,
    const char * subject,
    const char * from_uri,
    const char * to_uri,
    const unsigned char * key,
    size_t key_len
)

Generate a Vivox Access Token.

Parameters:

  • issuer - A standard issuer claim.
  • expiration - A standard expiration time claim. If set to (vx_time_t)-1, uses the default time of now(0)+300.
  • vxa - A Vivox action, for example, "login", "join", "kick", or "mute".
  • serial number - Use this to guarantee uniqueness within an epoch second.
  • subject - Optional: The URI of the target of the actions "kick" and "mute". NULL otherwise.
  • from_uri - A SIP From URI.
  • to_uri - A SIP To URI.
  • key - A token-signing key
  • key_len - The length of the token-signing key.

Return: null-terminated - A buffer to be freed with vx_free(). If NULL is returned, an error occurred.

!!! This function should only be called when prototyping or debugging token generation server implementations. !!! It should not be in production code, because that would require the issuer/key pair to be resident client memory, which would create a security exposure.

function vx_get_http

VIVOXSDK_DLLEXPORT unsigned int vx_get_http(
    const char * url,
    unsigned int * response_code,
    char ** content,
    size_t * content_len,
    char ** content_type,
    size_t * content_type_len
)

Synchronously download the contents of the specified URL with the GET method.

Parameters:

  • url - [in] The URL of the resource to download.
  • response_code - [out] A pointer to the returned response code (0 on error, >= 200 after the request finished).
  • content - [out] A pointer to the downloaded content is stored here, and is guaranteed to be NULL-terminated. The memory is allocated automatically. Use vx_free_http() to free up the allocated buffers.
  • content_len - [out] A pointer to the returned content length.
  • content_type - [out] A pointer to the downloaded content type is stored here, and is guaranteed to be NULL-terminated. The memory is allocated automatically. Use vx_free_http() to free up the allocated buffers.
  • content_type_len - [out] A pointer to the returned content type length.

Return: - 0 if successful, non-zero if failed.

function vx_free_http

VIVOXSDK_DLLEXPORT int vx_free_http(
    char ** content,
    char ** content_type
)

Free the memory allocated during the vx_get_http() call.

Parameters:

  • content - [in] The same value as what is passed to vx_get_http().
  • content_type - [in] The same value as what is passed to vx_get_http().

Note: Call this function only if vx_get_http() returned zero.

function vx_get_random_user_id

VIVOXSDK_DLLEXPORT char * vx_get_random_user_id(
    const char * prefix
)

Get a random guest user ID with the given prefix.

Parameters:

  • - [in] prefix The prefix for the user.

Note: This must be deallocated with vx_free();

The returned ID always starts and ends with the '.' character.

function vx_get_random_user_id_ex

VIVOXSDK_DLLEXPORT char * vx_get_random_user_id_ex(
    const char * prefix,
    const char * issuer
)

Get a random guest user ID for the given issuer with the given prefix.

Parameters:

  • prefix - [in] The prefix for the user.
  • issuer - [in, optional] The issuer. If NULL or an empty string is passed, the generated user ID is the same as what is generated by vx_get_random_user_id().

Note: This must be deallocated with vx_free();

The returned ID always starts and ends with the '.' character.

function vx_get_random_channel_uri

VIVOXSDK_DLLEXPORT char * vx_get_random_channel_uri(
    const char * prefix,
    const char * realm
)

Get a random ephemeral channel ID with the given prefix for the specific realm.

Parameters:

  • prefix - [in] The prefix for the channel.
  • realm - [in] The realm for that channel (for example, mt1s.vivox.com).

Note: This must be deallocated with vx_free();

The prefix should start with one of the following options: confctl-g- for general non-positional channels confctl-e- for echo channels confctl-d- for positional channels

function vx_get_random_channel_uri_ex

VIVOXSDK_DLLEXPORT char * vx_get_random_channel_uri_ex(
    const char * prefix,
    const char * realm,
    const char * issuer
)

Get a random ephemeral channel ID for the given issuer with the given prefix for the specific realm.

Parameters:

  • prefix - [in] The prefix for the channel.
  • realm - [in] The realm for that channel (for example, mt1s.vivox.com).
  • issuer - [in, optional] The issuer. If NULL or an empty string is passed, the generated channel ID is the same as what is generated by vx_get_random_channel_uri().

Note: This must be deallocated with vx_free();

The prefix should start with one of the following options: confctl-g- for general non-positional channels confctl-e- for echo channels confctl-d- for positional channels

function vx_get_user_uri

VIVOXSDK_DLLEXPORT char * vx_get_user_uri(
    const char * name,
    const char * realm,
    const char * issuer
)

Generate the fully specified URI of a user with the given name for the given realm and issuer.

Parameters:

  • name - [in] The unique account name that you assigned to the user.
  • realm - [in] The realm for that user (for example, mt1s.vivox.com).
  • issuer - [in, optional] The issuer. If NULL or an empty string is passed, the generated user URI is the same as what is generated with no argument.

Note: This must be deallocated with vx_free();

function vx_get_echo_channel_uri

VIVOXSDK_DLLEXPORT char * vx_get_echo_channel_uri(
    const char * name,
    const char * realm,
    const char * issuer
)

Generate the fully specified URI of an echo channel with the given name for the given realm and issuer.

Parameters:

  • name - [in] The name you assigned to the channel.
  • realm - [in] The realm for that channel (for example, mt1s.vivox.com).
  • issuer - [in, optional] The issuer. If NULL or an empty string is passed, the generated user URI is the same as what is generated with no argument.

Note: This must be deallocated with vx_free();

function vx_get_general_channel_uri

VIVOXSDK_DLLEXPORT char * vx_get_general_channel_uri(
    const char * name,
    const char * realm,
    const char * issuer
)

Generate the fully specified URI of a general non-positional channel with the given name for the given realm and issuer.

Parameters:

  • name - [in] The name you assigned to the channel.
  • realm - [in] The realm for that channel (for example, mt1s.vivox.com).
  • issuer - [in, optional] The issuer. If NULL or an empty string is passed, the generated user URI is the same as what is generated with no argument.

Note: This must be deallocated with vx_free();

function vx_get_positional_channel_uri

VIVOXSDK_DLLEXPORT char * vx_get_positional_channel_uri(
    const char * name,
    const char * realm,
    int max_range,
    int clamping_distance,
    double rolloff,
    vx_channel_rolloff_curve_type distance_model,
    const char * issuer
)

Generate the fully specified URI of a positional channel with the given name and 3D properties for the given realm and issuer.

Parameters:

  • name - [in] The name you assigned to the channel.
  • realm - [in] The realm for that channel (for example, mt1s.vivox.com).
  • max_range - [in] The maximum distance from the listener at which a speaker can be heard. This must be an integer > 0.
  • clamping_distance - [in] The distance from the listener at which a speaker’s voice is heard at its original volume. This must be an integer in the range 0 <= clamping_distance <= max_range.
  • rolloff - [in] The strength of the volume attenuation as the speaker moves away from the listener. This must be a floating point value >= 0 that is rounded to three decimal places.
  • distance_model - [in] The curve that determines volume attenuation at distances between the clamping_distance and max_range, scaled by the rolloff.
  • issuer - [in, optional] The issuer. If NULL or an empty string is passed, the generated user URI is the same as what is generated with no argument.

Note: This must be deallocated with vx_free(); URIs with different 3D properties are considered different channels.

function vx_uri_to_string

VIVOXSDK_DLLEXPORT char * vx_uri_to_string(
    int is_multitenant,
    const char * uri
)

Return a textual representation of the compositional elements of a Vivox URI, suitable for logging.

Parameters:

  • is_multitenant - [in] 1 if the URI includes a token issuer, or 0 otherwise.
  • uri - [in] A fully specified URI representing a Vivox user or channel.

Note: This must be deallocated with vx_free(); The string contains line breaks.

For instance, whether it is a user or channel URI, the name, realm, and other properties are listed.

function vx_opus_set_bit_rate

VIVOXSDK_DLLEXPORT int vx_opus_set_bit_rate(
    int bits_per_second
)

Set the bitrate for all OPUS encoders.

Parameters:

  • bits_per_second - [in] The requested bitrate, 6000-128000 bit/s.

Return: - 0 if successful, non-zero if failed.

function vx_opus_get_bit_rate

VIVOXSDK_DLLEXPORT int vx_opus_get_bit_rate(
    int * p_bits_per_second
)

Get the current OPUS bitrate.

Parameters:

  • p_bits_per_second - [out] A pointer to the returned value.

Return: - 0 if successful, non-zero if failed.

function vx_opus_set_complexity

VIVOXSDK_DLLEXPORT int vx_opus_set_complexity(
    int complexity
)

Set the complexity for all OPUS encoders.

Parameters:

  • complexity - [in] The requested complexity, 0-10.

Return: - 0 if successful, non-zero if failed.

function vx_opus_get_complexity

VIVOXSDK_DLLEXPORT int vx_opus_get_complexity(
    int * p_complexity
)

Get the current OPUS complexity.

Parameters:

  • p_complexity - [out] A pointer to the returned value.

Return: - 0 if successful, non-zero if failed.

function vx_opus_set_vbr_mode

VIVOXSDK_DLLEXPORT int vx_opus_set_vbr_mode(
    int vbr_mode
)

Set the VBR mode for all OPUS encoders.

Parameters:

  • vbr_mode - [in] The requested mode (vx_opus_vbr_mode).

Return: - 0 if successful, non-zero if failed.

function vx_opus_get_vbr_mode

VIVOXSDK_DLLEXPORT int vx_opus_get_vbr_mode(
    int * p_vbr_mode
)

Get the current OPUS VBR mode.

Parameters:

  • p_vbr_mode - [out] A pointer to the returned value (vx_opus_vbr_mode).

Return: - 0 if successful, non-zero if failed.

function vx_opus_set_bandwidth

VIVOXSDK_DLLEXPORT int vx_opus_set_bandwidth(
    int bandwidth
)

Set the bandwidth for all OPUS encoders.

Parameters:

  • bandwidth - [in] The requested bandwidth (vx_opus_bandwidth).

Return: - 0 if successful, non-zero if failed.

function vx_opus_get_bandwidth

VIVOXSDK_DLLEXPORT int vx_opus_get_bandwidth(
    int * p_bandwidth
)

Get the current OPUS bandwidth.

Parameters:

  • p_bandwidth - [out] A pointer to the returned value (vx_opus_bandwidth).

Return: - 0 if successful, non-zero if failed.

function vx_get_available_codecs_mask

VIVOXSDK_DLLEXPORT unsigned int vx_get_available_codecs_mask(
    void 
)

Get a mask for all available codecs (to be used as configured_codecs).

function vx_get_default_codecs_mask

VIVOXSDK_DLLEXPORT unsigned int vx_get_default_codecs_mask(
    void 
)

Get a recommended default mask for available codecs (to be used as configured_codecs).

function vx_get_dump_memory_interval

VIVOXSDK_DLLEXPORT int vx_get_dump_memory_interval(
    void 
)

Get the current period of the Memory Usage information dumping to logcat.

Return: - The sampling interval in seconds. 0 if memory dump is turned off.

Note: Android platform only. Does nothing on other platforms.

function vx_cpumonitor_start

VIVOXSDK_DLLEXPORT int vx_cpumonitor_start(
    int interval,
    int report_interval
)

Start the CPU load information dumping to logcat.

Parameters:

  • interval - [in] The sampling interval in milliseconds. The recommended value is 1000 milliseconds. It is not recommended to have this value under 100 milliseconds.
  • report_interval - [in] The reporting interval in milliseconds. The SDK will dump the collected data to logcat once per reporting interval. The recommended value is 5000 milliseconds. It is not recommended to have this value under 1000 milliseconds.

Note: Android platform only. Does nothing on other platforms.

Larger report_interval reduces the average amount of information output by the SDK to logcat. Smaller sampling intervals allow for better detection of short peak loads.

function vx_cpumonitor_stop

VIVOXSDK_DLLEXPORT int vx_cpumonitor_stop(
    void 
)

Stop the CPU load information dumping to logcat.

Note: Android platform only. Does nothing on other platforms.

function vx_cpumonitor_start_eater

VIVOXSDK_DLLEXPORT int vx_cpumonitor_start_eater(
    int nthreads,
    int priority
)

Start the requested number of tight loop threads with the requested priority.

Parameters:

  • nthreads - [in] The number of threads with tight loops to start. Passing 0 starts the number of threads matching the number of available device processor cores.
  • priority - [in] The scheduling priority to be used for each created thread. 0 leaves the default priority. Valid non-zero values are from -20 (the maximum priority - this is dangerous and should not be used) to 20 (the minimum possible priority). It is recommended that you use value 0 for priority.

Note: Android platform only. Does nothing on other platforms.

Attention: After working for some time at the maximum possible speed, the CPU will heat up, and the system will throttle it to prevent overheating.

Android devices can scale the CPU frequency down or stop some cores when the load is low. This decreases the device performance and affects the CPU load measurements provided by vx_cpumonitor_start() - the reported load will be higher. To prevent this, the vx_cpumonitor_start_eater() is provided. If low priority threads with tight loops will be started for each available CPU core, then the system sets each core frequency to its maximum value, and the measurement results reflect the CPU load relative to the device's maximum possible performance.

function vx_cpumonitor_stop_eater

VIVOXSDK_DLLEXPORT int vx_cpumonitor_stop_eater(
    void 
)

Stop all the CPU eater threads started with vx_cpumonitor_start_eater() call.

Note: Android platform only. Does nothing on other platforms.

function vx_crash_test

VIVOXSDK_DLLEXPORT int vx_crash_test(
    vx_crash_test_type_t crash_type
)

Crash the program.

Parameters:

  • crash_type - The type of crash (see vx_crash_test_type).

function vx_set_message_rate_params

VIVOXSDK_DLLEXPORT int vx_set_message_rate_params(
    unsigned bucketSize,
    float messageSpeed,
    int fillBucket
)

Change the API message rate parameters.

Parameters:

  • messageSpeed - Messages per second.
  • fillBucket - is bool

function vx_set_default_message_rate_params

VIVOXSDK_DLLEXPORT int vx_set_default_message_rate_params(
    void 
)

Return the API message rate parameters to their default state.

function vx_android_set_mic_mute

VIVOXSDK_DLLEXPORT int vx_android_set_mic_mute(
    int mute
)

Mute or unmute the mic on Android.

Parameters:

  • mute - Non-zero mutes the microphone; 0 unmutes.

Return: - Non-zero if previous state was muted, 0 if previous state was unmuted.

Note: Android platform only. Does nothing on other platforms.

function vx_internal_enable_debug_mode_disable_strict_checks

VIVOXSDK_DLLEXPORT int vx_internal_enable_debug_mode_disable_strict_checks(
    void 
)

Internal: enable debug mode and disable the strict parameter check of some requests.

Attention: Do not call this function if you are not completely sure of what are you doing!

function vx_internal_disable_debug_mode_enable_strict_checks

VIVOXSDK_DLLEXPORT int vx_internal_disable_debug_mode_enable_strict_checks(
    void 
)

Internal: disable the debug mode enabled by vx_internal_enable_debug_mode_disable_strict_checks.

Attention: Do not call this function if you are not completely sure of what are you doing!

function vx_is_access_token_well_formed

VIVOXSDK_DLLEXPORT int vx_is_access_token_well_formed(
    const char * access_token,
    char ** error
)

Verify whether the passed access token is well-formed.

Parameters:

  • access_token - [in] An access token to check.
  • error - [out] An optional pointer to the returned verbose error description. Can be NULL. The returned string must be disposed of with vx_free() call.

Return: - Non-zero if access token looks well-formed, 0 otherwise.

function vx_vxd_send

VIVOXSDK_DLLEXPORT int vx_vxd_send(
    VX_HANDLE session_handle,
    const char * data,
    size_t size
)

Send VXD into the channel.

Parameters:

  • session_handle - [in] The session handle to send VXD to.
  • data - [in] The data to be sent.
  • size - [in] The data size in bytes.

Return: - 0 if successful, non-zero if failed (SDK not initialized, invalid argument (session, ptr), size too big).

function vx_vxd_recv

VIVOXSDK_DLLEXPORT int vx_vxd_recv(
    VX_HANDLE session_handle,
    vx_vxd_t ** vxd_ptr
)

Receive VXD from the channel.

Parameters:

  • session_handle - [in] The session handle to receive VXD from.
  • vxd_ptr - [out] On success, will contain a pointer to the received VXD. Untouched on failure. The caller is responsible for disposing of it with vx_vxd_destroy().

Return: - 0 if successful, non-zero if failed (SDK not initialized, invalid argument (session, ptr), no more data).

function vx_vxd_destroy

VIVOXSDK_DLLEXPORT int vx_vxd_destroy(
    vx_vxd_t * vxd
)

Dispose of the VXD object returned by vx_vxd_recv().

Parameters:

  • vxd - [in] VXD to dispose

Return: - 0 if successful, non-zero if failed (SDK not initialized).

function vx_get_path

VIVOXSDK_DLLEXPORT char * vx_get_path(
    unsigned int path_id
)

Get a specific path of various files and folders used by the SDK.

Parameters:

  • - The path ID.

Return: - A null-terminated buffer to be freed with vx_free(). If NULL is returned, an error occurred.

function vx_get_dynamic_voice_processing_switching_enabled

VIVOXSDK_DLLEXPORT int vx_get_dynamic_voice_processing_switching_enabled(
    int * enabled
)

Get the current value of the dynamic voice processing switching enabled setting.

Parameters:

  • enabled - [out] A pointer to the returned value (0 if disabled, 1 if enabled).

Return: - 0 if successful, non-zero if failed.

function vx_set_dynamic_voice_processing_switching_enabled

VIVOXSDK_DLLEXPORT int vx_set_dynamic_voice_processing_switching_enabled(
    int enabled
)

Enable and disable dynamic voice processing switching.

Parameters:

  • enabled - 1 to enable dynamic voice processing switching, and 0 to disable.

Return: - 0 if successful, non-zero if failed (SDK not initialized).

function vx_get_ios_voice_processing_io_mode

VIVOXSDK_DLLEXPORT int vx_get_ios_voice_processing_io_mode(
    int * mode
)

Get the mode for the ios_voice_processing_io_mode configuration field.

Parameters:

  • enabled - [out] A pointer to the returned value (2 to always use VPIO, 1 to use VPIO only for speakerphone, 0 to never use the VPIO).

Return: - 0 if successful, non-zero if failed.

function vx_set_ios_voice_processing_io_mode

VIVOXSDK_DLLEXPORT int vx_set_ios_voice_processing_io_mode(
    int mode
)

Set the mode for the ios_voice_processing_io_mode configuration field.

Parameters:

  • enabled - 2 to always use VPIO, 1 to use VPIO only for speakerphone, 0 to never use the VPIO

Return: - 0 if successful, non-zero if failed.

function vx_get_platform_aec_enabled

VIVOXSDK_DLLEXPORT int vx_get_platform_aec_enabled(
    int * enabled
)

Return an indication of whether platform-provided AEC is being used.

Parameters:

  • enabled - [out] A pointer to the returned value (0 if disabled, 1 if enabled).

Return: - 0 if successful, non-zero if failed.

function vx_set_platform_aec_enabled

VIVOXSDK_DLLEXPORT int vx_set_platform_aec_enabled(
    int enabled
)

Enable and disable platform-provided AEC.

Parameters:

  • enabled - 1 to enable platform-provided AEC, or 0 to disable.

Return: - 0 if successful, non-zero if failed (SDK not initialized).

Note: iOS only: This is an alias of vx_set_ios_voice_processing_io_mode(0|1). 0 when disabling, 1 when enabling.

function vx_get_vivox_aec_enabled

VIVOXSDK_DLLEXPORT int vx_get_vivox_aec_enabled(
    int * enabled
)

Get the internal AEC enabled/disabled state.

Return: - 0 if successful, non-zero if failed (SDK not initialized, internal AEC is not supported).

Enabling does not force AEC usage, but allows the SDK to use AEC when it is required.

function vx_set_vivox_aec_enabled

VIVOXSDK_DLLEXPORT int vx_set_vivox_aec_enabled(
    int enabled
)

Enable or disable the SDK's internal AEC.

Return: - 0 if successful, non-zero if failed (SDK not initialized, internal AEC is not supported).

Enabling does not force AEC usage, but allows the SDK to use AEC when it is required.

function vx_get_noise_suppression_enabled

VIVOXSDK_DLLEXPORT int vx_get_noise_suppression_enabled(
    int * enabled
)

Get the capture audio noise suppressor enabled/disabled state.

Return: - 0 if successful, non-zero if failed (SDK not initialized, invalid arguments).

function vx_get_noise_suppression_level

VIVOXSDK_DLLEXPORT int vx_get_noise_suppression_level(
    vx_noise_suppression_level * level
)

Get the capture audio noise suppressor suppression level.

Return: - 0 if successful, non-zero if failed (SDK not initialized, invalid arguments).

If noise suppression is disabled, 'level' reports the noise suppression level that will be used if noise suppression becomes enabled.

function vx_set_noise_suppression_enabled

VIVOXSDK_DLLEXPORT int vx_set_noise_suppression_enabled(
    int enabled
)

Enable or disable the SDK's capture audio noise suppressor.

Return: - 0 if successful, non-zero if failed (SDK not initialized).

function vx_set_noise_suppression_level

VIVOXSDK_DLLEXPORT int vx_set_noise_suppression_level(
    vx_noise_suppression_level level
)

Set the capture audio noise suppressor's suppression level.

Return: - 0 if successful, non-zero if failed (SDK not initialized).

A low suppression level slightly reduces steady-state noise while barely affecting voice. A high suppression level greatly reduces steady-state noise but may distort voice.

function vx_set_agc_enabled

VIVOXSDK_DLLEXPORT int vx_set_agc_enabled(
    int enabled
)

Enable or disable the SDK's internal AGC.

Return: - 0 if successful, non-zero if failed (SDK not initialized, internal AGC is not supported).

Enabling does not force AGC usage, but allows the SDK to use AGC when it is required.

function vx_get_agc_enabled

VIVOXSDK_DLLEXPORT int vx_get_agc_enabled(
    int * enabled
)

Get the internal AGC enabled/disabled state.

Return: - 0 if successful, non-zero if failed (SDK not initialized, internal AGC is not supported).

Enabling does not force AGC usage, but allows the SDK to use AGC when it is required.

function vx_set_volume_based_duplication_suppression_enabled

VIVOXSDK_DLLEXPORT int vx_set_volume_based_duplication_suppression_enabled(
    int enabled
)

Enable or disable volume based audio duplication suppression.

Return: - 0 if successful, non-zero if failed.

By default, when a remote participant is transmitting to multiple channels, the SDK will only render the audio once where the participant is loudest. Note that this does not apply to 3D channels, where the SDK always renders the audio of all participants. Disabling this allows the SDK to duplicate audio for local rendering of 2D channels when a remote participant is transmitting to multiple channels.

function vx_get_volume_based_duplication_suppression_enabled

VIVOXSDK_DLLEXPORT int vx_get_volume_based_duplication_suppression_enabled(
    int * enabled
)

Get the internal state of the volume based audio duplication suppression.

Return: - 0 if successful, non-zero if failed.

By default, when a remote participant is transmitting to multiple channels, the SDK will only render the audio once where the participant is loudest. Note that this does not apply to 3D channels, where the SDK always renders the audio of all participants. Disabling this allows the SDK to duplicate audio for local rendering of 2D channels when a remote participant is transmitting to multiple channels.

function vx_set_3d_channel_volume_protection_enabled

VIVOXSDK_DLLEXPORT int vx_set_3d_channel_volume_protection_enabled(
    int enabled
)

Enable or disable the SDK's internal volume protection for 3D channels.

Return: - 0 if successful, non-zero if failed

Enabling volume protection lowers 3D channel max loudness so that distortion cannot occur at the default volume while sound is off-center. Disabling volume protection will increase 3D channel max loudness, but slight distortion may occur at the default volume while sound is off-center.

function vx_get_3d_channel_volume_protection_enabled

VIVOXSDK_DLLEXPORT int vx_get_3d_channel_volume_protection_enabled(
    int * enabled
)

Get the internal 3D channel volume protection state.

Return: - 0 if successful, non-zero if failed

function vx_set_audio_clipping_protector_enabled

VIVOXSDK_DLLEXPORT int vx_set_audio_clipping_protector_enabled(
    int enabled
)

Enable or disable the SDK's internal audio clipping protector (soft clipper).

Parameters:

  • enabled - 1 to enable the audio clipping protector, 0 to disable.

Return: - 0 if successful, non-zero if failed.

The audio clipping protector can only affect boosted audio (capture or render with volume settings greater than 50) Enabling this allows Vivox to reduce the dynamic range of samples that are near clipping. Disabling allows ordinary clipping to occur.

function vx_get_audio_clipping_protector_enabled

VIVOXSDK_DLLEXPORT int vx_get_audio_clipping_protector_enabled(
    int * enabled
)

Get the internal audio clipping protector enabled state.

Parameters:

  • enabled - [out] A pointer to the returned value (0 if disabled, 1 if enabled).

Return: - 0 if successful, non-zero if failed.

Enabling allows Vivox to reduce the dynamic range of samples that are near clipping. Disabling allows ordinary clipping to occur.

function vx_set_audio_clipping_protector_parameters

VIVOXSDK_DLLEXPORT int vx_set_audio_clipping_protector_parameters(
    float minimum_threshold_db,
    float threshold_boost_slope
)

Change the behavior of the SDK's internal audio clipping protector (soft clipper).

Parameters:

  • minimum_threshold_db - The lowest point in dBFS where clipping protection can be applied. -50.0 <= value < 0.0.
  • threshold_boost_slope - The ratio between boost gain and the calculated threshold_db. -1.0 <= value <= -0.1.

Return: - 0 if successful, non-zero if failed.

The audio clipping protector can only affect boosted audio (capture or render with volume settings greater than 50)

Clipping protection is applied only above a threshold in dBFS. threshold_db = max(boost * threshold_boost_slope, minimum_threshold_db) ex. +10 dB boost (volume 60), threshold_boost_slope = -0.1, minimum_threshold_db = -6.0: threshold_db = max(10 * -0.1, -6.0) = -1.0. ex. (cont) Clipping protection would only be applied to amplitudes exceeding -1.0 dBFS.

function vx_get_audio_clipping_protector_parameters

VIVOXSDK_DLLEXPORT int vx_get_audio_clipping_protector_parameters(
    float * minimum_threshold_db,
    float * threshold_boost_slope
)

Get the internal audio clipping protector's parameters.

Parameters:

  • minimum_threshold_db - [out] The lowest point in dBFS where clipping protection can be applied. -50.0 <= value < 0.0.
  • threshold_boost_slope - [out] The ratio between boost gain and the calculated threshold_db. -1.0 <= value <= -0.1.

Return: - 0 if successful, non-zero if failed.

function vx_tts_initialize

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_initialize(
    vx_tts_engine_type engine_type,
    vx_tts_manager_id * tts_manager_id
)

Initialize a new text-to-speech manager.

Parameters:

  • engine_type - The type of the text-to-speech engine. If unsure what to use, it is recommended that you use the default.
  • tts_manager_id - [out] A unique identifier of the newly created text-to-speech manager.

Return: - The status code description.

function vx_tts_get_voices

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_get_voices(
    vx_tts_manager_id tts_manager_id,
    int * num_voices,
    vx_tts_voice_t ** voices
)

Get the available voices for a text-to-speech manager.

Parameters:

  • tts_manager_id - A unique identifier of the TTS manager
  • num_voices - [out] The number of voices supported by the text-to-speech manager.
  • voices - [out] A pointer to the first voice. This does not need to be deleted when you are finished using it.

Return: - The status code description.

function vx_tts_shutdown

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_shutdown(
    vx_tts_manager_id * tts_manager_id
)

Uninitialize and shut down a text-to-speech manager.

Parameters:

  • tts_manager_id - A unique identifier of the TTS manager to shutdown. Passing NULL shuts down all managers.

See: vx_tts_initialize()

Return: - The status code description.

function vx_get_tts_status_string

VIVOXSDK_DLLEXPORT const char * vx_get_tts_status_string(
    vx_tts_status status_code
)

Return a textual representation of a text-to-speech status code.

Parameters:

  • status_code - The text-to-speech status code.

Return: - The status code description.

function vx_tts_speak

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_speak(
    vx_tts_manager_id tts_manager_id,
    vx_tts_voice_id voice_id,
    const char * input_text,
    vx_tts_destination tts_dest,
    vx_tts_utterance_id * utterance_id
)

Convert the input text into speech and process the generated utterance on the selected destination.

Parameters:

  • tts_manager_id - A unique identifier of the TTS manager.
  • voice_id - A unique identifier of the voice.
  • input_text - The text message to be converted into speech.
  • tts_dest - The destination on which to play the message.
  • utterance_id - [out] A unique identifier of the utterance.

Return: - The status code description.

function vx_tts_speak_to_buffer

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_speak_to_buffer(
    vx_tts_manager_id tts_manager_id,
    vx_tts_voice_id voice_id,
    const char * input_text,
    vx_tts_utterance_t ** utterance
)

Convert the input text into speech and return the generated utterance.

Parameters:

  • tts_manager_id - A unique identifier of the TTS manager.
  • voice_id - A unique identifier of the voice.
  • input_text - The text message to be converted into speech.
  • utterance - [out] The utterance generated from the input text.

Return: - The status code description.

function vx_tts_destroy_utterance

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_destroy_utterance(
    vx_tts_manager_id tts_manager_id,
    vx_tts_utterance_t * utterance
)

Destroy an utterance.

Parameters:

  • tts_manager_id - A unique identifier of the TTS engine.
  • utterance - The utterance to be destroyed.

See: vx_tts_speak_to_buffer()

Return: - The status code description.

Call this function to free up all of the memory that is taken by an utterance.

function vx_tts_cancel_utterance

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_cancel_utterance(
    vx_tts_manager_id tts_manager_id,
    vx_tts_utterance_id utterance_id
)

Cancel playback of an ongoing or an enqueued text-to-speech message by its unique identifier.

Parameters:

  • tts_manager_id - A unique identifier of the TTS manager.
  • utterance_id - A unique identifier of the utterance.

See: vx_tts_speak()

Return: - The status code description.

function vx_tts_cancel_all_in_dest

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_cancel_all_in_dest(
    vx_tts_manager_id tts_manager_id,
    vx_tts_destination tts_dest
)

Cancel playback of ongoing and all enqueued text-to-speech messages in a destination.

Parameters:

  • tts_manager_id - A unique identifier of the TTS manager.
  • tts_dest - The destination to be cancelled.

Return: - The status code description.

function vx_tts_cancel_all

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_cancel_all(
    vx_tts_manager_id tts_manager_id
)

Cancel playback for all ongoing and enqueued text-to-speech messages on all destinations.

Parameters:

  • tts_manager_id - A unique identifier of the TTS manager.

Return: - The status code description.

Macros Documentation

define VIVOX_SDK_HAS_CRASH_REPORTING

#define VIVOX_SDK_HAS_CRASH_REPORTING 1

define VIVOX_SDK_HAS_VOICE_FONTS

#define VIVOX_SDK_HAS_VOICE_FONTS 1

define VIVOX_SDK_HAS_GROUP_IM

#define VIVOX_SDK_HAS_GROUP_IM 1

define VIVOX_SDK_HAS_MUTE_SCOPE

#define VIVOX_SDK_HAS_MUTE_SCOPE 1

define VIVOX_SDK_HAS_PARTICIPANT_TYPE

#define VIVOX_SDK_HAS_PARTICIPANT_TYPE 1

define VIVOX_SDK_HAS_NETWORK_MESSAGE

#define VIVOX_SDK_HAS_NETWORK_MESSAGE 1

define VIVOX_SDK_HAS_AUX_DIAGNOSTIC_STATE

#define VIVOX_SDK_HAS_AUX_DIAGNOSTIC_STATE 1

define VIVOX_SDK_SESSION_RENDER_AUDIO_OBSOLETE

#define VIVOX_SDK_SESSION_RENDER_AUDIO_OBSOLETE 1

define VIVOX_SDK_SESSION_GET_LOCAL_AUDIO_INFO_OBSOLETE

#define VIVOX_SDK_SESSION_GET_LOCAL_AUDIO_INFO_OBSOLETE 1

define VIVOX_SDK_SESSION_MEDIA_RINGBACK_OBSOLETE

#define VIVOX_SDK_SESSION_MEDIA_RINGBACK_OBSOLETE 1

define VIVOX_SDK_SESSION_CONNECT_OBSOLETE

#define VIVOX_SDK_SESSION_CONNECT_OBSOLETE 1

define VIVOX_SDK_EVT_SESSION_PARTICIPANT_LIST_OBSOLETE

#define VIVOX_SDK_EVT_SESSION_PARTICIPANT_LIST_OBSOLETE 1

define VIVOX_SDK_HAS_INTEGRATED_PROXY

#define VIVOX_SDK_HAS_INTEGRATED_PROXY 1

define VIVOX_SDK_HAS_NO_CHANNEL_FOLDERS

#define VIVOX_SDK_HAS_NO_CHANNEL_FOLDERS 1

define VIVOX_SDK_HAS_NO_SCORE

#define VIVOX_SDK_HAS_NO_SCORE 1

define VIVOX_SDK_HAS_GENERIC_APP_NOTIFICATIONS_ONLY

#define VIVOX_SDK_HAS_GENERIC_APP_NOTIFICATIONS_ONLY 1

define VIVOX_SDK_HAS_FRAME_TOTALS

#define VIVOX_SDK_HAS_FRAME_TOTALS 1

define VIVOX_SDK_NO_LEGACY_RECORDING

#define VIVOX_SDK_NO_LEGACY_RECORDING 1

define VIVOX_SDK_NO_IS_AD_PLAYING

#define VIVOX_SDK_NO_IS_AD_PLAYING 1

define VIVOX_SDK_HAS_ACCOUNT_SEND_MSG

#define VIVOX_SDK_HAS_ACCOUNT_SEND_MSG 1

define VIVOX_SDK_HAS_PLC_STATS

#define VIVOX_SDK_HAS_PLC_STATS 1

define VIVOX_SDK_HAS_DEVICE_ADDED_REMOVED

#define VIVOX_SDK_HAS_DEVICE_ADDED_REMOVED 1

define VIVOX_SDK_HAS_AUDIO_UNIT_CALLBACKS

#define VIVOX_SDK_HAS_AUDIO_UNIT_CALLBACKS 1

define VX_MEDIA_FLAGS_AUDIO

#define VX_MEDIA_FLAGS_AUDIO 0x1

Participant media flags.

define VX_MEDIA_FLAGS_TEXT

#define VX_MEDIA_FLAGS_TEXT 0x2

define VX_GET_MESSAGE_NO_MESSAGE

#define VX_GET_MESSAGE_NO_MESSAGE -1

define VX_GET_MESSAGE_AVAILABLE

#define VX_GET_MESSAGE_AVAILABLE 0

define VX_GET_MESSAGE_FAILURE

#define VX_GET_MESSAGE_FAILURE 1

define VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000_EXPANDED

#define VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000_EXPANDED 0x10001

define VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000

#define VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000 VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000_EXPANDED

Deprecated:

Use VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000_EXPANDED instead of VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000.

define VIVOX_V_V2_AUDIO_DATA_MONO_SIREN7_16000_EXPANDED

#define VIVOX_V_V2_AUDIO_DATA_MONO_SIREN7_16000_EXPANDED 0x10008

define VIVOX_V_V2_AUDIO_DATA_MONO_OPUS_48000_EXPANDED

#define VIVOX_V_V2_AUDIO_DATA_MONO_OPUS_48000_EXPANDED 0x10009

define VIVOX_VANI_SIREN7

#define VIVOX_VANI_SIREN7 0x2   /* Siren7, 16kHz, 32kbps */

The configured_codecs field in vx_req_connector_create is a mask of these constants.

define VIVOX_VANI_SIREN14

#define VIVOX_VANI_SIREN14 0x4   /* Siren14, 32kHz, 32kbps */

define VIVOX_VANI_LEGACY_MASK

#define VIVOX_VANI_LEGACY_MASK 0x6

define VIVOX_VANI_OPUS8

#define VIVOX_VANI_OPUS8 0x10  /* Opus, 48kHz, 8kbps */

define VIVOX_VANI_OPUS40

#define VIVOX_VANI_OPUS40 0x20  /* Opus, 48kHz, 40kbps */

define VIVOX_VANI_OPUS57

#define VIVOX_VANI_OPUS57 0x40  /* Opus, 48kHz, 57kbps */ /* proposed; pending research */

define VIVOX_VANI_OPUS72

#define VIVOX_VANI_OPUS72 0x80  /* Opus, 48kHz, 72kbps */ /* proposed; pending research */

define VIVOX_VANI_OPUS

#define VIVOX_VANI_OPUS VIVOX_VANI_OPUS40

define VIVOX_VANI_OPUS_MASK

#define VIVOX_VANI_OPUS_MASK 0xf0

define VIVOX_VANI_PCMU

#define VIVOX_VANI_PCMU VX_DEPRECATED_MACRO(VIVOX_VANI_PCMU, 5.19) VIVOX_VANI_OPUS8

Deprecated:

PCMU functionality has been removed. Please discontinue use.

define VX_VAR_DECODER_COUNT_LIMIT

#define VX_VAR_DECODER_COUNT_LIMIT "DecoderLimit"

define VX_VAR_DECODER_HANGOVER_LIMIT

#define VX_VAR_DECODER_HANGOVER_LIMIT "DecoderHangoverLimit"

define VX_VAR_RTP_ENCRYPTION

#define VX_VAR_RTP_ENCRYPTION "RTPEncryption"

define MAX_VXA_DEVICE_COUNT

#define MAX_VXA_DEVICE_COUNT 32

The maximum number of application-provided capture devices.

The maximum number of application-provided render devices.

define VX_TTS_CHARACTER_COUNT_LIMIT

#define VX_TTS_CHARACTER_COUNT_LIMIT 200

define VX_TTS_MAX_DESTINATION_QUEUE_SIZE

#define VX_TTS_MAX_DESTINATION_QUEUE_SIZE 10

define VX_TTS_DEFAULT_DESTINATION

#define VX_TTS_DEFAULT_DESTINATION tts_dest_remote_transmission

Source code

/* Copyright (c) 2019 Unity Technologies.
 *
 * This software is subject to, and made available under, the Unity Terms of Service (see Unity Terms of Service).
 * Your use of this software constitutes your acceptance of such terms.

 * Unless expressly provided otherwise, the software under this license is made available strictly on an "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED.
 * Please review the Terms of Service for details on these and other terms and conditions.”
 */
#pragma once

#include <VxcExports.h>
#include <VxcTypes.h>

#define VIVOX_SDK_HAS_CRASH_REPORTING 1
#define VIVOX_SDK_HAS_VOICE_FONTS 1
#define VIVOX_SDK_HAS_GROUP_IM 1
#define VIVOX_SDK_HAS_MUTE_SCOPE 1
#define VIVOX_SDK_HAS_PARTICIPANT_TYPE 1
#define VIVOX_SDK_HAS_NETWORK_MESSAGE 1
#define VIVOX_SDK_HAS_AUX_DIAGNOSTIC_STATE 1
#define VIVOX_SDK_SESSION_RENDER_AUDIO_OBSOLETE 1
#define VIVOX_SDK_SESSION_GET_LOCAL_AUDIO_INFO_OBSOLETE 1
#define VIVOX_SDK_SESSION_MEDIA_RINGBACK_OBSOLETE 1
#define VIVOX_SDK_SESSION_CONNECT_OBSOLETE 1
#define VIVOX_SDK_EVT_SESSION_PARTICIPANT_LIST_OBSOLETE 1
#define VIVOX_SDK_HAS_INTEGRATED_PROXY 1
#define VIVOX_SDK_HAS_NO_CHANNEL_FOLDERS 1
#define VIVOX_SDK_HAS_NO_SCORE 1
#define VIVOX_SDK_HAS_GENERIC_APP_NOTIFICATIONS_ONLY 1
#define VIVOX_SDK_HAS_FRAME_TOTALS 1
#define VIVOX_SDK_NO_LEGACY_RECORDING 1
#define VIVOX_SDK_NO_IS_AD_PLAYING 1
#define VIVOX_SDK_HAS_ACCOUNT_SEND_MSG 1
#define VIVOX_SDK_HAS_PLC_STATS 1
#define VIVOX_SDK_HAS_DEVICE_ADDED_REMOVED 1
#define VIVOX_SDK_HAS_AUDIO_UNIT_CALLBACKS 1

#pragma pack(push)
#pragma pack(8)

#ifdef __cplusplus
extern "C" {
#endif

typedef char *VX_COOKIE;

typedef VX_COOKIE VX_HANDLE;

typedef unsigned int VX_SDK_HANDLE;

#if defined(WIN32)
typedef __time64_t vx_time_t;
#else
typedef time_t vx_time_t;
#endif

#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_cookie_create(const char *value, VX_COOKIE *cookie);

VIVOXSDK_DLLEXPORT int vx_cookie_free(VX_COOKIE *cookie);
#endif

typedef enum {
    attempt_stun_unspecified = 0,

    attempt_stun_on = 1,

    attempt_stun_off = 2
} vx_attempt_stun;

typedef enum {
    connector_mode_normal = 0,

    connector_mode_legacy = 1
} vx_connector_mode;

typedef enum {
    session_handle_type_unique = 0,

    session_handle_type_legacy = 1,

    session_handle_type_heirarchical_numeric = 2,

    session_handle_type_heirarchical_unique = 3
} vx_session_handle_type;

typedef enum {
    log_to_none = 0,

    log_to_file = 1,

    log_to_callback = 2,

    log_to_file_and_callback = 3
} vx_log_type;

typedef enum {
    msg_none = 0,

    msg_request = 1,

    msg_response = 2,

    msg_event = 3
} vx_message_type;

typedef enum {
    VX_SESSIONGROUP_RECORDING_CONTROL_STOP = 0,

    VX_SESSIONGROUP_RECORDING_CONTROL_START = 1,

    VX_SESSIONGROUP_RECORDING_CONTROL_FLUSH_TO_FILE = 2
} vx_sessiongroup_recording_control_type;

typedef enum {
    VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_STOP = 0,
    vx_sessiongroup_audio_injection_control_stop = VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_STOP,

    VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_START = 1,
    vx_sessiongroup_audio_injection_control_start = VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_START,

    VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_RESTART = 2,
    vx_sessiongroup_audio_injection_control_restart = VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_RESTART,

    VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_MIN = VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_STOP,
    vx_sessiongroup_audio_injection_control_min = vx_sessiongroup_audio_injection_control_stop,
    VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_MAX = VX_SESSIONGROUP_AUDIO_INJECTION_CONTROL_RESTART,
    vx_sessiongroup_audio_injection_control_max = vx_sessiongroup_audio_injection_control_restart
} vx_sessiongroup_audio_injection_control_type;

typedef enum {
    VX_SESSIONGROUP_PLAYBACK_CONTROL_STOP = 0,

    VX_SESSIONGROUP_PLAYBACK_CONTROL_START = 1,

    VX_SESSIONGROUP_PLAYBACK_CONTROL_PAUSE = 3,

    VX_SESSIONGROUP_PLAYBACK_CONTROL_UNPAUSE = 4
} vx_sessiongroup_playback_control_type;

typedef enum {
    VX_SESSIONGROUP_PLAYBACK_MODE_NORMAL = 0,

    VX_SESSIONGROUP_PLAYBACK_MODE_VOX = 1
} vx_sessiongroup_playback_mode;

typedef enum {
    vx_control_communications_operation_block = 0,

    vx_control_communications_operation_unblock = 1,
    vx_control_communications_operation_list = 2,
    vx_control_communications_operation_block_list = 2, // Alias for vx_control_communications_operation_list
    vx_control_communications_operation_clear = 3,
    vx_control_communications_operation_clear_block_list = 3, // Alias for vx_control_communications_operation_clear
    vx_control_communications_operation_mute = 4,
    vx_control_communications_operation_unmute = 5,
    vx_control_communications_operation_mute_list = 6,
    vx_control_communications_operation_clear_mute_list = 7
} vx_control_communications_operation;

typedef enum {
    media_type_none = 0,
    media_type_text = 1,
    media_type_audio = 2,
    media_type_video = 3,
    media_type_audiovideo = 4
} vx_media_type;

typedef enum {
    termination_status_none = 0,
    termination_status_busy = 1,
    termination_status_decline = 2
} vx_termination_status;

typedef enum {
    diagnostic_dump_level_all = 0,
    diagnostic_dump_level_sessions = 1
} vx_diagnostic_dump_level;

typedef enum {
    media_ringback_none = 0,
    media_ringback_ringing = 1,       // 180
    // media_ringback_answer = 2,     // 200
    media_ringback_busy = 3,          // 486
    // media_ringback_terminated = 4  // 487
} vx_media_ringback;

typedef enum {
    channel_type_normal = 0,
    channel_type_positional = 2
} vx_channel_type;

typedef enum {
    channel_mode_none = 0,
    channel_mode_normal = 1,
    channel_mode_presentation = 2,
    channel_mode_lecture = 3,
    channel_mode_open = 4,
    channel_mode_auditorium = 5
} vx_channel_mode;

typedef enum {
    channel_search_type_all = 0,
    channel_search_type_non_positional = 1,
    channel_search_type_positional = 2
} vx_channel_search_type;

typedef enum {
    channel_moderation_type_all = 0,
    channel_moderation_type_current_user = 1
} vx_channel_moderation_type;

typedef enum {
    sessiongroup_type_normal = 0,

    sessiongroup_type_playback = 1
} vx_sessiongroup_type;

typedef enum {
    participant_left = 0,
    participant_timeout = 1,
    participant_kicked = 2,
    participant_banned = 3
} vx_participant_removed_reason;

typedef enum {
    connection_state_disconnected = 0,
    connection_state_connected = 1,
    connection_state_recovering = 3,
    connection_state_failed_to_recover = 4,
    connection_state_recovered = 5
} vx_connection_state;

typedef struct vx_message_base {
    vx_message_type type;
    VX_SDK_HANDLE sdk_handle;
    unsigned long long create_time_ms;
    unsigned long long last_step_ms;
} vx_message_base_t;

typedef enum {
    req_none = 0,
    req_connector_create = 1,
    req_connector_initiate_shutdown = 2,
    req_account_login = 3,
    req_account_logout = 4,
    req_account_set_login_properties = 5,
    req_sessiongroup_create = 6,
    req_sessiongroup_terminate = 7,
    req_sessiongroup_add_session = 8,
    req_sessiongroup_remove_session = 9,
    req_sessiongroup_set_focus = 10,
    req_sessiongroup_unset_focus = 11,
    req_sessiongroup_reset_focus = 12,
    req_sessiongroup_set_tx_session = 13,
    req_sessiongroup_set_tx_all_sessions = 14,
    req_sessiongroup_set_tx_no_session = 15,
    req_session_create = 16,  
    req_session_media_connect = 18,
    req_session_media_disconnect = 19,
    req_session_terminate = 21,
    req_session_mute_local_speaker = 22,
    req_session_set_local_speaker_volume = 23,
    req_session_set_local_render_volume = 24,
    req_session_channel_invite_user = 25,
    req_session_set_participant_volume_for_me = 26,
    req_session_set_participant_mute_for_me = 27,
    req_session_set_3d_position = 28,
    req_session_set_voice_font = 29,
    req_account_channel_add_acl = 53,
    req_account_channel_remove_acl = 54,
    req_account_channel_get_acl = 55,
    req_channel_mute_user = 56,
    req_channel_ban_user = 57,
    req_channel_get_banned_users = 58,
    req_channel_kick_user = 59,
    req_channel_mute_all_users = 60,
    req_connector_mute_local_mic = 61,
    req_connector_mute_local_speaker = 62,
    req_connector_set_local_mic_volume = 63,
    req_connector_set_local_speaker_volume = 64,
    req_connector_get_local_audio_info = 65,
    req_account_buddy_set = 67,
    req_account_buddy_delete = 68,
    req_account_list_buddies_and_groups = 71,
    req_session_send_message = 72,
    req_account_set_presence = 73,
    req_account_send_subscription_reply = 74,
    req_session_send_notification = 75,
    req_account_create_block_rule = 76,
    req_account_delete_block_rule = 77,
    req_account_list_block_rules = 78,
    req_account_create_auto_accept_rule = 79,
    req_account_delete_auto_accept_rule = 80,
    req_account_list_auto_accept_rules = 81,
    req_account_update_account = 82,  
    req_account_get_account = 83,  
    req_account_send_sms = 84,
    req_aux_connectivity_info = 86,
    req_aux_get_render_devices = 87,
    req_aux_get_capture_devices = 88,
    req_aux_set_render_device = 89,
    req_aux_set_capture_device = 90,
    req_aux_get_mic_level = 91,
    req_aux_get_speaker_level = 92,
    req_aux_set_mic_level = 93,
    req_aux_set_speaker_level = 94,
    req_aux_render_audio_start = 95,
    req_aux_render_audio_stop = 96,
    req_aux_capture_audio_start = 97,
    req_aux_capture_audio_stop = 98,
    req_aux_global_monitor_keyboard_mouse = 99,
    req_aux_set_idle_timeout = 100,
    req_aux_create_account = 101,
    req_aux_reactivate_account = 102,
    req_aux_deactivate_account = 103,
    req_account_post_crash_dump = 104,
    req_aux_reset_password = 105,
    req_sessiongroup_set_session_3d_position = 106,
    req_account_get_session_fonts = 107,
    req_account_get_template_fonts = 108,
    req_aux_start_buffer_capture = 109,
    req_aux_play_audio_buffer = 110,
    req_sessiongroup_control_recording = 111,
    req_sessiongroup_control_playback = 112,
    req_sessiongroup_set_playback_options = 113,
    req_session_text_connect = 114,
    req_session_text_disconnect = 115,
    req_channel_set_lock_mode = 116,
    req_aux_render_audio_modify = 117,
    req_session_send_dtmf = 118,
    req_aux_set_vad_properties = 120,
    req_aux_get_vad_properties = 121,
    req_sessiongroup_control_audio_injection = 124,
    req_account_channel_change_owner = 125,  
    req_account_send_user_app_data = 128,  
    req_aux_diagnostic_state_dump = 129,
    req_account_web_call = 130,
    req_account_anonymous_login = 131,
    req_account_authtoken_login = 132,
    req_sessiongroup_get_stats = 133,
    req_account_send_message = 134,
    req_aux_notify_application_state_change = 135,
    req_account_control_communications = 136,
    req_session_archive_query = 137,
    req_account_archive_query = 138,
    req_session_transcription_control = 139,
    req_aux_get_derumbler_properties = 140,
    req_aux_set_derumbler_properties = 141,
    req_session_chat_history_query = 142,
    req_account_chat_history_query = 143,
    req_account_chat_history_get_last_read = 144,
    req_session_edit_message = 145,
    req_account_edit_message = 146,
    req_session_delete_message = 147,
    req_account_delete_message = 148,
    req_account_get_conversations = 149,
    req_account_chat_history_set_marker = 150,
    req_account_safe_voice_update_consent = 151,
    req_account_safe_voice_get_consent = 152,
    req_max = req_account_safe_voice_get_consent + 1
} vx_request_type;

typedef enum {
    resp_none = 0,
    resp_connector_create = 1,
    resp_connector_initiate_shutdown = 2,
    resp_account_login = 3,
    resp_account_logout = 4,
    resp_account_set_login_properties = 5,
    resp_sessiongroup_create = 6,
    resp_sessiongroup_terminate = 7,
    resp_sessiongroup_add_session = 8,
    resp_sessiongroup_remove_session = 9,
    resp_sessiongroup_set_focus = 10,
    resp_sessiongroup_unset_focus = 11,
    resp_sessiongroup_reset_focus = 12,
    resp_sessiongroup_set_tx_session = 13,
    resp_sessiongroup_set_tx_all_sessions = 14,
    resp_sessiongroup_set_tx_no_session = 15,
    resp_session_create = 16,  
    resp_session_media_connect = 18,
    resp_session_media_disconnect = 19,
    resp_session_terminate = 21,
    resp_session_mute_local_speaker = 22,
    resp_session_set_local_speaker_volume = 23,
    resp_session_set_local_render_volume = 24,
    resp_session_channel_invite_user = 25,
    resp_session_set_participant_volume_for_me = 26,
    resp_session_set_participant_mute_for_me = 27,
    resp_session_set_3d_position = 28,
    resp_session_set_voice_font = 29,
    resp_account_channel_get_list = 33,
    resp_account_channel_add_acl = 53,
    resp_account_channel_remove_acl = 54,
    resp_account_channel_get_acl = 55,
    resp_channel_mute_user = 56,
    resp_channel_ban_user = 57,
    resp_channel_get_banned_users = 58,
    resp_channel_kick_user = 59,
    resp_channel_mute_all_users = 60,
    resp_connector_mute_local_mic = 61,
    resp_connector_mute_local_speaker = 62,
    resp_connector_set_local_mic_volume = 63,
    resp_connector_set_local_speaker_volume = 64,
    resp_connector_get_local_audio_info = 65,
    resp_account_buddy_set = 67,
    resp_account_buddy_delete = 68,
    resp_account_list_buddies_and_groups = 71,
    resp_session_send_message = 72,
    resp_account_set_presence = 73,
    resp_account_send_subscription_reply = 74,
    resp_session_send_notification = 75,
    resp_account_create_block_rule = 76,
    resp_account_delete_block_rule = 77,
    resp_account_list_block_rules = 78,
    resp_account_create_auto_accept_rule = 79,
    resp_account_delete_auto_accept_rule = 80,
    resp_account_list_auto_accept_rules = 81,
    resp_account_update_account = 82,  
    resp_account_get_account = 83,  
    resp_account_send_sms = 84,
    resp_aux_connectivity_info = 86,
    resp_aux_get_render_devices = 87,
    resp_aux_get_capture_devices = 88,
    resp_aux_set_render_device = 89,
    resp_aux_set_capture_device = 90,
    resp_aux_get_mic_level = 91,
    resp_aux_get_speaker_level = 92,
    resp_aux_set_mic_level = 93,
    resp_aux_set_speaker_level = 94,
    resp_aux_render_audio_start = 95,
    resp_aux_render_audio_stop = 96,
    resp_aux_capture_audio_start = 97,
    resp_aux_capture_audio_stop = 98,
    resp_aux_global_monitor_keyboard_mouse = 99,
    resp_aux_set_idle_timeout = 100,
    resp_aux_create_account = 101,
    resp_aux_reactivate_account = 102,
    resp_aux_deactivate_account = 103,
    resp_account_post_crash_dump = 104,
    resp_aux_reset_password = 105,
    resp_sessiongroup_set_session_3d_position = 106,
    resp_account_get_session_fonts = 107,
    resp_account_get_template_fonts = 108,
    resp_aux_start_buffer_capture = 109,
    resp_aux_play_audio_buffer = 110,
    resp_sessiongroup_control_recording = 111,
    resp_sessiongroup_control_playback = 112,
    resp_sessiongroup_set_playback_options = 113,
    resp_session_text_connect = 114,
    resp_session_text_disconnect = 115,
    resp_channel_set_lock_mode = 116,
    resp_aux_render_audio_modify = 117,
    resp_session_send_dtmf = 118,
    resp_aux_set_vad_properties = 120,
    resp_aux_get_vad_properties = 121,
    resp_sessiongroup_control_audio_injection = 124,
    resp_account_channel_change_owner = 125,  
    resp_account_send_user_app_data = 128,  
    resp_aux_diagnostic_state_dump = 129,
    resp_account_web_call = 130,
    resp_account_anonymous_login = 131,
    resp_account_authtoken_login = 132,
    resp_sessiongroup_get_stats = 133,
    resp_account_send_message = 134,
    resp_aux_notify_application_state_change = 135,
    resp_account_control_communications = 136,
    resp_session_archive_query = 137,
    resp_account_archive_query = 138,
    resp_session_transcription_control = 139,
    resp_aux_get_derumbler_properties = 140,
    resp_aux_set_derumbler_properties = 141,
    resp_session_chat_history_query = 142,
    resp_account_chat_history_query = 143,
    resp_account_chat_history_get_last_read = 144,
    resp_session_edit_message = 145,
    resp_account_edit_message = 146,
    resp_session_delete_message = 147,
    resp_account_delete_message = 148,
    resp_account_get_conversations = 149,
    resp_account_chat_history_set_marker = 150,
    resp_account_safe_voice_update_consent = 151,
    resp_account_safe_voice_get_consent = 152,
    resp_max = resp_account_safe_voice_get_consent + 1
} vx_response_type;

typedef enum {
    evt_none = 0,
    evt_account_login_state_change = 2,
    evt_buddy_presence = 7,
    evt_subscription = 8,
    evt_session_notification = 9,
    evt_message = 10,
    evt_aux_audio_properties = 11,
    evt_buddy_changed = 15,
    evt_buddy_group_changed = 16,
    evt_buddy_and_group_list_changed = 17,
    evt_keyboard_mouse = 18,
    evt_idle_state_changed = 19,
    evt_media_stream_updated = 20,
    evt_text_stream_updated = 21,
    evt_sessiongroup_added = 22,
    evt_sessiongroup_removed = 23,
    evt_session_added = 24,
    evt_session_removed = 25,
    evt_participant_added = 26,
    evt_participant_removed = 27,
    evt_participant_updated = 28,
    evt_sessiongroup_playback_frame_played = 30,
    evt_session_updated = 31,
    evt_sessiongroup_updated = 32,
    evt_media_completion = 33,
    evt_server_app_data = 35,
    evt_user_app_data = 36,
    evt_network_message = 38,
    evt_voice_service_connection_state_changed = 39,
    evt_publication_state_changed = 40,
    evt_audio_device_hot_swap = 41,
    evt_user_to_user_message = 42,
    evt_session_archive_message = 43,
    evt_session_archive_query_end = 44,
    evt_account_archive_message = 45,
    evt_account_archive_query_end = 46,
    evt_account_send_message_failed = 47,
    evt_transcribed_message = 48,
    evt_tts_injection_started = 49,
    evt_tts_injection_ended = 50,
    evt_tts_injection_failed = 51,
    evt_stt_failed = 52,
    evt_connection_state_changed = 53,
    evt_presence_updated = 54,
    evt_session_edit_message = 55,
    evt_account_edit_message = 56,
    evt_session_delete_message = 57,
    evt_account_delete_message = 58,
    evt_max = evt_account_delete_message + 1
} vx_event_type;

typedef struct vx_req_base {
    vx_message_base_t message;
    vx_request_type type;
    VX_COOKIE cookie;
    void *vcookie;
} vx_req_base_t;

typedef struct vx_resp_base {
    vx_message_base_t message;
    vx_response_type type;
    int return_code;
    int status_code;
    char *status_string;
    vx_req_base_t *request;
    char *extended_status_info;
} vx_resp_base_t;

typedef struct vx_evt_base {
    vx_message_base_t message;
    vx_event_type type;
    char *extended_status_info;
} vx_evt_base_t;

typedef enum {
    ND_E_NO_ERROR = 0,
    ND_E_TEST_NOT_RUN = 1,
    ND_E_NO_INTERFACE = 2,
    ND_E_NO_INTERFACE_WITH_GATEWAY = 3,
    ND_E_NO_INTERFACE_WITH_ROUTE = 4,
    ND_E_TIMEOUT = 5,
    ND_E_CANT_ICMP = 6,
    ND_E_CANT_RESOLVE_VIVOX_UDP_SERVER = 7,
    ND_E_CANT_RESOLVE_ROOT_DNS_SERVER = 8,
    ND_E_CANT_CONVERT_LOCAL_IP_ADDRESS = 9,
    ND_E_CANT_CONTACT_STUN_SERVER_ON_UDP_PORT_3478 = 10,
    ND_E_CANT_CREATE_TCP_SOCKET = 11,
    ND_E_CANT_LOAD_ICMP_LIBRARY = 12,
    ND_E_CANT_FIND_SENDECHO2_PROCADDR = 13,
    ND_E_CANT_CONNECT_TO_ECHO_SERVER = 14,
    ND_E_ECHO_SERVER_LOGIN_SEND_FAILED = 15,
    ND_E_ECHO_SERVER_LOGIN_RECV_FAILED = 16,
    ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_STATUS = 17,
    ND_E_ECHO_SERVER_LOGIN_RESPONSE_FAILED_STATUS = 18,
    ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_SESSIONID = 19,
    ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_SIPPORT = 20,
    ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_AUDIORTP = 21,
    ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_AUDIORTCP = 22,
    ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_VIDEORTP = 23,
    ND_E_ECHO_SERVER_LOGIN_RESPONSE_MISSING_VIDEORTCP = 24,
    ND_E_ECHO_SERVER_CANT_ALLOCATE_SIP_SOCKET = 25,
    ND_E_ECHO_SERVER_CANT_ALLOCATE_MEDIA_SOCKET = 26,
    ND_E_ECHO_SERVER_SIP_UDP_SEND_FAILED = 27,
    ND_E_ECHO_SERVER_SIP_UDP_RECV_FAILED = 28,
    ND_E_ECHO_SERVER_SIP_TCP_SEND_FAILED = 29,
    ND_E_ECHO_SERVER_SIP_TCP_RECV_FAILED = 30,
    ND_E_ECHO_SERVER_SIP_NO_UDP_OR_TCP = 31,
    ND_E_ECHO_SERVER_SIP_NO_UDP = 32,
    ND_E_ECHO_SERVER_SIP_NO_TCP = 33,
    ND_E_ECHO_SERVER_SIP_MALFORMED_TCP_PACKET = 34,
    ND_E_ECHO_SERVER_SIP_UDP_DIFFERENT_LENGTH = 35,
    ND_E_ECHO_SERVER_SIP_UDP_DATA_DIFFERENT = 36,
    ND_E_ECHO_SERVER_SIP_TCP_PACKETS_DIFFERENT = 37,
    ND_E_ECHO_SERVER_SIP_TCP_PACKETS_DIFFERENT_SIZE = 38,
    ND_E_ECHO_SERVER_LOGIN_RECV_FAILED_TIMEOUT = 39,
    ND_E_ECHO_SERVER_TCP_SET_ASYNC_FAILED = 40,
    ND_E_ECHO_SERVER_UDP_SET_ASYNC_FAILED = 41,
    ND_E_ECHO_SERVER_CANT_RESOLVE_NAME = 42
} ND_ERROR;

typedef enum {
    ND_TEST_LOCATE_INTERFACE = 0,
    ND_TEST_PING_GATEWAY = 1,
    ND_TEST_DNS = 2,
    ND_TEST_STUN = 3,
    ND_TEST_ECHO = 4,
    ND_TEST_ECHO_SIP_FIRST_PORT = 5,
    ND_TEST_ECHO_SIP_FIRST_PORT_INVITE_REQUEST = 6,
    ND_TEST_ECHO_SIP_FIRST_PORT_INVITE_RESPONSE = 7,
    ND_TEST_ECHO_SIP_FIRST_PORT_REGISTER_REQUEST = 8,
    ND_TEST_ECHO_SIP_FIRST_PORT_REGISTER_RESPONSE = 9,
    ND_TEST_ECHO_SIP_SECOND_PORT = 10,
    ND_TEST_ECHO_SIP_SECOND_PORT_INVITE_REQUEST = 11,
    ND_TEST_ECHO_SIP_SECOND_PORT_INVITE_RESPONSE = 12,
    ND_TEST_ECHO_SIP_SECOND_PORT_REGISTER_REQUEST = 13,
    ND_TEST_ECHO_SIP_SECOND_PORT_REGISTER_RESPONSE = 14,
    ND_TEST_ECHO_MEDIA = 15,
    ND_TEST_ECHO_MEDIA_LARGE_PACKET = 16
} ND_TEST_TYPE;

typedef enum {
    mode_none = 0,

    mode_auto_answer = 1,

    mode_verify_answer = 2,

    mode_busy_answer = 3
} vx_session_answer_mode;

typedef enum {
    mode_auto_accept = 0,
    mode_auto_add = 1,
    mode_block = 2,
    mode_hide = 3,
    mode_application = 4
} vx_buddy_management_mode;

typedef enum {
    rule_none = 0,
    rule_allow = 1,
    rule_block = 2,
    rule_hide = 3
} vx_rule_type;

typedef enum {
    type_none = 0,
    type_root = 1,
    type_user = 2
} vx_font_type;

typedef enum {
    status_none = 0,
    status_free = 1,
    status_not_free = 2
} vx_font_status;

typedef enum {
    subscription_presence = 0
} vx_subscription_type;

typedef enum {
    notification_not_typing = 0,
    notification_typing = 1,
    notification_hand_lowered = 2,
    notification_hand_raised = 3,
    notification_min = notification_not_typing,
    notification_max = notification_hand_raised
} vx_notification_type;

typedef enum {
    dtmf_0 = 0,
    dtmf_1 = 1,
    dtmf_2 = 2,
    dtmf_3 = 3,
    dtmf_4 = 4,
    dtmf_5 = 5,
    dtmf_6 = 6,
    dtmf_7 = 7,
    dtmf_8 = 8,
    dtmf_9 = 9,
    dtmf_pound = 10,
    dtmf_star = 11,
    dtmf_A = 12,
    dtmf_B = 13,
    dtmf_C = 14,
    dtmf_D = 15,
    dtmf_max = dtmf_D
} vx_dtmf_type;

typedef enum {
    text_mode_disabled = 0,
    text_mode_enabled = 1
} vx_text_mode;

typedef enum {
    channel_unlock = 0,
    channel_lock = 1
} vx_channel_lock_mode;

typedef enum {
    mute_scope_all = 0,
    mute_scope_audio = 1,
    mute_scope_text = 2
} vx_mute_scope;

typedef enum {
    VX_RECORDING_FRAME_TYPE_DELTA = 0,
    VX_RECORDING_FRAME_TYPE_CONTROL = 1
} vx_recording_frame_type_t;

typedef enum {
    op_none = 0,
    op_safeupdate = 1,
    op_delete = 2
} vx_audiosource_operation;

typedef enum {
    aux_audio_properties_none = 0
} vx_aux_audio_properties_state;

typedef enum {
    login_state_logged_out = 0,
    login_state_logged_in = 1,
    login_state_logging_in = 2,
    login_state_logging_out = 3,
    login_state_resetting = 4,
    login_state_error = 100
} vx_login_state_change_state;

typedef enum {
    publication_state_success = 0,
    publication_state_transient_error = 1,
    publication_state_permanent_error = 2
} vx_publication_state_change_state;

typedef enum {
    buddy_presence_unknown = 0,  
    buddy_presence_pending = 1,  
    buddy_presence_online = 2,
    buddy_presence_busy = 3,
    buddy_presence_brb = 4,
    buddy_presence_away = 5,
    buddy_presence_onthephone = 6,
    buddy_presence_outtolunch = 7,
    buddy_presence_custom = 8,  
    buddy_presence_online_slc = 9,  
    buddy_presence_closed = 0,  
    buddy_presence_offline = 0,
    buddy_presence_chat = 10,
    buddy_presence_extended_away = 11,
    buddy_presence_min = buddy_presence_unknown,
    buddy_presence_max = buddy_presence_extended_away
} vx_buddy_presence_state;

typedef enum {
    presence_online = 0,
    presence_busy = 1,
    presence_brb = 2,
    presence_away = 3,
    presence_onthephone = 4,
    presence_offline = 5,
    presence_chat = 6,
    presence_extended_away = 7,
    presence_min = presence_online,
    presence_max = presence_extended_away
} vx_presence_state;

typedef enum {
    session_notification_none = 0
} vx_session_notification_state;

typedef enum {
    message_none = 0
} vx_message_state;

typedef enum {
    // NB: Keep in sync with enum TextState in sessionproperties.h
    session_text_disconnected = 0,
    session_text_connected = 1,
    session_text_connecting = 2,
    session_text_disconnecting = 3
} vx_session_text_state;

typedef enum {
    // NB: Keep in sync with enum MediaState in sessionproperties.h
    // NB: MediaState has the additional state MediaStateIncoming, which is mapped to session_media_ringing or session_media_disconnected in different places.
    session_media_disconnected = 1,
    session_media_connected = 2,
    session_media_ringing = 3,
    session_media_connecting = 6,
    session_media_disconnecting = 7
} vx_session_media_state;

typedef enum {
    participant_user = 0,
    part_user = participant_user,  // For backward compatibility.

    participant_moderator = 1,
    part_moderator = participant_moderator,  // For backward compatibility.

    participant_owner = 2,
    part_focus = participant_owner  // For backward compatibility.
} vx_participant_type;

typedef enum {
    orientation_default = 0,
    orientation_legacy = 1,
    orientation_vivox = 2
} orientation_type;

typedef enum {
    media_completion_type_none = 0,
    aux_buffer_audio_capture = 1,
    aux_buffer_audio_render = 2,
    sessiongroup_audio_injection = 3
} vx_media_completion_type;

#define VX_MEDIA_FLAGS_AUDIO 0x1
#define VX_MEDIA_FLAGS_TEXT  0x2

// Buddy for state dump.
typedef struct vx_state_buddy_contact {
    vx_buddy_presence_state presence;
    char *display_name;
    char *application;
    char *custom_message;
    char *contact;
    char *priority;
    char *id;
} vx_state_buddy_contact_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_buddy_contact_create(vx_state_buddy_contact_t **contact);
VIVOXSDK_DLLEXPORT int vx_state_buddy_contact_free(vx_state_buddy_contact_t *contact);
#endif
typedef vx_state_buddy_contact_t *vx_state_buddy_contact_ref_t;
typedef vx_state_buddy_contact_ref_t *vx_state_buddy_contact_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_buddy_contact_list_create(int size, vx_state_buddy_contact_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_state_buddy_contact_list_free(vx_state_buddy_contact_t **list, int size);
#endif

// Buddy for state dump.
typedef struct vx_state_buddy {
    char *buddy_uri;
    char *display_name;
    int parent_group_id;
    char *buddy_data;
    // char* account_name;
    int state_buddy_contact_count;
    vx_state_buddy_contact_t **state_buddy_contacts;
} vx_state_buddy_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_buddy_create(vx_state_buddy_t **buddy);
VIVOXSDK_DLLEXPORT int vx_state_buddy_free(vx_state_buddy_t *buddy);
#endif
typedef vx_state_buddy_t *vx_state_buddy_ref_t;
typedef vx_state_buddy_ref_t *vx_state_buddy_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_buddy_list_create(int size, vx_state_buddy_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_state_buddy_list_free(vx_state_buddy_t **list, int size);
#endif

typedef struct vx_state_buddy_group {
    int group_id;
    char *group_name;
    char *group_data;
} vx_state_buddy_group_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_buddy_group_create(vx_state_buddy_group_t **group);
VIVOXSDK_DLLEXPORT int vx_state_buddy_group_free(vx_state_buddy_group_t *group);
#endif
typedef vx_state_buddy_group_t *vx_state_buddy_group_ref_t;
typedef vx_state_buddy_group_ref_t *vx_state_buddy_group_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_buddy_group_list_create(int size, vx_state_buddy_group_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_state_buddy_group_list_free(vx_state_buddy_group_t **list, int size);
#endif

typedef struct vx_participant {
    char *uri;
    char *first_name;
    char *last_name;
    char *display_name;
    char *username;
    int is_moderator;
    int is_moderator_muted;
    int is_moderator_text_muted;
    int is_muted_for_me;  // NOT CURRENTLY IMPLEMENTED
    int is_owner;
    int account_id;  
} vx_participant_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_participant_create(vx_participant_t **participant);
VIVOXSDK_DLLEXPORT int vx_participant_free(vx_participant_t *participant);
#endif
typedef vx_participant_t *vx_participant_ref_t;
typedef vx_participant_ref_t *vx_participant_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_participant_list_create(int size, vx_participant_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_participant_list_free(vx_participant_t **list, int size);
#endif

typedef struct vx_state_participant {
    char *uri;
    char *display_name;
    int is_audio_enabled;
    int is_text_enabled;
    int is_audio_muted_for_me;
    int is_text_muted_for_me;           // Not currently supported.
    int is_audio_moderator_muted;
    int is_text_moderator_muted;
    int is_hand_raised;
    int is_typing;
    int is_speaking;
    int volume;
    double energy;
    vx_participant_type type;
    int is_anonymous_login;
} vx_state_participant_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_participant_create(vx_state_participant_t **state_participant);
VIVOXSDK_DLLEXPORT int vx_state_participant_free(vx_state_participant_t *state_participant);
#endif
typedef vx_state_participant_t *vx_state_participant_ref_t;
typedef vx_state_participant_ref_t *vx_state_participant_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_participant_list_create(int size, vx_state_participant_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_state_participant_list_free(vx_state_participant_t **list, int size);
#endif

typedef struct vx_state_session {
    char *session_handle;
    char *uri;
    char *name;
    int is_audio_muted_for_me;
    int is_text_muted_for_me;  // Not currently supported.
    int is_transmitting;
    int is_focused;
    int volume;
    int session_font_id;
    int has_audio;
    int has_text;
    int is_incoming;
    int is_positional;
    int is_connected;
    int state_participant_count;
    vx_state_participant_t **state_participants;
    char *durable_media_id;
} vx_state_session_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_session_create(vx_state_session_t **state_session);
VIVOXSDK_DLLEXPORT int vx_state_session_free(vx_state_session_t *state_session);
#endif
typedef vx_state_session_t *vx_state_session_ref_t;
typedef vx_state_session_ref_t *vx_state_session_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_session_list_create(int size, vx_state_session_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_state_session_list_free(vx_state_session_t **list, int size);
#endif

typedef struct vx_state_sessiongroup {
    char *sessiongroup_handle;
    int state_sessions_count;
    vx_state_session_t **state_sessions;
    int in_delayed_playback;
    double current_playback_speed;
    vx_sessiongroup_playback_mode current_playback_mode;
    int playback_paused;
    int loop_buffer_capacity;
    int first_loop_frame;
    int total_loop_frames_captured;
    int last_loop_frame_played;
    char *current_recording_filename;
    int total_recorded_frames;
} vx_state_sessiongroup_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_sessiongroup_create(vx_state_sessiongroup_t **state_sessiongroup);
VIVOXSDK_DLLEXPORT int vx_state_sessiongroup_free(vx_state_sessiongroup_t *state_sessiongroup);
#endif
typedef vx_state_sessiongroup_t *vx_state_sessiongroup_ref_t;
typedef vx_state_sessiongroup_ref_t *vx_state_sessiongroup_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_sessiongroup_list_create(int size, vx_state_sessiongroup_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_state_sessiongroup_list_free(vx_state_sessiongroup_t **list, int size);
#endif

typedef struct vx_state_account {
    char *account_handle;
    char *account_uri;
    char *display_name;
    int is_anonymous_login;
    int state_sessiongroups_count;
    vx_login_state_change_state state;
    vx_state_sessiongroup_t **state_sessiongroups;
    int state_buddy_count;
    int state_buddy_group_count;
    vx_state_buddy_t **state_buddies;
    vx_state_buddy_group_t **state_buddy_groups;
} vx_state_account_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_account_create(vx_state_account_t **state_account);
VIVOXSDK_DLLEXPORT int vx_state_account_free(vx_state_account_t *state_account);
#endif
typedef vx_state_account_t *vx_state_account_ref_t;
typedef vx_state_account_ref_t *vx_state_account_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_account_list_create(int size, vx_state_account_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_state_account_list_free(vx_state_account_t **list, int size);
#endif

typedef struct vx_state_connector {
    char *connector_handle;
    int state_accounts_count;
    vx_state_account_t **state_accounts;
    int mic_vol;
    int mic_mute;
    int speaker_vol;
    int speaker_mute;
} vx_state_connector_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_connector_create(vx_state_connector_t **state_connector);
VIVOXSDK_DLLEXPORT int vx_state_connector_free(vx_state_connector_t *state_connector);
#endif
typedef vx_state_connector_t *vx_state_connector_ref_t;
typedef vx_state_connector_ref_t *vx_state_connector_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_state_connector_list_create(int size, vx_state_connector_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_state_connector_list_free(vx_state_connector_t **list, int size);
#endif

typedef struct vx_channel {
    char *channel_name;

    char *channel_desc;

    char *host;

    int channel_id;

    int limit;

    int capacity;

    char *modified;

    char *owner;

    char *owner_user_name;

    int is_persistent;  /* 1 true, <= 0 false */

    int is_protected;  /* 1 true, <= 0 false */

    int size;

    int type;

    vx_channel_mode mode;

    char *channel_uri;

    int max_range;

    int clamping_dist;

    double roll_off;

    double max_gain;

    int dist_model;

    int encrypt_audio;

    char *owner_display_name;

    int active_participants;
} vx_channel_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_channel_create(vx_channel_t **channel);
VIVOXSDK_DLLEXPORT int vx_channel_free(vx_channel_t *channel);
#endif
typedef vx_channel_t *vx_channel_ref_t;
typedef vx_channel_ref_t *vx_channel_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_channel_list_create(int size, vx_channel_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_channel_list_free(vx_channel_t **list, int size);
#endif

typedef struct vx_voice_font {
    int id;
    int parent_id;
    vx_font_type type;
    char *name;
    char *description;
    char *expiration_date;
    int expired;  // 0 is false, 1 is true
    char *font_delta;
    char *font_rules;
    vx_font_status status;
} vx_voice_font_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_voice_font_create(vx_voice_font_t **channel);
VIVOXSDK_DLLEXPORT int vx_voice_font_free(vx_voice_font_t *channel);
#endif
typedef vx_voice_font_t *vx_voice_font_ref_t;
typedef vx_voice_font_ref_t *vx_voice_font_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_voice_font_list_create(int size, vx_voice_font_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_voice_font_list_free(vx_voice_font_t **list, int size);
VIVOXSDK_DLLEXPORT int vx_string_list_create(int size, char ***list_out);
VIVOXSDK_DLLEXPORT int vx_string_list_free(char **list);
#endif

typedef struct vx_block_rule {
    char *block_mask;
    int presence_only;
} vx_block_rule_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_block_rule_create(vx_block_rule_t **block_rule);
VIVOXSDK_DLLEXPORT int vx_block_rule_free(vx_block_rule_t *block_rule);
#endif

typedef vx_block_rule_t *vx_block_rule_ref_t;
typedef vx_block_rule_ref_t *vx_block_rules_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_block_rules_create(int size, vx_block_rules_t *list_out);
VIVOXSDK_DLLEXPORT int vx_block_rules_free(vx_block_rule_t **list, int size);
#endif

typedef struct vx_auto_accept_rule {
    char *auto_accept_mask;
    int auto_add_as_buddy;
    char *auto_accept_nickname;
} vx_auto_accept_rule_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_auto_accept_rule_create(vx_auto_accept_rule_t **auto_accept_rule);
VIVOXSDK_DLLEXPORT int vx_auto_accept_rule_free(vx_auto_accept_rule_t *auto_accept_rule);
#endif
typedef vx_auto_accept_rule_t *vx_auto_accept_rule_ref_t;
typedef vx_auto_accept_rule_ref_t *vx_auto_accept_rules_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_auto_accept_rules_create(int size, vx_auto_accept_rules_t *list_out);
VIVOXSDK_DLLEXPORT int vx_auto_accept_rules_free(vx_auto_accept_rule_t **list, int size);
#endif

typedef struct vx_user_channel {
    char *uri;
    char *name;
} vx_user_channel_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_user_channel_create(vx_user_channel_t **user_channel);
VIVOXSDK_DLLEXPORT int vx_user_channel_free(vx_user_channel_t *user_channel);
#endif

typedef vx_user_channel_t *vx_user_channel_ref_t;
typedef vx_user_channel_ref_t *vx_user_channels_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_user_channels_create(int size, vx_user_channels_t *list_out);
VIVOXSDK_DLLEXPORT int vx_user_channels_free(vx_user_channel_t **list, int size);
#endif

typedef struct vx_connectivity_test_result {
    ND_TEST_TYPE test_type;
    ND_ERROR test_error_code;
    char *test_additional_info;
} vx_connectivity_test_result_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_connectivity_test_result_create(vx_connectivity_test_result_t **connectivity_test_result, ND_TEST_TYPE tt);
VIVOXSDK_DLLEXPORT int vx_connectivity_test_result_free(vx_connectivity_test_result_t *connectivity_test_result);
#endif
typedef vx_connectivity_test_result_t *vx_connectivity_test_result_ref_t;
typedef vx_connectivity_test_result_ref_t *vx_connectivity_test_results_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_connectivity_test_results_create(int size, vx_connectivity_test_results_t *list_out);
VIVOXSDK_DLLEXPORT int vx_connectivity_test_results_free(vx_connectivity_test_result_t **list, int size);
#endif

typedef struct vx_account {
    char *uri;
    char *firstname;
    char *lastname;
    char *username;
    char *displayname;
    char *email;
    char *phone;
    char *carrier;  // Not currently implemented.
    char *created_date;
} vx_account_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_account_create(vx_account_t **account);
VIVOXSDK_DLLEXPORT int vx_account_free(vx_account_t *account);
#endif

typedef enum vx_device_type {
    vx_device_type_specific_device = 0,

    vx_device_type_default_system = 1,

    vx_device_type_null = 2,

    vx_device_type_default_communication = 3
} vx_device_type_t;

typedef struct vx_device {
    char *device;

    char *display_name;

    vx_device_type_t device_type;
} vx_device_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_device_create(vx_device_t **device);
VIVOXSDK_DLLEXPORT int vx_device_free(vx_device_t *device);
#endif
typedef vx_device_t *vx_device_ref_t;
typedef vx_device_ref_t *vx_devices_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_devices_create(int size, vx_devices_t *list_out);
VIVOXSDK_DLLEXPORT int vx_devices_free(vx_device_t **list, int size);
#endif

typedef struct vx_buddy {
    char *buddy_uri;
    char *display_name;
    int parent_group_id;
    char *buddy_data;
    int account_id;  
    char *account_name;
} vx_buddy_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_buddy_create(vx_buddy_t **buddy);
VIVOXSDK_DLLEXPORT int vx_buddy_free(vx_buddy_t *buddy);
#endif
typedef vx_buddy_t *vx_buddy_ref_t;
typedef vx_buddy_ref_t *vx_buddy_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_buddy_list_create(int size, vx_buddy_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_buddy_list_free(vx_buddy_t **list, int size);
#endif

typedef struct vx_group {
    int group_id;
    char *group_name;
    char *group_data;
} vx_group_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_group_create(vx_group_t **group);
VIVOXSDK_DLLEXPORT int vx_group_free(vx_group_t *group);
#endif
typedef vx_group_t *vx_group_ref_t;
typedef vx_group_ref_t *vx_group_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_group_list_create(int size, vx_group_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_group_list_free(vx_group_t **list, int size);
#endif

typedef struct vx_name_value_pair {
    char *name;

    char *value;
} vx_name_value_pair_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_name_value_pair_create(vx_name_value_pair_t **nvpair);
VIVOXSDK_DLLEXPORT int vx_name_value_pair_free(vx_name_value_pair_t *nvpair);
#endif
typedef vx_name_value_pair_t *vx_name_value_pair_ref_t;
typedef vx_name_value_pair_ref_t *vx_name_value_pairs_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_name_value_pairs_create(int size, vx_name_value_pairs_t *list_out);
VIVOXSDK_DLLEXPORT int vx_name_value_pairs_free(vx_name_value_pair_t **list, int size);
#endif

typedef enum {
    vx_conversation_channel = 0,
    vx_conversation_direct  = 1
} vx_conversation_type;

typedef struct vx_conversation {
    char *name;
    vx_conversation_type type;
    char *display_name;
    int unread_count;
} vx_conversation_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_conversation_create(vx_conversation_t **conversation);
VIVOXSDK_DLLEXPORT int vx_conversation_free(vx_conversation_t *conversation);
#endif
typedef vx_conversation_t *vx_conversation_ref_t;
typedef vx_conversation_ref_t *vx_conversation_list_t;
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_conversation_list_create(int size, vx_conversation_list_t *list_out);
VIVOXSDK_DLLEXPORT int vx_conversation_list_free(int size, vx_conversation_t **list);
#endif

/* Vivox SDK functions */
#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT char *vx_strdup(const char *);

VIVOXSDK_DLLEXPORT int vx_free(char *);

VIVOXSDK_DLLEXPORT int vx_unallocate(void *p);

VIVOXSDK_DLLEXPORT void *vx_allocate(size_t nBytes);
VIVOXSDK_DLLEXPORT void *vx_reallocate(void *p, size_t nBytes);
VIVOXSDK_DLLEXPORT void *vx_calloc(size_t num, size_t bytesPerElement);

VIVOXSDK_DLLEXPORT void *vx_allocate_aligned(size_t alignment, size_t size);
VIVOXSDK_DLLEXPORT int vx_unallocate_aligned(void *p);

#define VX_GET_MESSAGE_NO_MESSAGE -1
#define VX_GET_MESSAGE_AVAILABLE 0
#define VX_GET_MESSAGE_FAILURE 1

VIVOXSDK_DLLEXPORT int vx_get_message(vx_message_base_t **message);

VIVOXSDK_DLLEXPORT int vx_issue_request(vx_req_base_t *request);

VIVOXSDK_DLLEXPORT int vx_issue_request2(vx_req_base_t *request);

VIVOXSDK_DLLEXPORT int vx_issue_request3(vx_req_base_t *request, int *request_count);

VIVOXSDK_DLLEXPORT int vx_request_to_xml(void *request, char **xml);

VIVOXSDK_DLLEXPORT vx_request_type vx_xml_to_request(const char *xml, void **request, char **error);

VIVOXSDK_DLLEXPORT int vx_response_to_xml(void *response, char **xml);

VIVOXSDK_DLLEXPORT vx_response_type vx_xml_to_response(const char *xml, void **response, char **error);

VIVOXSDK_DLLEXPORT int vx_event_to_xml(void *event, char **xml);

VIVOXSDK_DLLEXPORT vx_event_type vx_xml_to_event(const char *xml, void **event, char **error);

VIVOXSDK_DLLEXPORT vx_message_type vx_get_message_type(const char *xml);

VIVOXSDK_DLLEXPORT unsigned long long vx_get_time_ms(void);

VIVOXSDK_DLLEXPORT unsigned long long vx_get_time_milli_seconds(void);

VIVOXSDK_DLLEXPORT unsigned long long vx_get_time_micro_seconds(void);

VIVOXSDK_DLLEXPORT long long vx_sleep_milli_seconds(unsigned long long milli_seconds);

VIVOXSDK_DLLEXPORT int vx_register_message_notification_handler(void (*pf_handler)(void *), void *cookie);

VIVOXSDK_DLLEXPORT int vx_unregister_message_notification_handler(void (*pf_handler)(void *), void *cookie);

VIVOXSDK_DLLEXPORT vx_message_base_t *vx_wait_for_message(int msTimeout);

VIVOXSDK_DLLEXPORT int vx_register_logging_initialization(
        vx_log_type log_type,
        const char *log_folder,
        const char *log_filename_prefix,
        const char *log_filename_suffix,
        int log_level,
        void (*pf_handler)(const char *source, const char *level, const char *message));

VIVOXSDK_DLLEXPORT char *vx_get_log_file_path(void);

VIVOXSDK_DLLEXPORT int vx_unregister_logging_handler(void (*pf_handler)(void *), void *cookie);

VIVOXSDK_DLLEXPORT int vx_create_account(const char *acct_mgmt_server, const char *admin_name, const char *admin_pw, const char *uname, const char *pw);

VIVOXSDK_DLLEXPORT int vx_get_crash_dump_count(void);

VIVOXSDK_DLLEXPORT int vx_set_crash_dump_generation_enabled(int value);

VIVOXSDK_DLLEXPORT int vx_get_crash_dump_generation(void);

VIVOXSDK_DLLEXPORT char *vx_read_crash_dump(int index);

VIVOXSDK_DLLEXPORT time_t vx_get_crash_dump_timestamp(int index);

VIVOXSDK_DLLEXPORT int vx_delete_crash_dump(int index);

VIVOXSDK_DLLEXPORT int vx_on_application_exit(void);

VIVOXSDK_DLLEXPORT const char *vx_get_sdk_version_info(void);

VIVOXSDK_DLLEXPORT const char *vx_get_sdk_version_info_ex(void);

VIVOXSDK_DLLEXPORT int vx_apply_font_to_file(const char *fontDefinition, const char *inputFile, const char *outputFile);

VIVOXSDK_DLLEXPORT int vx_apply_font_to_file_return_energy_ratio(const char *fontDefinition, const char *inputFile, const char *outputFile, double *energyRatio);

VIVOXSDK_DLLEXPORT int vx_apply_font_to_vxz_file_return_energy_ratio(const char *fontDefinition, const char *inputFile, const char *outputFile, double *energyRatio);

VIVOXSDK_DLLEXPORT void *vx_copy_audioBuffer(void *audioBufferPtr);

VIVOXSDK_DLLEXPORT double vx_get_audioBuffer_duration(void *audioBufferPtr);

VIVOXSDK_DLLEXPORT int vx_get_audioBuffer_sample_rate(void *audioBufferPtr);

VIVOXSDK_DLLEXPORT int vx_free_audioBuffer(void **audioBufferPtr);

VIVOXSDK_DLLEXPORT int vx_export_audioBuffer_to_pcm(void *audioBufferPtr, short *pcmBuffer, int maxSamples);

VIVOXSDK_DLLEXPORT int vx_export_audioBuffer_to_wav_file(void *audioBufferPtr, const char *outputFile);

VIVOXSDK_DLLEXPORT int vx_export_audioBuffer_to_memory(void *audioBufferPtr, short **audioBufferOut, int *nSamplesOut, int *sampleRateOut, int *nChannelsOut);

VIVOXSDK_DLLEXPORT int vx_set_out_of_process_server_address(const char *address, unsigned short port);

VIVOXSDK_DLLEXPORT int vx_initialize(void);

VIVOXSDK_DLLEXPORT int vx_initialize3(vx_sdk_config_t *config, size_t config_size);

VIVOXSDK_DLLEXPORT int vx_is_initialized(void);

VIVOXSDK_DLLEXPORT int vx_get_default_config3(vx_sdk_config_t *config, size_t config_size);

VIVOXSDK_DLLEXPORT int vx_uninitialize(void);
#endif

#define VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000_EXPANDED 0x10001

#define VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000 VIVOX_V_V2_AUDIO_DATA_MONO_SIREN14_32000_EXPANDED

#define VIVOX_V_V2_AUDIO_DATA_MONO_SIREN7_16000_EXPANDED 0x10008

#define VIVOX_V_V2_AUDIO_DATA_MONO_OPUS_48000_EXPANDED 0x10009

#define VIVOX_VANI_SIREN7       0x2   /* Siren7, 16kHz, 32kbps */
#define VIVOX_VANI_SIREN14      0x4   /* Siren14, 32kHz, 32kbps */
#define VIVOX_VANI_LEGACY_MASK  0x6
#define VIVOX_VANI_OPUS8        0x10  /* Opus, 48kHz, 8kbps */
#define VIVOX_VANI_OPUS40       0x20  /* Opus, 48kHz, 40kbps */
#define VIVOX_VANI_OPUS57       0x40  /* Opus, 48kHz, 57kbps */ /* proposed; pending research */
#define VIVOX_VANI_OPUS72       0x80  /* Opus, 48kHz, 72kbps */ /* proposed; pending research */
#define VIVOX_VANI_OPUS         VIVOX_VANI_OPUS40
#define VIVOX_VANI_OPUS_MASK    0xf0

#define VIVOX_VANI_PCMU VX_DEPRECATED_MACRO(VIVOX_VANI_PCMU, 5.19) VIVOX_VANI_OPUS8

typedef enum {
    vx_codec_siren7 = VIVOX_VANI_SIREN7,           /* Siren7, 16kHz, 32kbps */
    vx_codec_siren14 = VIVOX_VANI_SIREN14,         /* Siren14, 32kHz, 32kbps */
    vx_codec_opus8 = VIVOX_VANI_OPUS8,             /* Opus, 48kHz, 8kbps */
    vx_codec_opus40 = VIVOX_VANI_OPUS40,           /* Opus, 48kHz, 40kbps -- recommended Opus default */
    vx_codec_opus57 = VIVOX_VANI_OPUS57,           /* Opus, 48kHz, 57kbps -- proposed; pending research */
    vx_codec_opus72 = VIVOX_VANI_OPUS72,           /* Opus, 48kHz, 72kbps -- proposed; pending research */

    VX_DEPRECATED_ENUM_GCC(vx_codec_pcmu, 5.19) = VIVOX_VANI_OPUS8 /* PCMU functionality has been removed */
} vx_codec;
VX_DEPRECATED_ENUM_MSC(vx_codec_pcmu)

typedef struct vx_stat_sample {
    double sample_count;
    double sum;
    double sum_of_squares;
    double mean;
    double stddev;
    double min;
    double max;
    double last;
} vx_stat_sample_t;

typedef struct vx_stat_thread {
    int interval;
    int count_poll_lt_1ms;
    int count_poll_lt_5ms;
    int count_poll_lt_10ms;
    int count_poll_lt_16ms;
    int count_poll_lt_20ms;
    int count_poll_lt_25ms;
    int count_poll_gte_25ms;
} vx_stat_thread_t;

typedef struct vx_system_stats {
    int ss_size;
    int ar_source_count;
    int ar_source_queue_limit;
    int ar_source_queue_overflows;
    int ar_source_poll_count;
    unsigned msgovrld_count;
    vx_stat_sample_t ar_source_free_buffers;
    vx_stat_sample_t ar_source_queue_depth;
    vx_stat_thread_t vp_thread;
    vx_stat_thread_t ticker_thread;

    int clnt_count;

    int lc_count;

    int mps_count;

    int mpsg_count;

    int strms_count;

    int strr_count;

    int strss_count;

    int vp_count;
} vx_system_stats_t;

typedef enum vx_application_state_notification_type {
    vx_application_state_notification_type_before_background = 0,
    vx_application_state_notification_type_after_foreground = 1,
    vx_application_state_notification_type_periodic_background_idle = 2
} vx_application_state_notification_type_t;

#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT int vx_debug_call(void *);

VIVOXSDK_DLLEXPORT int vx_get_system_stats(vx_system_stats_t *system_stats);

#define VX_VAR_DECODER_COUNT_LIMIT    "DecoderLimit"
#define VX_VAR_DECODER_HANGOVER_LIMIT "DecoderHangoverLimit"
#define VX_VAR_RTP_ENCRYPTION         "RTPEncryption"

VIVOXSDK_DLLEXPORT int vx_get_int_var(const char *var_name, int *p_value);

VIVOXSDK_DLLEXPORT int vx_set_int_var(const char *var_name, int value);

VIVOXSDK_DLLEXPORT int vx_destroy_message(vx_message_base_t *message);
#endif

typedef enum {
    VXA_SUCCESS = 0,

    VXA_INVALID_PARAMETER = 1,

    VXA_DEVICE_DOES_NOT_EXIST = 2,

    VXA_INTERNAL_ERROR = 3,

    VXA_OUT_OF_MEMORY = 4,

    VXA_INVALID_STATE = 5,

    VXA_NO_MORE_DATA = 6,

    VXA_FEATURE_NOT_SUPPORTED = 7,

    VXA_MAX_DEVICES_EXCEEDED = 8,

    VXA_NO_BUFFERS_AVAILABLE = 9,

    VXA_ACCESS_DENIED = 10
} VXA_ERROR_CODES;

typedef enum {
    VXA_CAPTURE_OPEN_FLAG_USE_AEC = 0x00000001,

    VXA_CAPTURE_OPEN_FLAG_USE_AGC = 0x00000002
} VXA_CAPTURE_FLAGS;

typedef int vxa_status_t;

typedef struct vxa_capture_device_stats_t {
    int buffer_underrun_count;
    int buffer_overrun_count;
    int other_error_count;
    int audio_queue_read_count;  // Correlate with buffer_underrun_count
    int audio_queue_write_count;  // Correlate with buffer_overrun_count
} vxa_capture_device_stats_t;

typedef struct vxa_render_device_stats_t {
    int current_output_queue_depth_milliseconds;
    int buffer_underrun_count;
    int buffer_overrun_count;
    int other_error_count;
    int audio_queue_read_count;  // Correlate with buffer_underrun_count
    int audio_queue_write_count;  // Correlate with buffer_overrun_count
    int hardware_output_channels;
    int hardware_preferred_samplerate;
    int hardware_preferred_buffer_duration;
} vxa_render_device_stats_t;

#define MAX_VXA_DEVICE_COUNT 32

typedef enum {
    channel_rolloff_curve_type_none = 0,

    channel_rolloff_curve_type_inverse_distance_clamped = 1,

    channel_rolloff_curve_type_linear_distance_clamped = 2,

    channel_rolloff_curve_type_exponential_distance_clamped = 3
} vx_channel_rolloff_curve_type;

#ifndef VIVOX_TYPES_ONLY
VIVOXSDK_DLLEXPORT char *vx_debug_generate_token(const char *issuer, vx_time_t expiration, const char *vxa, unsigned long long serial, const char *subject, const char *from_uri, const char *to_uri, const unsigned char *key, size_t key_len);

VIVOXSDK_DLLEXPORT unsigned int vx_get_http(const char *url, unsigned int *response_code, char **content, size_t *content_len, char **content_type, size_t *content_type_len);

VIVOXSDK_DLLEXPORT int vx_free_http(char **content, char **content_type);

VIVOXSDK_DLLEXPORT char *vx_get_random_user_id(const char *prefix);

VIVOXSDK_DLLEXPORT char *vx_get_random_user_id_ex(const char *prefix, const char *issuer);

VIVOXSDK_DLLEXPORT char *vx_get_random_channel_uri(const char *prefix, const char *realm);

VIVOXSDK_DLLEXPORT char *vx_get_random_channel_uri_ex(const char *prefix, const char *realm, const char *issuer);

VIVOXSDK_DLLEXPORT char *vx_get_user_uri(const char *name, const char *realm, const char *issuer);

VIVOXSDK_DLLEXPORT char *vx_get_echo_channel_uri(const char *name, const char *realm, const char *issuer);

VIVOXSDK_DLLEXPORT char *vx_get_general_channel_uri(const char *name, const char *realm, const char *issuer);

VIVOXSDK_DLLEXPORT char *vx_get_positional_channel_uri(const char *name, const char *realm, int max_range, int clamping_distance, double rolloff, vx_channel_rolloff_curve_type distance_model, const char *issuer);

VIVOXSDK_DLLEXPORT char *vx_uri_to_string(int is_multitenant, const char *uri);
#endif

/* Audio Quality Controls functions */
typedef enum {
    opus_mode_cbr = 0,

    opus_mode_lvbr = 1,

    opus_mode_vbr = 2
} vx_opus_vbr_mode;

typedef enum {
    opus_bandwidth_auto = 0,
    opus_bandwidth_nb = 1,
    opus_bandwidth_mb = 2,
    opus_bandwidth_wb = 3,
    opus_bandwidth_swb = 4,
    opus_bandwidth_fb = 5
} vx_opus_bandwidth;

VIVOXSDK_DLLEXPORT int vx_opus_set_bit_rate(int bits_per_second);

VIVOXSDK_DLLEXPORT int vx_opus_get_bit_rate(int *p_bits_per_second);

VIVOXSDK_DLLEXPORT int vx_opus_set_complexity(int complexity);

VIVOXSDK_DLLEXPORT int vx_opus_get_complexity(int *p_complexity);

VIVOXSDK_DLLEXPORT int vx_opus_set_vbr_mode(int vbr_mode);

VIVOXSDK_DLLEXPORT int vx_opus_get_vbr_mode(int *p_vbr_mode);

VIVOXSDK_DLLEXPORT int vx_opus_set_bandwidth(int bandwidth);

VIVOXSDK_DLLEXPORT int vx_opus_get_bandwidth(int *p_bandwidth);

VIVOXSDK_DLLEXPORT unsigned int vx_get_available_codecs_mask(void);

VIVOXSDK_DLLEXPORT unsigned int vx_get_default_codecs_mask(void);

VIVOXSDK_DLLEXPORT int vx_get_dump_memory_interval(void);

VIVOXSDK_DLLEXPORT int vx_cpumonitor_start(int interval, int report_interval);

VIVOXSDK_DLLEXPORT int vx_cpumonitor_stop(void);

VIVOXSDK_DLLEXPORT int vx_cpumonitor_start_eater(int nthreads, int priority);

VIVOXSDK_DLLEXPORT int vx_cpumonitor_stop_eater(void);

typedef enum vx_crash_test_type {
    vx_crash_access_zero_pointer = 0,

    vx_crash_access_violation = 1,

    vx_crash_stack_overflow = 2,

    vx_crash_heap_corruption = 3,

#ifdef __clang__
    vx_crash_builtin_trap = 4
#endif
} vx_crash_test_type_t;

VIVOXSDK_DLLEXPORT int vx_crash_test(vx_crash_test_type_t crash_type);

VIVOXSDK_DLLEXPORT int vx_set_message_rate_params(unsigned bucketSize, float messageSpeed, int fillBucket);

VIVOXSDK_DLLEXPORT int vx_set_default_message_rate_params(void);

VIVOXSDK_DLLEXPORT int vx_android_set_mic_mute(int mute);

VIVOXSDK_DLLEXPORT int vx_internal_enable_debug_mode_disable_strict_checks(void);

VIVOXSDK_DLLEXPORT int vx_internal_disable_debug_mode_enable_strict_checks(void);

VIVOXSDK_DLLEXPORT int vx_is_access_token_well_formed(const char *access_token, char **error);

typedef struct vx_vxd {
    size_t version;

    char *participant_uri;

    char *data;

    size_t data_size;
} vx_vxd_t;

VIVOXSDK_DLLEXPORT int vx_vxd_send(VX_HANDLE session_handle, const char *data, size_t size);

VIVOXSDK_DLLEXPORT int vx_vxd_recv(VX_HANDLE session_handle, vx_vxd_t **vxd_ptr);

VIVOXSDK_DLLEXPORT int vx_vxd_destroy(vx_vxd_t *vxd);

typedef enum {
    path_cache_folder = 0
} vx_path_id;

VIVOXSDK_DLLEXPORT char *vx_get_path(unsigned int path_id);

VIVOXSDK_DLLEXPORT int vx_get_dynamic_voice_processing_switching_enabled(int *enabled);

VIVOXSDK_DLLEXPORT int vx_set_dynamic_voice_processing_switching_enabled(int enabled);

VIVOXSDK_DLLEXPORT int vx_get_ios_voice_processing_io_mode(int *mode);

VIVOXSDK_DLLEXPORT int vx_set_ios_voice_processing_io_mode(int mode);

VIVOXSDK_DLLEXPORT int vx_get_platform_aec_enabled(int *enabled);

VIVOXSDK_DLLEXPORT int vx_set_platform_aec_enabled(int enabled);

VIVOXSDK_DLLEXPORT int vx_get_vivox_aec_enabled(int *enabled);

VIVOXSDK_DLLEXPORT int vx_set_vivox_aec_enabled(int enabled);

typedef enum {
    noise_suppression_low = 0,
    noise_suppression_moderate = 1,
    noise_suppression_high = 2,
    noise_suppression_very_high = 3
} vx_noise_suppression_level;

VIVOXSDK_DLLEXPORT int vx_get_noise_suppression_enabled(int *enabled);

VIVOXSDK_DLLEXPORT int vx_get_noise_suppression_level(vx_noise_suppression_level *level);

VIVOXSDK_DLLEXPORT int vx_set_noise_suppression_enabled(int enabled);

VIVOXSDK_DLLEXPORT int vx_set_noise_suppression_level(vx_noise_suppression_level level);

VIVOXSDK_DLLEXPORT int vx_set_agc_enabled(int enabled);

VIVOXSDK_DLLEXPORT int vx_get_agc_enabled(int *enabled);

VIVOXSDK_DLLEXPORT int vx_set_volume_based_duplication_suppression_enabled(int enabled);

VIVOXSDK_DLLEXPORT int vx_get_volume_based_duplication_suppression_enabled(int *enabled);

VIVOXSDK_DLLEXPORT int vx_set_3d_channel_volume_protection_enabled(int enabled);

VIVOXSDK_DLLEXPORT int vx_get_3d_channel_volume_protection_enabled(int *enabled);

VIVOXSDK_DLLEXPORT int vx_set_audio_clipping_protector_enabled(int enabled);

VIVOXSDK_DLLEXPORT int vx_get_audio_clipping_protector_enabled(int *enabled);

VIVOXSDK_DLLEXPORT int vx_set_audio_clipping_protector_parameters(float minimum_threshold_db, float threshold_boost_slope);

VIVOXSDK_DLLEXPORT int vx_get_audio_clipping_protector_parameters(float *minimum_threshold_db, float *threshold_boost_slope);

typedef enum {
    tts_dest_remote_transmission = 0, 
    tts_dest_local_playback = 1, 
    tts_dest_remote_transmission_with_local_playback = 2, 
    tts_dest_queued_remote_transmission = 3, 
    tts_dest_queued_local_playback = 4, 
    tts_dest_queued_remote_transmission_with_local_playback = 5, 
    tts_dest_screen_reader = 6 
} vx_tts_destination;

typedef enum {
    tts_status_success = 0, 
    tts_error_invalid_engine_type = -1001, 
    tts_error_engine_allocation_failed = -1002, 
    tts_error_not_supported = -1003, 
    tts_error_max_characters_exceeded = -1004, 
    tts_error_utterance_below_min_duration = -1005, 
    tts_status_input_text_was_enqueued = -1006, 
    tts_error_sdk_not_initialized = -1007, 
    tts_error_destination_queue_is_full = -1008, 
    tts_status_enqueue_not_necessary = -1009, 
    tts_error_utterance_not_found = -1010, 
    tts_error_manager_not_found = -1011, 
    tts_error_invalid_argument = -1012, 
    tts_error_internal = -1013 
} vx_tts_status;

typedef unsigned int vx_tts_manager_id;
typedef unsigned int vx_tts_utterance_id;
typedef unsigned int vx_tts_voice_id;

/* End definitions outside of #ifndef VX_DISABLE_TTS */

#ifndef VX_DISABLE_TTS
#define VX_TTS_CHARACTER_COUNT_LIMIT 200
#define VX_TTS_MAX_DESTINATION_QUEUE_SIZE 10
#define VX_TTS_DEFAULT_DESTINATION tts_dest_remote_transmission

typedef enum {
    tts_engine_vivox_default = 0
} vx_tts_engine_type;

typedef struct vx_tts_utterance_impl vx_tts_utterance_impl_t;

typedef struct vx_tts_utterance {
    const vx_tts_utterance_impl_t * const utterance_obj; 
    const short *speech_buffer; 
    int sample_rate; 
    int num_frames; 
    int num_channels; 
} vx_tts_utterance_t;

typedef struct vx_tts_voice {
    vx_tts_voice_id voice_id; 
    const char *name; 
} vx_tts_voice_t;

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_initialize(vx_tts_engine_type engine_type, vx_tts_manager_id *tts_manager_id);

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_get_voices(vx_tts_manager_id tts_manager_id, int *num_voices, vx_tts_voice_t **voices);

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_shutdown(vx_tts_manager_id *tts_manager_id);

VIVOXSDK_DLLEXPORT const char *vx_get_tts_status_string(vx_tts_status status_code);

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_speak(vx_tts_manager_id tts_manager_id, vx_tts_voice_id voice_id, const char *input_text, vx_tts_destination tts_dest, vx_tts_utterance_id *utterance_id);

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_speak_to_buffer(vx_tts_manager_id tts_manager_id, vx_tts_voice_id voice_id, const char *input_text, vx_tts_utterance_t **utterance);

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_destroy_utterance(vx_tts_manager_id tts_manager_id, vx_tts_utterance_t *utterance);

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_cancel_utterance(vx_tts_manager_id tts_manager_id, vx_tts_utterance_id utterance_id);

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_cancel_all_in_dest(vx_tts_manager_id tts_manager_id, vx_tts_destination tts_dest);

VIVOXSDK_DLLEXPORT vx_tts_status vx_tts_cancel_all(vx_tts_manager_id tts_manager_id);

#endif

#ifdef __cplusplus
}
#endif

#pragma pack(pop)