Lines Matching refs:patch
70 status_t AudioFlinger::createAudioPatch(const struct audio_patch *patch, in createAudioPatch() argument
75 return mPatchPanel->createAudioPatch(patch, handle); in createAudioPatch()
139 status_t AudioFlinger::PatchPanel::createAudioPatch(const struct audio_patch *patch, in createAudioPatch() argument
145 if (handle == NULL || patch == NULL) { in createAudioPatch()
149 patch->num_sources, patch->num_sinks, *handle); in createAudioPatch()
154 if (patch->num_sources == 0 || patch->num_sources > AUDIO_PATCH_PORTS_MAX || in createAudioPatch()
155 (patch->num_sinks == 0 && patch->num_sources != 2) || in createAudioPatch()
156 patch->num_sinks > AUDIO_PATCH_PORTS_MAX) { in createAudioPatch()
161 if (patch->num_sources > 2) { in createAudioPatch()
186 ((patch->sources[0].type != AUDIO_PORT_TYPE_DEVICE) || in createAudioPatch()
188 patch->sources[0].ext.device.hw_module))) { in createAudioPatch()
190 } else if ((patch->num_sinks == 0) || in createAudioPatch()
192 ((patch->sinks[0].type != AUDIO_PORT_TYPE_DEVICE) || in createAudioPatch()
194 patch->sinks[0].ext.device.hw_module)))) { in createAudioPatch()
218 Patch *newPatch = new Patch(patch); in createAudioPatch()
220 switch (patch->sources[0].type) { in createAudioPatch()
222 audio_module_handle_t srcModule = patch->sources[0].ext.device.hw_module; in createAudioPatch()
230 for (unsigned int i = 0; i < patch->num_sinks; i++) { in createAudioPatch()
232 if ((patch->sinks[i].type == AUDIO_PORT_TYPE_MIX || in createAudioPatch()
233 patch->sinks[i].ext.mix.hw_module != srcModule) && in createAudioPatch()
234 patch->num_sinks > 1) { in createAudioPatch()
239 if (patch->sinks[i].type != patch->sinks[0].type) { in createAudioPatch()
251 if ((patch->num_sources == 2) || in createAudioPatch()
252 ((patch->sinks[0].type == AUDIO_PORT_TYPE_DEVICE) && in createAudioPatch()
253 ((patch->sinks[0].ext.device.hw_module != srcModule) || in createAudioPatch()
255 if (patch->num_sources == 2) { in createAudioPatch()
256 if (patch->sources[1].type != AUDIO_PORT_TYPE_MIX || in createAudioPatch()
257 (patch->num_sinks != 0 && patch->sinks[0].ext.device.hw_module != in createAudioPatch()
258 patch->sources[1].ext.mix.hw_module)) { in createAudioPatch()
265 audioflinger->checkPlaybackThread_l(patch->sources[1].ext.mix.handle); in createAudioPatch()
274 audio_devices_t device = patch->sinks[0].ext.device.type; in createAudioPatch()
275 String8 address = String8(patch->sinks[0].ext.device.address); in createAudioPatch()
278 patch->sinks[0].ext.device.hw_module, in createAudioPatch()
292 audio_devices_t device = patch->sources[0].ext.device.type; in createAudioPatch()
293 String8 address = String8(patch->sources[0].ext.device.address); in createAudioPatch()
297 if (patch->sources[0].config_mask & AUDIO_PORT_CONFIG_SAMPLE_RATE) { in createAudioPatch()
298 config.sample_rate = patch->sources[0].sample_rate; in createAudioPatch()
302 if (patch->sources[0].config_mask & AUDIO_PORT_CONFIG_CHANNEL_MASK) { in createAudioPatch()
303 config.channel_mask = patch->sources[0].channel_mask; in createAudioPatch()
308 if (patch->sources[0].config_mask & AUDIO_PORT_CONFIG_FORMAT) { in createAudioPatch()
309 config.format = patch->sources[0].format; in createAudioPatch()
328 status = createPatchConnections(newPatch, patch); in createAudioPatch()
333 if (patch->sinks[0].type == AUDIO_PORT_TYPE_MIX) { in createAudioPatch()
335 patch->sinks[0].ext.mix.handle); in createAudioPatch()
337 thread = audioflinger->checkMmapThread_l(patch->sinks[0].ext.mix.handle); in createAudioPatch()
340 patch->sinks[0].ext.mix.handle); in createAudioPatch()
345 status = thread->sendCreateAudioPatchConfigEvent(patch, &halHandle); in createAudioPatch()
348 status = hwDevice->createAudioPatch(patch->num_sources, in createAudioPatch()
349 patch->sources, in createAudioPatch()
350 patch->num_sinks, in createAudioPatch()
351 patch->sinks, in createAudioPatch()
358 audio_module_handle_t srcModule = patch->sources[0].ext.mix.hw_module; in createAudioPatch()
367 for (unsigned int i = 0; i < patch->num_sinks; i++) { in createAudioPatch()
368 if (patch->sinks[i].type != AUDIO_PORT_TYPE_DEVICE) { in createAudioPatch()
370 patch->sinks[i].type); in createAudioPatch()
375 if (patch->sinks[i].ext.device.hw_module != srcModule) { in createAudioPatch()
379 type |= patch->sinks[i].ext.device.type; in createAudioPatch()
382 audioflinger->checkPlaybackThread_l(patch->sources[0].ext.mix.handle); in createAudioPatch()
384 thread = audioflinger->checkMmapThread_l(patch->sources[0].ext.mix.handle); in createAudioPatch()
387 patch->sources[0].ext.mix.handle); in createAudioPatch()
399 status = thread->sendCreateAudioPatchConfigEvent(patch, &halHandle); in createAudioPatch()
420 status_t AudioFlinger::PatchPanel::createPatchConnections(Patch *patch, in createPatchConnections() argument
429 patch->mRecordThread->getAudioPortConfig(&subPatch.sinks[0]); in createPatchConnections()
432 status_t status = createAudioPatch(&subPatch, &patch->mRecordPatchHandle); in createPatchConnections()
434 patch->mRecordPatchHandle = AUDIO_PATCH_HANDLE_NONE; in createPatchConnections()
440 patch->mPlaybackThread->getAudioPortConfig(&subPatch.sources[0]); in createPatchConnections()
442 status = createAudioPatch(&subPatch, &patch->mPlaybackPatchHandle); in createPatchConnections()
444 patch->mPlaybackPatchHandle = AUDIO_PATCH_HANDLE_NONE; in createPatchConnections()
448 patch->mPlaybackPatchHandle = AUDIO_PATCH_HANDLE_NONE; in createPatchConnections()
452 size_t playbackFrameCount = patch->mPlaybackThread->frameCount(); in createPatchConnections()
454 size_t recordFramecount = patch->mRecordThread->frameCount(); in createPatchConnections()
464 uint32_t channelCount = patch->mPlaybackThread->channelCount(); in createPatchConnections()
466 audio_channel_mask_t outChannelMask = patch->mPlaybackThread->channelMask(); in createPatchConnections()
467 uint32_t sampleRate = patch->mPlaybackThread->sampleRate(); in createPatchConnections()
468 audio_format_t format = patch->mPlaybackThread->format(); in createPatchConnections()
470 patch->mPatchRecord = new RecordThread::PatchRecord( in createPatchConnections()
471 patch->mRecordThread.get(), in createPatchConnections()
478 if (patch->mPatchRecord == 0) { in createPatchConnections()
481 status = patch->mPatchRecord->initCheck(); in createPatchConnections()
485 patch->mRecordThread->addPatchRecord(patch->mPatchRecord); in createPatchConnections()
489 patch->mPatchTrack = new PlaybackThread::PatchTrack( in createPatchConnections()
490 patch->mPlaybackThread.get(), in createPatchConnections()
496 patch->mPatchRecord->buffer(), in createPatchConnections()
498 if (patch->mPatchTrack == 0) { in createPatchConnections()
501 status = patch->mPatchTrack->initCheck(); in createPatchConnections()
505 patch->mPlaybackThread->addPatchTrack(patch->mPatchTrack); in createPatchConnections()
508 patch->mPatchRecord->setPeerProxy(patch->mPatchTrack.get()); in createPatchConnections()
509 patch->mPatchTrack->setPeerProxy(patch->mPatchRecord.get()); in createPatchConnections()
512 patch->mPatchRecord->start(AudioSystem::SYNC_EVENT_NONE, AUDIO_SESSION_NONE); in createPatchConnections()
513 patch->mPatchTrack->start(); in createPatchConnections()
518 void AudioFlinger::PatchPanel::clearPatchConnections(Patch *patch) in clearPatchConnections() argument
526 patch->mRecordPatchHandle, patch->mPlaybackPatchHandle); in clearPatchConnections()
528 if (patch->mPatchRecord != 0) { in clearPatchConnections()
529 patch->mPatchRecord->stop(); in clearPatchConnections()
531 if (patch->mPatchTrack != 0) { in clearPatchConnections()
532 patch->mPatchTrack->stop(); in clearPatchConnections()
534 if (patch->mRecordPatchHandle != AUDIO_PATCH_HANDLE_NONE) { in clearPatchConnections()
535 releaseAudioPatch(patch->mRecordPatchHandle); in clearPatchConnections()
536 patch->mRecordPatchHandle = AUDIO_PATCH_HANDLE_NONE; in clearPatchConnections()
538 if (patch->mPlaybackPatchHandle != AUDIO_PATCH_HANDLE_NONE) { in clearPatchConnections()
539 releaseAudioPatch(patch->mPlaybackPatchHandle); in clearPatchConnections()
540 patch->mPlaybackPatchHandle = AUDIO_PATCH_HANDLE_NONE; in clearPatchConnections()
542 if (patch->mRecordThread != 0) { in clearPatchConnections()
543 if (patch->mPatchRecord != 0) { in clearPatchConnections()
544 patch->mRecordThread->deletePatchRecord(patch->mPatchRecord); in clearPatchConnections()
546 audioflinger->closeInputInternal_l(patch->mRecordThread); in clearPatchConnections()
548 if (patch->mPlaybackThread != 0) { in clearPatchConnections()
549 if (patch->mPatchTrack != 0) { in clearPatchConnections()
550 patch->mPlaybackThread->deletePatchTrack(patch->mPatchTrack); in clearPatchConnections()
553 if (patch->mAudioPatch.num_sources != 2) { in clearPatchConnections()
554 audioflinger->closeOutputInternal_l(patch->mPlaybackThread); in clearPatchConnections()
557 if (patch->mRecordThread != 0) { in clearPatchConnections()
558 if (patch->mPatchRecord != 0) { in clearPatchConnections()
559 patch->mPatchRecord.clear(); in clearPatchConnections()
561 patch->mRecordThread.clear(); in clearPatchConnections()
563 if (patch->mPlaybackThread != 0) { in clearPatchConnections()
564 if (patch->mPatchTrack != 0) { in clearPatchConnections()
565 patch->mPatchTrack.clear(); in clearPatchConnections()
567 patch->mPlaybackThread.clear(); in clearPatchConnections()
595 struct audio_patch *patch = &removedPatch->mAudioPatch; in releaseAudioPatch() local
597 switch (patch->sources[0].type) { in releaseAudioPatch()
599 audio_module_handle_t srcModule = patch->sources[0].ext.device.hw_module; in releaseAudioPatch()
613 if (patch->sinks[0].type == AUDIO_PORT_TYPE_MIX) { in releaseAudioPatch()
615 patch->sinks[0].ext.mix.handle); in releaseAudioPatch()
617 thread = audioflinger->checkMmapThread_l(patch->sinks[0].ext.mix.handle); in releaseAudioPatch()
620 patch->sinks[0].ext.mix.handle); in releaseAudioPatch()
633 audio_module_handle_t srcModule = patch->sources[0].ext.mix.hw_module; in releaseAudioPatch()
641 audioflinger->checkPlaybackThread_l(patch->sources[0].ext.mix.handle); in releaseAudioPatch()
643 thread = audioflinger->checkMmapThread_l(patch->sources[0].ext.mix.handle); in releaseAudioPatch()
646 patch->sources[0].ext.mix.handle); in releaseAudioPatch()