Merge "libaaudio: API changes requested by council"
diff --git a/media/libaaudio/examples/write_sine/src/write_sine.cpp b/media/libaaudio/examples/write_sine/src/write_sine.cpp
index 9e6268a..511fe94 100644
--- a/media/libaaudio/examples/write_sine/src/write_sine.cpp
+++ b/media/libaaudio/examples/write_sine/src/write_sine.cpp
@@ -59,8 +59,8 @@
     const aaudio_sharing_mode_t requestedSharingMode = AAUDIO_SHARING_MODE_EXCLUSIVE;
     aaudio_sharing_mode_t actualSharingMode = AAUDIO_SHARING_MODE_SHARED;
 
-    AAudioStreamBuilder aaudioBuilder = nullptr;
-    AAudioStream aaudioStream = nullptr;
+    AAudioStreamBuilder *aaudioBuilder = nullptr;
+    AAudioStream *aaudioStream = nullptr;
     aaudio_stream_state_t state = AAUDIO_STREAM_STATE_UNINITIALIZED;
     int32_t framesPerBurst = 0;
     int32_t framesToPlay = 0;
diff --git a/media/libaaudio/examples/write_sine/src/write_sine_threaded.cpp b/media/libaaudio/examples/write_sine/src/write_sine_threaded.cpp
index cc7ba5a..40e5016 100644
--- a/media/libaaudio/examples/write_sine/src/write_sine_threaded.cpp
+++ b/media/libaaudio/examples/write_sine/src/write_sine_threaded.cpp
@@ -217,8 +217,8 @@
     }
 
 private:
-    AAudioStreamBuilder   mBuilder = nullptr;
-    AAudioStream          mStream = nullptr;
+    AAudioStreamBuilder  *mBuilder = nullptr;
+    AAudioStream         *mStream = nullptr;
     float                *mOutputBuffer = nullptr;
     int16_t              *mConversionBuffer = nullptr;
 
