Documentation

​
​

Development

User Acquisition

Monetization

Industry

Vivox Core SDK

Vivox Core SDK

Vivox
​
​
Vivox Core SDK
  • Overview
  • Before you begin
  • Get started
  • Release notes
  • Developer Guide
    • Client SDK basics
    • Channels
    • Presence management
    • Messaging
    • Manage audio
      • Direct voice audio access
        • Callback APIs
        • Callback usage
        • Read and alter audio data for each participant
      • In-game audio control
      • Muting
    • Couch co-op
    • Android app development
    • iOS app development
    • macOS app development
    • Windows app development
    • Real-time recording
    • Speech-to-text audio transcription
    • Text-to-speech
    • Troubleshooting
  • Reference
  • Privacy overview
  1. Vivox Core SDK documentation

Read and alter audio data for each participant

Managing individual participant audio data.
Read time 1 minute
Last updated 8 months ago

The
pf_on_audio_unit_before_recv_audio_mixed
callback provides a parameter with type
vx_before_recv_audio_mixed_participant_data_t *
called
participants_data
. An example of how to use this pointer to access an array of separate participants’ audio data is shown in the code sample below.
Note
If you are upgrading your Vivox integration from v5.10, 5.11, or 5.12 be aware that the unique identifier for participants has changed in v5.13 and later versions. If you were using
participant_display_name
previously you need to change it to
participant_uri
.
void SDKSampleApp::OnBeforeReceivedAudioMixed(const char *session_group_handle, const char *initial_target_uri, vx_before_recv_audio_mixed_participant_data_t *participants_data, size_t num_participants){ std::string example_uri = “example_uri”; // Iterate over the multiple audio streams for (unsigned int i = 0; i < num_participants; i++) { auto &data = participants_data[i]; int channels_per_frame = data.channels_per_frame; std::string participant_uri = data.participant_uri; if (participant_uri == example_uri) { for (unsigned int f = 0; f < data.pcm_frame_count; f++) { for (unsigned int c = 0; c < channels_per_frame; c++) { // Use / modify the audio data. Here we're simply dividing the samples by 2. data.pcm_frames[(f * channels_per_frame) + c] /= 2; } } } }}

Copyright © 2026 Unity Technologies
LegalPrivacy PolicyCookiesDocumentation Terms of UseDo Not Sell or Share My Personal InformationYour Privacy Choices (Cookie Settings)

"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S and elsewhere (more info here). Other names or brands are trademarks of their respective owners.

Some pages are machine-translated for convenience, and may contain inaccuracies. In the event of conflicting information, the English version is authoritative.


    Report a problem with this page