/* * Copyright (C) 2023 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #define LOG_TAG "AHAL_ModulePrimary" #include #include #include "core-impl/ModulePrimary.h" #include "core-impl/StreamPrimary.h" #include "core-impl/Telephony.h" using aidl::android::hardware::audio::common::SinkMetadata; using aidl::android::hardware::audio::common::SourceMetadata; using aidl::android::media::audio::common::AudioOffloadInfo; using aidl::android::media::audio::common::AudioPort; using aidl::android::media::audio::common::AudioPortConfig; using aidl::android::media::audio::common::MicrophoneInfo; namespace aidl::android::hardware::audio::core { ndk::ScopedAStatus ModulePrimary::getTelephony(std::shared_ptr* _aidl_return) { if (!mTelephony) { mTelephony = ndk::SharedRefBase::make(); } *_aidl_return = mTelephony.getInstance(); LOG(DEBUG) << __func__ << ": returning instance of ITelephony: " << _aidl_return->get()->asBinder().get(); return ndk::ScopedAStatus::ok(); } ndk::ScopedAStatus ModulePrimary::createInputStream(StreamContext&& context, const SinkMetadata& sinkMetadata, const std::vector& microphones, std::shared_ptr* result) { return createStreamInstance(result, std::move(context), sinkMetadata, microphones); } ndk::ScopedAStatus ModulePrimary::createOutputStream( StreamContext&& context, const SourceMetadata& sourceMetadata, const std::optional& offloadInfo, std::shared_ptr* result) { return createStreamInstance(result, std::move(context), sourceMetadata, offloadInfo); } int32_t ModulePrimary::getNominalLatencyMs(const AudioPortConfig&) { // 85 ms is chosen considering 4096 frames @ 48 kHz. This is the value which allows // the virtual Android device implementation to pass CTS. Hardware implementations // should have significantly lower latency. static constexpr int32_t kLatencyMs = 85; return kLatencyMs; } } // namespace aidl::android::hardware::audio::core