Add format conversion in AudioRecord.
In audio flinger, it is required that the client's format matches the
hardware format to get fast mode. However, format conversion is not a
time consuming operation. In that case, adding format conversion in
AudioRecord can help the client get fast mode if only format is
different from the hardware one. This can help improve latency.
Test: atest AudioRecordTest, capture audio in fast/non-fast mode
Bug: 79156275
Bug: 188843084
Change-Id: I1baaa9a6054bb84412c31a159c6d25ee498822cf
diff --git a/media/libaudioclient/IAudioFlinger.cpp b/media/libaudioclient/IAudioFlinger.cpp
index 5f12f71..6d2ec93 100644
--- a/media/libaudioclient/IAudioFlinger.cpp
+++ b/media/libaudioclient/IAudioFlinger.cpp
@@ -195,6 +195,8 @@
aidl.buffers = VALUE_OR_RETURN(legacy2aidl_NullableIMemory_SharedFileRegion(buffers));
aidl.portId = VALUE_OR_RETURN(legacy2aidl_audio_port_handle_t_int32_t(portId));
aidl.audioRecord = audioRecord;
+ aidl.serverConfig = VALUE_OR_RETURN(
+ legacy2aidl_audio_config_base_t_AudioConfigBase(serverConfig, true /*isInput*/));
return aidl;
}
@@ -215,6 +217,8 @@
legacy.buffers = VALUE_OR_RETURN(aidl2legacy_NullableSharedFileRegion_IMemory(aidl.buffers));
legacy.portId = VALUE_OR_RETURN(aidl2legacy_int32_t_audio_port_handle_t(aidl.portId));
legacy.audioRecord = aidl.audioRecord;
+ legacy.serverConfig = VALUE_OR_RETURN(
+ aidl2legacy_AudioConfigBase_audio_config_base_t(aidl.serverConfig, true /*isInput*/));
return legacy;
}