Data Definition
The output data structure of the AO module consists of the extra stream packet information (extData), packet size, and actual data. The data is specified by the AUDIO_RETURN_AUDIO_PLAY_DATA command word in the VmiCmd enumeration and returned to developers through callbacks.
Example:
1 2 3 4 5 6 7 8 9 | VmiDataType module = DATA_AUDIO; VmiCmd cmd = AUDIO_RETURN_AUDIO_PLAY_DATA; uint8_t audioPlayData[240]; AudioData audioData; audioData.size = sizeof(audioPlayData); uint8_t *data = new uint8_t[sizeof(AudioData) + sizeof(audioPlayData)]; memcpy(data, &audioData, sizeof(AudioData)); memcpy(data + sizeof(AudioData), audioPlayData, sizeof(audioPlayData)) DataCallback(module, cmd, data, sizeof(AudioData) + audioData.size); |
Definition of AudioData
1 2 3 4 5 | struct AudioData { ExtDataAudio extData; // Extra information uint32_t size; // Size uint8_t data[0]; // Data } __attribute__((packed)); |
Definition of ExtDataAudio
1 2 3 4 5 6 7 8 | struct ExtDataAudio { uint32_t audioType = OPUS; // Encoding type: OPUS/PCM uint8_t channels = 2; // Number of audio channels. 1: MONO/2: STEREO (default) uint8_t audioBitDepth = 16; // Sampling depth in bits: 8 or 16 (default) uint32_t sampleRate = 48000; // Sampling rate in Hz: 48000 (default) uint32_t sampleInterval = 10; // Sampling interval in ms: 10 (default) int64_t timestamp; // Audio data timestamp in ms (UTC time) } __attribute__((packed)); |
Definition of AudioVolume
1 2 3 4 | struct AudioVolume { uint32_t leftVolume = 100; // Volume of the left channel uint32_t rightVolume = 100; // Volume of the right channel } __attribute__((packed)); |
Parent topic: Audio Output Development