Merge "audio HAL: new track metadata version" am: 29ae34bcde

Original change: https://android-review.googlesource.com/c/platform/hardware/libhardware/+/1540995

MUST ONLY BE SUBMITTED BY AUTOMERGER

Change-Id: I265c473032e6452baf7cc65a55352d8c0e005b5d
diff --git a/include/hardware/audio.h b/include/hardware/audio.h
index 69b0b9c..c2db50c 100644
--- a/include/hardware/audio.h
+++ b/include/hardware/audio.h
@@ -233,6 +233,20 @@
     struct record_track_metadata* tracks;
 } sink_metadata_t;
 
+/* HAL version 3.2 and higher only. */
+typedef struct source_metadata_v7 {
+    size_t track_count;
+    /** Array of metadata of each track connected to this source. */
+    struct playback_track_metadata_v7* tracks;
+} source_metadata_v7_t;
+
+/* HAL version 3.2 and higher only. */
+typedef struct sink_metadata_v7 {
+    size_t track_count;
+    /** Array of metadata of each track connected to this sink. */
+    struct record_track_metadata_v7* tracks;
+} sink_metadata_v7_t;
+
 /**
  * audio_stream_out is the abstraction interface for the audio output hardware.
  *
@@ -437,6 +451,14 @@
     int (*set_event_callback)(struct audio_stream_out *stream,
                               stream_event_callback_t callback,
                               void *cookie);
+
+    /**
+     * Called when the metadata of the stream's source has been changed.
+     * HAL version 3.2 and higher only.
+     * @param source_metadata Description of the audio that is played by the clients.
+     */
+    void (*update_source_metadata_v7)(struct audio_stream_out *stream,
+                                      const struct source_metadata_v7* source_metadata);
 };
 typedef struct audio_stream_out audio_stream_out_t;
 
@@ -601,6 +623,14 @@
      */
     void (*update_sink_metadata)(struct audio_stream_in *stream,
                                  const struct sink_metadata* sink_metadata);
+
+    /**
+     * Called when the metadata of the stream's sink has been changed.
+     * HAL version 3.2 and higher only.
+     * @param sink_metadata Description of the audio that is recorded by the clients.
+     */
+    void (*update_sink_metadata_v7)(struct audio_stream_in *stream,
+                                    const struct sink_metadata_v7* sink_metadata);
 };
 typedef struct audio_stream_in audio_stream_in_t;