Merge changes from topic "audio-v5"

* changes:
  libaudiohal: move to Stream Metadata to common
  libaudiohal: Introduce support HAL V5 identical to V4
gugelfrei
Kevin Rocard 6 years ago committed by Android (Google) Code Review
commit 6b6a0f0524

@ -15,10 +15,13 @@ cc_library_shared {
shared_libs: [
"android.hardware.audio.effect@2.0",
"android.hardware.audio.effect@4.0",
"android.hardware.audio.effect@5.0",
"android.hardware.audio@2.0",
"android.hardware.audio@4.0",
"android.hardware.audio@5.0",
"libaudiohal@2.0",
"libaudiohal@4.0",
"libaudiohal@5.0",
"libutils",
],

@ -16,6 +16,7 @@
#include <android/hardware/audio/2.0/IDevicesFactory.h>
#include <android/hardware/audio/4.0/IDevicesFactory.h>
#include <android/hardware/audio/5.0/IDevicesFactory.h>
#include <libaudiohal/FactoryHalHidl.h>
@ -23,6 +24,9 @@ namespace android {
// static
sp<DevicesFactoryHalInterface> DevicesFactoryHalInterface::create() {
if (hardware::audio::V5_0::IDevicesFactory::getService() != nullptr) {
return V5_0::createDevicesFactoryHal();
}
if (hardware::audio::V4_0::IDevicesFactory::getService() != nullptr) {
return V4_0::createDevicesFactoryHal();
}

@ -16,6 +16,7 @@
#include <android/hardware/audio/effect/2.0/IEffectsFactory.h>
#include <android/hardware/audio/effect/4.0/IEffectsFactory.h>
#include <android/hardware/audio/effect/5.0/IEffectsFactory.h>
#include <libaudiohal/FactoryHalHidl.h>
@ -23,6 +24,9 @@ namespace android {
// static
sp<EffectsFactoryHalInterface> EffectsFactoryHalInterface::create() {
if (hardware::audio::effect::V5_0::IEffectsFactory::getService() != nullptr) {
return V5_0::createEffectsFactoryHal();
}
if (hardware::audio::effect::V4_0::IEffectsFactory::getService() != nullptr) {
return V4_0::createEffectsFactoryHal();
}

@ -25,12 +25,6 @@ cc_defaults {
],
shared_libs: [
"android.hardware.audio.common-util",
"android.hardware.audio.common@2.0",
"android.hardware.audio.common@4.0",
"android.hardware.audio.effect@2.0",
"android.hardware.audio.effect@4.0",
"android.hardware.audio@2.0",
"android.hardware.audio@4.0",
"android.hidl.allocator@1.0",
"android.hidl.memory@1.0",
"libaudiohal_deathhandler",
@ -63,7 +57,10 @@ cc_library_shared {
name: "libaudiohal@2.0",
defaults: ["libaudiohal_default"],
shared_libs: [
"android.hardware.audio.common@2.0",
"android.hardware.audio.common@2.0-util",
"android.hardware.audio.effect@2.0",
"android.hardware.audio@2.0",
],
cflags: [
"-DMAJOR_VERSION=2",
@ -76,7 +73,10 @@ cc_library_shared {
name: "libaudiohal@4.0",
defaults: ["libaudiohal_default"],
shared_libs: [
"android.hardware.audio.common@4.0",
"android.hardware.audio.common@4.0-util",
"android.hardware.audio.effect@4.0",
"android.hardware.audio@4.0",
],
cflags: [
"-DMAJOR_VERSION=4",
@ -84,3 +84,19 @@ cc_library_shared {
"-include common/all-versions/VersionMacro.h",
]
}
cc_library_shared {
name: "libaudiohal@5.0",
defaults: ["libaudiohal_default"],
shared_libs: [
"android.hardware.audio.common@5.0",
"android.hardware.audio.common@5.0-util",
"android.hardware.audio.effect@5.0",
"android.hardware.audio@5.0",
],
cflags: [
"-DMAJOR_VERSION=5",
"-DMINOR_VERSION=0",
"-include common/all-versions/VersionMacro.h",
]
}

@ -24,7 +24,7 @@
using ::android::hardware::audio::CPP_VERSION::Result;
#if MAJOR_VERSION == 4
#if MAJOR_VERSION >= 4
using ::android::hardware::audio::CPP_VERSION::AudioMicrophoneChannelMapping;
using ::android::hardware::audio::CPP_VERSION::AudioMicrophoneDirectionality;
using ::android::hardware::audio::CPP_VERSION::AudioMicrophoneLocation;
@ -109,7 +109,7 @@ void ConversionHelperHidl::emitError(const char* funcName, const char* descripti
ALOGE("%s %p %s: %s (from rpc)", mClassName, this, funcName, description);
}
#if MAJOR_VERSION == 4
#if MAJOR_VERSION >= 4
// TODO: Use the same implementation in the hal when it moves to a util library.
static std::string deviceAddressToHal(const DeviceAddress& address) {
// HAL assumes that the address is NUL-terminated.

@ -82,7 +82,7 @@ class ConversionHelperHidl {
void emitError(const char* funcName, const char* description);
};
#if MAJOR_VERSION == 4
#if MAJOR_VERSION >= 4
using ::android::hardware::audio::CPP_VERSION::MicrophoneInfo;
void microphoneInfoToHal(const MicrophoneInfo& src,
audio_microphone_characteristic_t *pDst);

@ -51,6 +51,8 @@ using ::android::hardware::hidl_vec;
#if MAJOR_VERSION == 4
using ::android::hardware::audio::CPP_VERSION::SinkMetadata;
#elif MAJOR_VERSION == 5
using ::android::hardware::audio::common::CPP_VERSION::SinkMetadata;
#endif
namespace android {
@ -262,7 +264,7 @@ status_t DeviceHalHidl::openOutputStream(
hidlDevice,
hidlConfig,
EnumBitfield<AudioOutputFlag>(flags),
#if MAJOR_VERSION == 4
#if MAJOR_VERSION >= 4
{} /* metadata */,
#endif
[&](Result r, const sp<IStreamOut>& result, const AudioConfig& suggestedConfig) {
@ -292,7 +294,7 @@ status_t DeviceHalHidl::openInputStream(
Result retval = Result::NOT_INITIALIZED;
#if MAJOR_VERSION == 2
auto sourceMetadata = AudioSource(source);
#elif MAJOR_VERSION == 4
#elif MAJOR_VERSION >= 4
// TODO: correctly propagate the tracks sources and volume
// for now, only send the main source at 1dbfs
SinkMetadata sourceMetadata = {{{AudioSource(source), 1}}};
@ -374,7 +376,7 @@ status_t DeviceHalHidl::getMicrophones(
if (mDevice == 0) return NO_INIT;
return INVALID_OPERATION;
}
#elif MAJOR_VERSION == 4
#elif MAJOR_VERSION >= 4
status_t DeviceHalHidl::getMicrophones(std::vector<media::MicrophoneInfo> *microphonesInfo) {
if (mDevice == 0) return NO_INIT;
Result retval;

@ -190,7 +190,7 @@ status_t DeviceHalLocal::getMicrophones(
std::vector<media::MicrophoneInfo> *microphones __unused) {
return INVALID_OPERATION;
}
#elif MAJOR_VERSION == 4
#elif MAJOR_VERSION >= 4
status_t DeviceHalLocal::getMicrophones(std::vector<media::MicrophoneInfo> *microphones) {
if (mDev->get_microphones == NULL) return INVALID_OPERATION;
size_t actual_mics = AUDIO_MICROPHONE_MAX_COUNT;

@ -75,7 +75,7 @@ static IDevicesFactory::Device idFromHal(const char *name, status_t* status) {
*status = BAD_VALUE;
return {};
}
#elif MAJOR_VERSION == 4
#elif MAJOR_VERSION >= 4
static const char* idFromHal(const char *name, status_t* status) {
*status = OK;
return name;

@ -44,13 +44,23 @@ using ::android::hardware::Return;
using ::android::hardware::Void;
using ReadCommand = ::android::hardware::audio::CPP_VERSION::IStreamIn::ReadCommand;
#if MAJOR_VERSION == 4
#if MAJOR_VERSION >= 4
using ::android::hardware::audio::common::CPP_VERSION::AudioContentType;
using ::android::hardware::audio::common::CPP_VERSION::AudioSource;
using ::android::hardware::audio::common::CPP_VERSION::AudioUsage;
using ::android::hardware::audio::CPP_VERSION::MicrophoneInfo;
#endif
#if MAJOR_VERSION == 4
using ::android::hardware::audio::CPP_VERSION::PlaybackTrackMetadata;
using ::android::hardware::audio::CPP_VERSION::RecordTrackMetadata;
using HalSinkMetadata = ::android::hardware::audio::CPP_VERSION::SinkMetadata;
using HalSourceMetadata = ::android::hardware::audio::CPP_VERSION::SourceMetadata;
#elif MAJOR_VERSION == 5
using ::android::hardware::audio::common::CPP_VERSION::PlaybackTrackMetadata;
using ::android::hardware::audio::common::CPP_VERSION::RecordTrackMetadata;
using HalSinkMetadata = ::android::hardware::audio::common::CPP_VERSION::SinkMetadata;
using HalSourceMetadata = ::android::hardware::audio::common::CPP_VERSION::SourceMetadata;
#endif
namespace android {
@ -192,7 +202,7 @@ status_t StreamHalHidl::createMmapBuffer(int32_t minSizeFrames,
const native_handle *handle = hidlInfo.sharedMemory.handle();
if (handle->numFds > 0) {
info->shared_memory_fd = handle->data[0];
#if MAJOR_VERSION == 4
#if MAJOR_VERSION >= 4
info->flags = audio_mmap_buffer_flag(hidlInfo.flags);
#endif
info->buffer_size_frames = hidlInfo.bufferSizeFrames;
@ -357,7 +367,7 @@ status_t StreamOutHalHidl::selectPresentation(int presentationId, int programId)
parametersToHal(hidl_vec<ParameterValue>(parameters), &halParameters);
return setParameters(halParameters);
}
#elif MAJOR_VERSION == 4
#elif MAJOR_VERSION >= 4
status_t StreamOutHalHidl::selectPresentation(int presentationId, int programId) {
if (mStream == 0) return NO_INIT;
return processReturn("selectPresentation",
@ -603,7 +613,7 @@ status_t StreamOutHalHidl::updateSourceMetadata(const SourceMetadata& /* sourceM
// Audio HAL V2.0 does not support propagating source metadata
return INVALID_OPERATION;
}
#elif MAJOR_VERSION == 4
#elif MAJOR_VERSION >= 4
/** Transform a standard collection to an HIDL vector. */
template <class Values, class ElementConverter>
static auto transformToHidlVec(const Values& values, ElementConverter converter) {
@ -614,7 +624,7 @@ static auto transformToHidlVec(const Values& values, ElementConverter converter)
}
status_t StreamOutHalHidl::updateSourceMetadata(const SourceMetadata& sourceMetadata) {
hardware::audio::CPP_VERSION::SourceMetadata halMetadata = {
HalSourceMetadata halMetadata = {
.tracks = transformToHidlVec(sourceMetadata.tracks,
[](const playback_track_metadata& metadata) -> PlaybackTrackMetadata {
return {
@ -833,7 +843,7 @@ status_t StreamInHalHidl::updateSinkMetadata(const SinkMetadata& /* sinkMetadata
return INVALID_OPERATION;
}
#elif MAJOR_VERSION == 4
#elif MAJOR_VERSION >= 4
status_t StreamInHalHidl::getActiveMicrophones(
std::vector<media::MicrophoneInfo> *microphonesInfo) {
if (!mStream) return NO_INIT;
@ -853,7 +863,7 @@ status_t StreamInHalHidl::getActiveMicrophones(
}
status_t StreamInHalHidl::updateSinkMetadata(const SinkMetadata& sinkMetadata) {
hardware::audio::CPP_VERSION::SinkMetadata halMetadata = {
HalSinkMetadata halMetadata = {
.tracks = transformToHidlVec(sinkMetadata.tracks,
[](const record_track_metadata& metadata) -> RecordTrackMetadata {
return {

@ -354,7 +354,7 @@ status_t StreamInHalLocal::getActiveMicrophones(
std::vector<media::MicrophoneInfo> *microphones __unused) {
return INVALID_OPERATION;
}
#elif MAJOR_VERSION == 4
#elif MAJOR_VERSION >= 4
status_t StreamInHalLocal::getActiveMicrophones(std::vector<media::MicrophoneInfo> *microphones) {
if (mStream->get_active_microphones == NULL) return INVALID_OPERATION;
size_t actual_mics = AUDIO_MICROPHONE_MAX_COUNT;

@ -42,7 +42,7 @@ Return<Result> setParameters(T& object, hidl_vec<ParameterValue> /*context*/,
hidl_vec<ParameterValue> keys) {
return object->setParameters(keys);
}
#elif MAJOR_VERSION == 4
#elif MAJOR_VERSION >= 4
template <class T, class Callback>
Return<void> getParameters(T& object, hidl_vec<ParameterValue> context,
hidl_vec<hidl_string> keys, Callback callback) {

@ -35,6 +35,11 @@ sp<EffectsFactoryHalInterface> createEffectsFactoryHal();
sp<DevicesFactoryHalInterface> createDevicesFactoryHal();
} // namespace V4_0
namespace V5_0 {
sp<EffectsFactoryHalInterface> createEffectsFactoryHal();
sp<DevicesFactoryHalInterface> createDevicesFactoryHal();
} // namespace V5_0
} // namespace android
#endif // ANDROID_HARDWARE_FACTORY_HAL_HIDL_H

Loading…
Cancel
Save