Convert AudioFlinger create* arguments to AIDL
This is a first step in AIDLizing IAudioFlinger, where we are
converting the in/out arguments from create{Track,Record} to stable
AIDL and add their respective conversion functions.
Bug: 160253486
Test: atest CtsMediaTestCases:Audio*
Manual verification of common playback and recording scenarios.
Change-Id: Iabb28472aedd90efbba673fb68574876528228df
diff --git a/media/libaudioclient/AudioTrack.cpp b/media/libaudioclient/AudioTrack.cpp
index 20feec0..14950a8 100644
--- a/media/libaudioclient/AudioTrack.cpp
+++ b/media/libaudioclient/AudioTrack.cpp
@@ -38,6 +38,15 @@
#include <media/MediaMetricsItem.h>
#include <media/TypeConverter.h>
+#define VALUE_OR_FATAL(result) \
+ ({ \
+ auto _tmp = (result); \
+ LOG_ALWAYS_FATAL_IF(!_tmp.ok(), \
+ "Failed result (%d)", \
+ _tmp.error()); \
+ std::move(_tmp.value()); \
+ })
+
#define WAIT_PERIOD_MS 10
#define WAIT_STREAM_END_TIMEOUT_SEC 120
static const int kMaxLoopCountNotifications = 32;
@@ -1597,11 +1606,13 @@
input.audioTrackCallback = mAudioTrackCallback;
input.opPackageName = mOpPackageName;
- IAudioFlinger::CreateTrackOutput output;
-
- sp<IAudioTrack> track = audioFlinger->createTrack(input,
- output,
+ media::CreateTrackResponse response;
+ sp<IAudioTrack> track = audioFlinger->createTrack(VALUE_OR_FATAL(input.toAidl()),
+ response,
&status);
+ IAudioFlinger::CreateTrackOutput output = VALUE_OR_FATAL(
+ IAudioFlinger::CreateTrackOutput::fromAidl(
+ response));
if (status != NO_ERROR || output.outputId == AUDIO_IO_HANDLE_NONE) {
ALOGE("%s(%d): AudioFlinger could not create track, status: %d output %d",