77 AAudioStreamBuilder_setDeviceId(m_builder, deviceId);
80 AAudioStreamBuilder_setBufferCapacityInFrames(m_builder, bufferCapacity);
84 AAudioStreamBuilder_setSampleRate(m_builder, format.sampleRate());
85 AAudioStreamBuilder_setChannelCount(m_builder, format.channelCount());
86 AAudioStreamBuilder_setFormat(m_builder, aaudioFormat(format.sampleFormat()));
89 AAudioStreamBuilder_setDataCallback(m_builder, callback, userData);
90 AAudioStreamBuilder_setErrorCallback(m_builder, errorCallback, userData);
94 if (params.sharingMode != defaultParams.sharingMode)
95 AAudioStreamBuilder_setSharingMode(m_builder, params.sharingMode);
97 if (params.direction == AAUDIO_DIRECTION_OUTPUT) {
98 AAudioStreamBuilder_setPerformanceMode(m_builder, AAUDIO_PERFORMANCE_MODE_LOW_LATENCY);
100 if (params.outputUsage != defaultParams.outputUsage)
101 AAudioStreamBuilder_setUsage(m_builder, params.outputUsage);
102 if (params.outputContentType != defaultParams.outputContentType)
103 AAudioStreamBuilder_setContentType(m_builder, params.outputContentType);
105 AAudioStreamBuilder_setDirection(m_builder, params.direction);
106 if (params.inputPreset != defaultParams.inputPreset)
107 AAudioStreamBuilder_setInputPreset(m_builder, params.inputPreset);
114 auto result = AAudioStreamBuilder_openStream(builder.m_builder, &m_stream);
115 if (result != AAUDIO_OK) {
116 qCWarning(qLcAAudioStream)
117 <<
"Opening stream failed:" << AAudio_convertResultToText(result);
123 qCDebug(qLcAAudioStream) <<
"Stream opened:" << m_stream <<
"for device"
124 << AAudioStream_getDeviceId(m_stream);
127 if (builder.deviceId != AAUDIO_UNSPECIFIED
128 && AAudioStream_getDeviceId(m_stream) != builder.deviceId) {
129 qCWarning(qLcAAudioStream) <<
"Stream device not correct";
135 Q_ASSERT(AAudioStream_getSampleRate(m_stream) == builder.format.sampleRate()
136 && AAudioStream_getChannelCount(m_stream) == builder.format.channelCount()
137 && AAudioStream_getFormat(m_stream) == aaudioFormat(builder.format.sampleFormat()));
140 if ((builder.params.sharingMode == defaultParams.sharingMode
141 || AAudioStream_getSharingMode(m_stream) == builder.params.sharingMode)
142 && (builder.params.direction == defaultParams.direction
143 || AAudioStream_getDirection(m_stream) == builder.params.direction)
144 && (builder.params.outputUsage == defaultParams.outputUsage
145 || AAudioStream_getUsage(m_stream) == builder.params.outputUsage)
146 && (builder.params.outputContentType == defaultParams.outputContentType
147 || AAudioStream_getContentType(m_stream) == builder.params.outputContentType))
148 m_areStreamParametersRespected =
true;
150 if (builder.params.direction == AAUDIO_DIRECTION_OUTPUT
151 && AAudioStream_getPerformanceMode(m_stream) != AAUDIO_PERFORMANCE_MODE_LOW_LATENCY)
152 qCWarning(qLcAAudioStream) <<
"Low latency performance mode not set";
155 auto burstSize = AAudioStream_getFramesPerBurst(m_stream);
156 AAudioStream_setBufferSizeInFrames(m_stream, burstSize * bufferSizeInBursts);
219 result = AAudioStream_waitForStateChange(m_stream, inputState, ¤tState,