diff --git a/media/libaaudio/include/aaudio/AAudio.h b/media/libaaudio/include/aaudio/AAudio.h
index 43b5205..921248a 100644
--- a/media/libaaudio/include/aaudio/AAudio.h
+++ b/media/libaaudio/include/aaudio/AAudio.h
@@ -27,11 +27,8 @@
 extern "C" {
 #endif
 
-typedef struct AAudioStreamStruct * AAudioStream;
-typedef struct AAudioStreamBuilderStruct *  AAudioStreamBuilder;
-
-#define AAUDIO_STREAM_NONE         ((AAudioStream)nullptr)
-#define AAUDIO_STREAM_BUILDER_NONE ((AAudioStreamBuilder)nullptr)
+typedef struct AAudioStreamStruct         AAudioStream;
+typedef struct AAudioStreamBuilderStruct  AAudioStreamBuilder;
 
 #ifndef AAUDIO_API
 #define AAUDIO_API /* export this symbol */
@@ -77,7 +74,7 @@
  *
  * AAudioStreamBuilder_delete() must be called when you are done using the builder.
  */
-AAUDIO_API aaudio_result_t AAudio_createStreamBuilder(AAudioStreamBuilder *builder);
+AAUDIO_API aaudio_result_t AAudio_createStreamBuilder(AAudioStreamBuilder** builder);
 
 /**
  * Request an audio device identified device using an ID.
@@ -88,7 +85,7 @@
  * @param builder reference provided by AAudio_createStreamBuilder()
  * @param deviceId device identifier or AAUDIO_DEVICE_UNSPECIFIED
  */
-AAUDIO_API void AAudioStreamBuilder_setDeviceId(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setDeviceId(AAudioStreamBuilder* builder,
                                                      int32_t deviceId);
 
 /**
@@ -103,7 +100,7 @@
  * Default is AAUDIO_UNSPECIFIED.
 
  */
-AAUDIO_API void AAudioStreamBuilder_setSampleRate(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setSampleRate(AAudioStreamBuilder* builder,
                                                        int32_t sampleRate);
 
 /**
@@ -115,14 +112,14 @@
  *
  * Note, this quantity is sometimes referred to as "channel count".
  */
-AAUDIO_API void AAudioStreamBuilder_setSamplesPerFrame(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setSamplesPerFrame(AAudioStreamBuilder* builder,
                                                    int32_t samplesPerFrame);
 
 /**
  * Request a sample data format, for example AAUDIO_FORMAT_PCM_I16.
  * The application should query for the actual format after the stream is opened.
  */
-AAUDIO_API void AAudioStreamBuilder_setFormat(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setFormat(AAudioStreamBuilder* builder,
                                                    aaudio_audio_format_t format);
 
 /**
@@ -133,7 +130,7 @@
  * @param builder reference provided by AAudio_createStreamBuilder()
  * @param sharingMode AAUDIO_SHARING_MODE_LEGACY or AAUDIO_SHARING_MODE_EXCLUSIVE
  */
-AAUDIO_API void AAudioStreamBuilder_setSharingMode(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setSharingMode(AAudioStreamBuilder* builder,
                                                         aaudio_sharing_mode_t sharingMode);
 
 /**
@@ -142,7 +139,7 @@
  * @param builder reference provided by AAudio_createStreamBuilder()
  * @param direction AAUDIO_DIRECTION_OUTPUT or AAUDIO_DIRECTION_INPUT
  */
-AAUDIO_API void AAudioStreamBuilder_setDirection(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setDirection(AAudioStreamBuilder* builder,
                                                             aaudio_direction_t direction);
 
 /**
@@ -154,7 +151,7 @@
  * @param builder reference provided by AAudio_createStreamBuilder()
  * @param frames the desired buffer capacity in frames or AAUDIO_UNSPECIFIED
  */
-AAUDIO_API void AAudioStreamBuilder_setBufferCapacityInFrames(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setBufferCapacityInFrames(AAudioStreamBuilder* builder,
                                                                  int32_t frames);
 
 /**
@@ -167,8 +164,8 @@
  * @param stream pointer to a variable to receive the new stream reference
  * @return AAUDIO_OK or a negative error.
  */
-AAUDIO_API aaudio_result_t  AAudioStreamBuilder_openStream(AAudioStreamBuilder builder,
-                                                     AAudioStream *stream);
+AAUDIO_API aaudio_result_t  AAudioStreamBuilder_openStream(AAudioStreamBuilder* builder,
+                                                     AAudioStream** stream);
 
 /**
  * Delete the resources associated with the StreamBuilder.
@@ -176,7 +173,7 @@
  * @param builder reference provided by AAudio_createStreamBuilder()
  * @return AAUDIO_OK or a negative error.
  */
-AAUDIO_API aaudio_result_t  AAudioStreamBuilder_delete(AAudioStreamBuilder builder);
+AAUDIO_API aaudio_result_t  AAudioStreamBuilder_delete(AAudioStreamBuilder* builder);
 
 // ============================================================
 // Stream Control
@@ -188,7 +185,7 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return AAUDIO_OK or a negative error.
  */
-AAUDIO_API aaudio_result_t  AAudioStream_close(AAudioStream stream);
+AAUDIO_API aaudio_result_t  AAudioStream_close(AAudioStream* stream);
 
 /**
  * Asynchronously request to start playing the stream. For output streams, one should
@@ -199,7 +196,7 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return AAUDIO_OK or a negative error.
  */
-AAUDIO_API aaudio_result_t  AAudioStream_requestStart(AAudioStream stream);
+AAUDIO_API aaudio_result_t  AAudioStream_requestStart(AAudioStream* stream);
 
 /**
  * Asynchronous request for the stream to pause.
@@ -210,7 +207,7 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return AAUDIO_OK or a negative error.
  */
-AAUDIO_API aaudio_result_t  AAudioStream_requestPause(AAudioStream stream);
+AAUDIO_API aaudio_result_t  AAudioStream_requestPause(AAudioStream* stream);
 
 /**
  * Asynchronous request for the stream to flush.
@@ -222,7 +219,7 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return AAUDIO_OK or a negative error.
  */
-AAUDIO_API aaudio_result_t  AAudioStream_requestFlush(AAudioStream stream);
+AAUDIO_API aaudio_result_t  AAudioStream_requestFlush(AAudioStream* stream);
 
 /**
  * Asynchronous request for the stream to stop.
@@ -232,7 +229,7 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return AAUDIO_OK or a negative error.
  */
-AAUDIO_API aaudio_result_t  AAudioStream_requestStop(AAudioStream stream);
+AAUDIO_API aaudio_result_t  AAudioStream_requestStop(AAudioStream* stream);
 
 /**
  * Query the current state of the client, eg. AAUDIO_STREAM_STATE_PAUSING
@@ -245,7 +242,7 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @param state pointer to a variable that will be set to the current state
  */
-AAUDIO_API aaudio_stream_state_t AAudioStream_getState(AAudioStream stream);
+AAUDIO_API aaudio_stream_state_t AAudioStream_getState(AAudioStream* stream);
 
 /**
  * Wait until the current state no longer matches the input state.
@@ -267,7 +264,7 @@
  * @param timeoutNanoseconds Maximum number of nanoseconds to wait for completion.
  * @return AAUDIO_OK or a negative error.
  */
-AAUDIO_API aaudio_result_t AAudioStream_waitForStateChange(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_waitForStateChange(AAudioStream* stream,
                                             aaudio_stream_state_t inputState,
                                             aaudio_stream_state_t *nextState,
                                             int64_t timeoutNanoseconds);
@@ -294,7 +291,7 @@
  * @param timeoutNanoseconds Maximum number of nanoseconds to wait for completion.
  * @return The number of frames actually read or a negative error.
  */
-AAUDIO_API aaudio_result_t AAudioStream_read(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_read(AAudioStream* stream,
                                void *buffer,
                                int32_t numFrames,
                                int64_t timeoutNanoseconds);
@@ -317,7 +314,7 @@
  * @param timeoutNanoseconds Maximum number of nanoseconds to wait for completion.
  * @return The number of frames actually written or a negative error.
  */
-AAUDIO_API aaudio_result_t AAudioStream_write(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_write(AAudioStream* stream,
                                const void *buffer,
                                int32_t numFrames,
                                int64_t timeoutNanoseconds);
@@ -327,7 +324,7 @@
 // High priority audio threads
 // ============================================================
 
-typedef void *(aaudio_audio_thread_proc_t)(void *);
+typedef void *(*aaudio_audio_thread_proc_t)(void *);
 
 /**
  * Create a thread associated with a stream. The thread has special properties for
@@ -348,9 +345,9 @@
  * @param arg an argument that will be passed to your thread entry point
  * @return AAUDIO_OK or a negative error.
  */
-AAUDIO_API aaudio_result_t AAudioStream_createThread(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_createThread(AAudioStream* stream,
                                      int64_t periodNanoseconds,
-                                     aaudio_audio_thread_proc_t *threadProc,
+                                     aaudio_audio_thread_proc_t threadProc,
                                      void *arg);
 
 /**
@@ -361,7 +358,7 @@
  * @param timeoutNanoseconds Maximum number of nanoseconds to wait for completion.
  * @return AAUDIO_OK or a negative error.
  */
-AAUDIO_API aaudio_result_t AAudioStream_joinThread(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_joinThread(AAudioStream* stream,
                                    void **returnArg,
                                    int64_t timeoutNanoseconds);
 
@@ -385,7 +382,7 @@
  * @param requestedFrames requested number of frames that can be filled without blocking
  * @return actual buffer size in frames or a negative error
  */
-AAUDIO_API aaudio_result_t AAudioStream_setBufferSizeInFrames(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_setBufferSizeInFrames(AAudioStream* stream,
                                                       int32_t requestedFrames);
 
 /**
@@ -394,7 +391,7 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return buffer size in frames.
  */
-AAUDIO_API int32_t AAudioStream_getBufferSizeInFrames(AAudioStream stream);
+AAUDIO_API int32_t AAudioStream_getBufferSizeInFrames(AAudioStream* stream);
 
 /**
  * Query the number of frames that the application should read or write at
@@ -409,7 +406,7 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return burst size
  */
-AAUDIO_API int32_t AAudioStream_getFramesPerBurst(AAudioStream stream);
+AAUDIO_API int32_t AAudioStream_getFramesPerBurst(AAudioStream* stream);
 
 /**
  * Query maximum buffer capacity in frames.
@@ -417,7 +414,7 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return  the buffer capacity in frames
  */
-AAUDIO_API int32_t AAudioStream_getBufferCapacityInFrames(AAudioStream stream);
+AAUDIO_API int32_t AAudioStream_getBufferCapacityInFrames(AAudioStream* stream);
 
 /**
  * An XRun is an Underrun or an Overrun.
@@ -431,13 +428,13 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return the underrun or overrun count
  */
-AAUDIO_API int32_t AAudioStream_getXRunCount(AAudioStream stream);
+AAUDIO_API int32_t AAudioStream_getXRunCount(AAudioStream* stream);
 
 /**
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return actual sample rate
  */
-AAUDIO_API int32_t AAudioStream_getSampleRate(AAudioStream stream);
+AAUDIO_API int32_t AAudioStream_getSampleRate(AAudioStream* stream);
 
 /**
  * The samplesPerFrame is also known as channelCount.
@@ -445,34 +442,32 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return actual samples per frame
  */
-AAUDIO_API int32_t AAudioStream_getSamplesPerFrame(AAudioStream stream);
+AAUDIO_API int32_t AAudioStream_getSamplesPerFrame(AAudioStream* stream);
 
 /**
  * @param stream reference provided by AAudioStreamBuilder_openStream()
- * @param deviceId pointer to variable to receive the actual device ID
- * @return AAUDIO_OK or a negative error.
+ * @return actual device ID
  */
-AAUDIO_API int32_t AAudioStream_getDeviceId(AAudioStream stream,
-                                                    int32_t *deviceId);
+AAUDIO_API int32_t AAudioStream_getDeviceId(AAudioStream* stream);
 
 /**
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return actual data format
  */
-AAUDIO_API aaudio_audio_format_t AAudioStream_getFormat(AAudioStream stream);
+AAUDIO_API aaudio_audio_format_t AAudioStream_getFormat(AAudioStream* stream);
 
 /**
  * Provide actual sharing mode.
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return  actual sharing mode
  */
-AAUDIO_API aaudio_sharing_mode_t AAudioStream_getSharingMode(AAudioStream stream);
+AAUDIO_API aaudio_sharing_mode_t AAudioStream_getSharingMode(AAudioStream* stream);
 
 /**
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return direction
  */
-AAUDIO_API aaudio_direction_t AAudioStream_getDirection(AAudioStream stream);
+AAUDIO_API aaudio_direction_t AAudioStream_getDirection(AAudioStream* stream);
 
 /**
  * Passes back the number of frames that have been written since the stream was created.
@@ -484,7 +479,7 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return frames written
  */
-AAUDIO_API int64_t AAudioStream_getFramesWritten(AAudioStream stream);
+AAUDIO_API int64_t AAudioStream_getFramesWritten(AAudioStream* stream);
 
 /**
  * Passes back the number of frames that have been read since the stream was created.
@@ -496,7 +491,7 @@
  * @param stream reference provided by AAudioStreamBuilder_openStream()
  * @return frames read
  */
-AAUDIO_API int64_t AAudioStream_getFramesRead(AAudioStream stream);
+AAUDIO_API int64_t AAudioStream_getFramesRead(AAudioStream* stream);
 
 /**
  * Passes back the time at which a particular frame was presented.
@@ -520,7 +515,7 @@
  * @param timeNanoseconds pointer to a variable to receive the time
  * @return AAUDIO_OK or a negative error
  */
-AAUDIO_API aaudio_result_t AAudioStream_getTimestamp(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_getTimestamp(AAudioStream* stream,
                                       clockid_t clockid,
                                       int64_t *framePosition,
                                       int64_t *timeNanoseconds);
diff --git a/media/libaaudio/src/core/AAudioAudio.cpp b/media/libaaudio/src/core/AAudioAudio.cpp
index 1208f66..52bad70 100644
--- a/media/libaaudio/src/core/AAudioAudio.cpp
+++ b/media/libaaudio/src/core/AAudioAudio.cpp
@@ -90,49 +90,49 @@
 
 #undef AAUDIO_CASE_ENUM
 
-static AudioStream *convertAAudioStreamToAudioStream(AAudioStream stream)
+static AudioStream *convertAAudioStreamToAudioStream(AAudioStream* stream)
 {
-    return (AudioStream *) stream;
+    return (AudioStream*) stream;
 }
 
-static AudioStreamBuilder *convertAAudioBuilderToStreamBuilder(AAudioStreamBuilder builder)
+static AudioStreamBuilder *convertAAudioBuilderToStreamBuilder(AAudioStreamBuilder* builder)
 {
-    return (AudioStreamBuilder *) builder;
+    return (AudioStreamBuilder*) builder;
 }
 
-AAUDIO_API aaudio_result_t AAudio_createStreamBuilder(AAudioStreamBuilder *builder)
+AAUDIO_API aaudio_result_t AAudio_createStreamBuilder(AAudioStreamBuilder** builder)
 {
     ALOGD("AAudio_createStreamBuilder(): check sHandleTracker.isInitialized ()");
     AudioStreamBuilder *audioStreamBuilder =  new AudioStreamBuilder();
     if (audioStreamBuilder == nullptr) {
         return AAUDIO_ERROR_NO_MEMORY;
     }
-    *builder = (AAudioStreamBuilder) audioStreamBuilder;
+    *builder = (AAudioStreamBuilder*) audioStreamBuilder;
     return AAUDIO_OK;
 }
 
-AAUDIO_API void AAudioStreamBuilder_setDeviceId(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setDeviceId(AAudioStreamBuilder* builder,
                                                      int32_t deviceId)
 {
     AudioStreamBuilder *streamBuilder = convertAAudioBuilderToStreamBuilder(builder);;
     streamBuilder->setDeviceId(deviceId);
 }
 
-AAUDIO_API void AAudioStreamBuilder_setSampleRate(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setSampleRate(AAudioStreamBuilder* builder,
                                               int32_t sampleRate)
 {
     AudioStreamBuilder *streamBuilder = convertAAudioBuilderToStreamBuilder(builder);;
     streamBuilder->setSampleRate(sampleRate);
 }
 
-AAUDIO_API void AAudioStreamBuilder_setSamplesPerFrame(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setSamplesPerFrame(AAudioStreamBuilder* builder,
                                                    int32_t samplesPerFrame)
 {
     AudioStreamBuilder *streamBuilder = convertAAudioBuilderToStreamBuilder(builder);;
     streamBuilder->setSamplesPerFrame(samplesPerFrame);
 }
 
-AAUDIO_API void AAudioStreamBuilder_setDirection(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setDirection(AAudioStreamBuilder* builder,
                                              aaudio_direction_t direction)
 {
     AudioStreamBuilder *streamBuilder = convertAAudioBuilderToStreamBuilder(builder);;
@@ -140,21 +140,21 @@
 }
 
 
-AAUDIO_API void AAudioStreamBuilder_setFormat(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setFormat(AAudioStreamBuilder* builder,
                                                    aaudio_audio_format_t format)
 {
     AudioStreamBuilder *streamBuilder = convertAAudioBuilderToStreamBuilder(builder);;
     streamBuilder->setFormat(format);
 }
 
-AAUDIO_API void AAudioStreamBuilder_setSharingMode(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setSharingMode(AAudioStreamBuilder* builder,
                                                         aaudio_sharing_mode_t sharingMode)
 {
     AudioStreamBuilder *streamBuilder = convertAAudioBuilderToStreamBuilder(builder);;
     streamBuilder->setSharingMode(sharingMode);
 }
 
-AAUDIO_API void AAudioStreamBuilder_setBufferCapacityInFrames(AAudioStreamBuilder builder,
+AAUDIO_API void AAudioStreamBuilder_setBufferCapacityInFrames(AAudioStreamBuilder* builder,
                                                         int32_t frames)
 {
     AudioStreamBuilder *streamBuilder = convertAAudioBuilderToStreamBuilder(builder);;
@@ -162,27 +162,27 @@
 }
 
 static aaudio_result_t  AAudioInternal_openStream(AudioStreamBuilder *streamBuilder,
-                                              AAudioStream *streamPtr)
+                                              AAudioStream** streamPtr)
 {
     AudioStream *audioStream = nullptr;
     aaudio_result_t result = streamBuilder->build(&audioStream);
     if (result != AAUDIO_OK) {
         return result;
     } else {
-        *streamPtr = (AAudioStream) audioStream;
+        *streamPtr = (AAudioStream*) audioStream;
         return AAUDIO_OK;
     }
 }
 
-AAUDIO_API aaudio_result_t  AAudioStreamBuilder_openStream(AAudioStreamBuilder builder,
-                                                     AAudioStream *streamPtr)
+AAUDIO_API aaudio_result_t  AAudioStreamBuilder_openStream(AAudioStreamBuilder* builder,
+                                                     AAudioStream** streamPtr)
 {
     ALOGD("AAudioStreamBuilder_openStream(): builder = %p", builder);
     AudioStreamBuilder *streamBuilder = COMMON_GET_FROM_BUILDER_OR_RETURN(streamPtr);
     return AAudioInternal_openStream(streamBuilder, streamPtr);
 }
 
-AAUDIO_API aaudio_result_t  AAudioStreamBuilder_delete(AAudioStreamBuilder builder)
+AAUDIO_API aaudio_result_t  AAudioStreamBuilder_delete(AAudioStreamBuilder* builder)
 {
     AudioStreamBuilder *streamBuilder = convertAAudioBuilderToStreamBuilder(builder);
     if (streamBuilder != nullptr) {
@@ -192,7 +192,7 @@
     return AAUDIO_ERROR_INVALID_HANDLE;
 }
 
-AAUDIO_API aaudio_result_t  AAudioStream_close(AAudioStream stream)
+AAUDIO_API aaudio_result_t  AAudioStream_close(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     ALOGD("AAudioStream_close(%p)", stream);
@@ -204,35 +204,35 @@
     return AAUDIO_ERROR_INVALID_HANDLE;
 }
 
-AAUDIO_API aaudio_result_t  AAudioStream_requestStart(AAudioStream stream)
+AAUDIO_API aaudio_result_t  AAudioStream_requestStart(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     ALOGD("AAudioStream_requestStart(%p)", stream);
     return audioStream->requestStart();
 }
 
-AAUDIO_API aaudio_result_t  AAudioStream_requestPause(AAudioStream stream)
+AAUDIO_API aaudio_result_t  AAudioStream_requestPause(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     ALOGD("AAudioStream_requestPause(%p)", stream);
     return audioStream->requestPause();
 }
 
-AAUDIO_API aaudio_result_t  AAudioStream_requestFlush(AAudioStream stream)
+AAUDIO_API aaudio_result_t  AAudioStream_requestFlush(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     ALOGD("AAudioStream_requestFlush(%p)", stream);
     return audioStream->requestFlush();
 }
 
-AAUDIO_API aaudio_result_t  AAudioStream_requestStop(AAudioStream stream)
+AAUDIO_API aaudio_result_t  AAudioStream_requestStop(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     ALOGD("AAudioStream_requestStop(%p)", stream);
     return audioStream->requestStop();
 }
 
-AAUDIO_API aaudio_result_t AAudioStream_waitForStateChange(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_waitForStateChange(AAudioStream* stream,
                                             aaudio_stream_state_t inputState,
                                             aaudio_stream_state_t *nextState,
                                             int64_t timeoutNanoseconds)
@@ -246,7 +246,7 @@
 // Stream - non-blocking I/O
 // ============================================================
 
-AAUDIO_API aaudio_result_t AAudioStream_read(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_read(AAudioStream* stream,
                                void *buffer,
                                int32_t numFrames,
                                int64_t timeoutNanoseconds)
@@ -267,7 +267,7 @@
     return result;
 }
 
-AAUDIO_API aaudio_result_t AAudioStream_write(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_write(AAudioStream* stream,
                                const void *buffer,
                                int32_t numFrames,
                                int64_t timeoutNanoseconds)
@@ -292,15 +292,15 @@
 // Miscellaneous
 // ============================================================
 
-AAUDIO_API aaudio_result_t AAudioStream_createThread(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_createThread(AAudioStream* stream,
                                      int64_t periodNanoseconds,
-                                     aaudio_audio_thread_proc_t *threadProc, void *arg)
+                                     aaudio_audio_thread_proc_t threadProc, void *arg)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->createThread(periodNanoseconds, threadProc, arg);
 }
 
-AAUDIO_API aaudio_result_t AAudioStream_joinThread(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_joinThread(AAudioStream* stream,
                                    void **returnArg,
                                    int64_t timeoutNanoseconds)
 {
@@ -312,92 +312,92 @@
 // Stream - queries
 // ============================================================
 
-AAUDIO_API int32_t AAudioStream_getSampleRate(AAudioStream stream)
+AAUDIO_API int32_t AAudioStream_getSampleRate(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getSampleRate();
 }
 
-AAUDIO_API int32_t AAudioStream_getSamplesPerFrame(AAudioStream stream)
+AAUDIO_API int32_t AAudioStream_getSamplesPerFrame(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getSamplesPerFrame();
 }
 
-AAUDIO_API aaudio_stream_state_t AAudioStream_getState(AAudioStream stream)
+AAUDIO_API aaudio_stream_state_t AAudioStream_getState(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getState();
 }
 
-AAUDIO_API aaudio_audio_format_t AAudioStream_getFormat(AAudioStream stream)
+AAUDIO_API aaudio_audio_format_t AAudioStream_getFormat(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getFormat();
 }
 
-AAUDIO_API aaudio_result_t AAudioStream_setBufferSizeInFrames(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_setBufferSizeInFrames(AAudioStream* stream,
                                                 int32_t requestedFrames)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->setBufferSize(requestedFrames);
 }
 
-AAUDIO_API int32_t AAudioStream_getBufferSizeInFrames(AAudioStream stream)
+AAUDIO_API int32_t AAudioStream_getBufferSizeInFrames(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getBufferSize();
 }
 
-AAUDIO_API aaudio_direction_t AAudioStream_getDirection(AAudioStream stream)
+AAUDIO_API aaudio_direction_t AAudioStream_getDirection(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getDirection();
 }
 
-AAUDIO_API int32_t AAudioStream_getFramesPerBurst(AAudioStream stream)
+AAUDIO_API int32_t AAudioStream_getFramesPerBurst(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getFramesPerBurst();
 }
 
-AAUDIO_API int32_t AAudioStream_getBufferCapacityInFrames(AAudioStream stream)
+AAUDIO_API int32_t AAudioStream_getBufferCapacityInFrames(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getBufferCapacity();
 }
 
-AAUDIO_API int32_t AAudioStream_getXRunCount(AAudioStream stream)
+AAUDIO_API int32_t AAudioStream_getXRunCount(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getXRunCount();
 }
 
-AAUDIO_API int32_t AAudioStream_getDeviceId(AAudioStream stream)
+AAUDIO_API int32_t AAudioStream_getDeviceId(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getDeviceId();
 }
 
-AAUDIO_API aaudio_sharing_mode_t AAudioStream_getSharingMode(AAudioStream stream)
+AAUDIO_API aaudio_sharing_mode_t AAudioStream_getSharingMode(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getSharingMode();
 }
 
-AAUDIO_API int64_t AAudioStream_getFramesWritten(AAudioStream stream)
+AAUDIO_API int64_t AAudioStream_getFramesWritten(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getFramesWritten();
 }
 
-AAUDIO_API int64_t AAudioStream_getFramesRead(AAudioStream stream)
+AAUDIO_API int64_t AAudioStream_getFramesRead(AAudioStream* stream)
 {
     AudioStream *audioStream = convertAAudioStreamToAudioStream(stream);
     return audioStream->getFramesRead();
 }
 
-AAUDIO_API aaudio_result_t AAudioStream_getTimestamp(AAudioStream stream,
+AAUDIO_API aaudio_result_t AAudioStream_getTimestamp(AAudioStream* stream,
                                       clockid_t clockid,
                                       int64_t *framePosition,
                                       int64_t *timeNanoseconds)
diff --git a/media/libaaudio/src/core/AudioStream.cpp b/media/libaaudio/src/core/AudioStream.cpp
index c4962ee..b054d94 100644
--- a/media/libaaudio/src/core/AudioStream.cpp
+++ b/media/libaaudio/src/core/AudioStream.cpp
@@ -121,7 +121,7 @@
 }
 
 aaudio_result_t AudioStream::createThread(int64_t periodNanoseconds,
-                                     aaudio_audio_thread_proc_t *threadProc,
+                                     aaudio_audio_thread_proc_t threadProc,
                                      void* threadArg)
 {
     if (mHasThread) {
diff --git a/media/libaaudio/src/core/AudioStream.h b/media/libaaudio/src/core/AudioStream.h
index f5f9d28..af0593d 100644
--- a/media/libaaudio/src/core/AudioStream.h
+++ b/media/libaaudio/src/core/AudioStream.h
@@ -84,7 +84,7 @@
     }
 
     virtual aaudio_result_t createThread(int64_t periodNanoseconds,
-                                       aaudio_audio_thread_proc_t *threadProc,
+                                       aaudio_audio_thread_proc_t threadProc,
                                        void *threadArg);
 
     virtual aaudio_result_t joinThread(void **returnArg, int64_t timeoutNanoseconds);
@@ -267,7 +267,7 @@
     // These are set by the application thread and then read by the audio pthread.
     std::atomic<int64_t>   mPeriodNanoseconds; // for tuning SCHED_FIFO threads
     // TODO make atomic?
-    aaudio_audio_thread_proc_t* mThreadProc = nullptr;
+    aaudio_audio_thread_proc_t mThreadProc = nullptr;
     void*                  mThreadArg = nullptr;
     aaudio_result_t        mThreadRegistrationResult = AAUDIO_OK;