libaudiohal: Implement updateSource/SinkMetadata

Provide conversions between legacy and AIDL playback and
record track metadata. Use them for implementing
StreamInHalAidl::updateSinkMetadata and
StreamOutHalAidl::updateSourceMetadata.

Bug: 205884982
Bug: 272188499
Test: atest audiorecord_tests trackplayerbase_tests (w/AIDL)
Change-Id: I9278bb7ddbfa926fb1840ba1c51cb2401e949df6
diff --git a/media/libaudiohal/impl/StreamHalAidl.h b/media/libaudiohal/impl/StreamHalAidl.h
index 8e59513..e3cae77 100644
--- a/media/libaudiohal/impl/StreamHalAidl.h
+++ b/media/libaudiohal/impl/StreamHalAidl.h
@@ -313,6 +313,9 @@
   private:
     friend class sp<StreamOutHalAidl>;
 
+    static ::aidl::ConversionResult<::aidl::android::hardware::audio::common::SourceMetadata>
+    legacy2aidl_SourceMetadata(const StreamOutHalInterface::SourceMetadata& legacy);
+
     const std::shared_ptr<::aidl::android::hardware::audio::core::IStreamOut> mStream;
     const wp<CallbackBroker> mCallbackBroker;
 
@@ -362,6 +365,9 @@
   private:
     friend class sp<StreamInHalAidl>;
 
+    static ::aidl::ConversionResult<::aidl::android::hardware::audio::common::SinkMetadata>
+    legacy2aidl_SinkMetadata(const StreamInHalInterface::SinkMetadata& legacy);
+
     const std::shared_ptr<::aidl::android::hardware::audio::core::IStreamIn> mStream;
 
     // Can not be constructed directly by clients.