39 case QAudioFormat::UInt8:
40 return AUDIOSTREAM_SAMPLE_U8;
41 case QAudioFormat::Int16:
42 return AUDIOSTREAM_SAMPLE_S16LE;
43 case QAudioFormat::Int32:
44 return AUDIOSTREAM_SAMPLE_S32LE;
45 case QAudioFormat::Float:
46 return AUDIOSTREAM_SAMPLE_F32LE;
47 case QAudioFormat::Unknown:
48 case QAudioFormat::NSampleFormats:
51 return AUDIOSTREAM_SAMPLE_S16LE;
89 params.direction = direction;
90 QMutexLocker lock{ &g_streamBuilderMutex };
92 if (result != AUDIOSTREAM_SUCCESS)
93 qCWarning(qLcOHAudioStream)
94 <<
"Failed to create stream builder:" << result;
109 OH_AudioStreamBuilder_SetSamplingRate(m_builder, format.sampleRate());
110 OH_AudioStreamBuilder_SetChannelCount(m_builder, format.channelCount());
111 OH_AudioStreamBuilder_SetSampleFormat(m_builder, toOHSampleFormat(format.sampleFormat()));
112 OH_AudioStreamBuilder_SetEncodingType(m_builder, AUDIOSTREAM_ENCODING_TYPE_RAW);
113 OH_AudioStreamBuilder_SetLatencyMode(m_builder, params.latencyMode);
119 if (params.direction == AUDIOSTREAM_TYPE_RENDERER) {
120 OH_AudioStreamBuilder_SetRendererInfo(m_builder, params.outputUsage);
122 OH_AudioStreamBuilder_SetRendererWriteDataCallback(m_builder, writeCallback,
126 OH_AudioStreamBuilder_SetCapturerInfo(m_builder, params.inputSourceType);
128 OH_AudioCapturer_Callbacks callbacks{};
129 callbacks.OH_AudioCapturer_OnReadData = readCallback;
130 OH_AudioStreamBuilder_SetCapturerCallback(m_builder, callbacks,
userData);
138 if (!builder.m_builder) {
139 qCWarning(qLcOHAudioStream) <<
"Builder is invalid";
145 QMutexLocker lock{ &g_streamBuilderMutex };
146 if (m_streamType == AUDIOSTREAM_TYPE_RENDERER) {
147 result = OH_AudioStreamBuilder_GenerateRenderer(builder.m_builder, &m_renderer);
149 result = OH_AudioStreamBuilder_GenerateCapturer(builder.m_builder, &m_capturer);
153 if (result != AUDIOSTREAM_SUCCESS) {
154 qCWarning(qLcOHAudioStream)
155 <<
"Failed to generate stream:" << result;
159 m_areStreamParametersRespected =
true;
171 if (m_streamType == AUDIOSTREAM_TYPE_RENDERER)
172 result = OH_AudioRenderer_Start(m_renderer);
174 result = OH_AudioCapturer_Start(m_capturer);
176 if (result != AUDIOSTREAM_SUCCESS)
177 qCWarning(qLcOHAudioStream) <<
"Failed to start stream:" << result;
179 return result == AUDIOSTREAM_SUCCESS;
193 if (m_streamType == AUDIOSTREAM_TYPE_RENDERER)
194 result = OH_AudioRenderer_Pause(m_renderer);
196 result = OH_AudioCapturer_Pause(m_capturer);
197 if (result != AUDIOSTREAM_SUCCESS)
198 qCWarning(qLcOHAudioStream)
199 <<
"Failed to pause stream:" << result;