Merge "Add sent default picture/audio parameter API" into main
diff --git a/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IMediaQuality.aidl b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IMediaQuality.aidl
index 9a15d15..006abee 100644
--- a/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IMediaQuality.aidl
+++ b/tv/mediaquality/aidl/aidl_api/android.hardware.tv.mediaquality/current/android/hardware/tv/mediaquality/IMediaQuality.aidl
@@ -50,9 +50,11 @@
   android.hardware.tv.mediaquality.IPictureProfileChangedListener getPictureProfileListener();
   void setPictureProfileAdjustmentListener(android.hardware.tv.mediaquality.IPictureProfileAdjustmentListener listener);
   android.hardware.tv.mediaquality.PictureParameters getPictureParameters(long pictureProfileId);
+  void sendDefaultPictureParameters(in android.hardware.tv.mediaquality.PictureParameters pictureParameters);
   android.hardware.tv.mediaquality.ISoundProfileChangedListener getSoundProfileListener();
   void setSoundProfileAdjustmentListener(android.hardware.tv.mediaquality.ISoundProfileAdjustmentListener listener);
   android.hardware.tv.mediaquality.SoundParameters getSoundParameters(long soundProfileId);
+  void sendDefaultSoundParameters(in android.hardware.tv.mediaquality.SoundParameters soundParameters);
   void getParamCaps(in android.hardware.tv.mediaquality.ParameterName[] paramNames, out android.hardware.tv.mediaquality.ParamCapability[] caps);
   void getVendorParamCaps(in android.hardware.tv.mediaquality.VendorParameterIdentifier[] names, out android.hardware.tv.mediaquality.VendorParamCapability[] caps);
 }
diff --git a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IMediaQuality.aidl b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IMediaQuality.aidl
index 028621a..6a992a1 100644
--- a/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IMediaQuality.aidl
+++ b/tv/mediaquality/aidl/android/hardware/tv/mediaquality/IMediaQuality.aidl
@@ -162,6 +162,15 @@
     PictureParameters getPictureParameters(long pictureProfileId);
 
     /**
+     * Send the default picture parameters to the vendor code or HAL to apply the picture
+     * parameters.
+     *
+     * @param pictureParameters PictureParameters with pre-defined parameters and vendor defined
+     * parameters.
+     */
+    void sendDefaultPictureParameters(in PictureParameters pictureParameters);
+
+    /**
      * Get sound profile changed listener.
      *
      * @return the ISoundProfileChangedListener.
@@ -184,6 +193,14 @@
     SoundParameters getSoundParameters(long soundProfileId);
 
     /**
+     * Send the default sound parameters to the vendor code or HAL to apply the sound parameters.
+     *
+     * @param soundParameters SoundParameters with pre-defined parameters and vendor defined
+     * parameters.
+     */
+    void sendDefaultSoundParameters(in SoundParameters soundParameters);
+
+    /**
      * Gets capability information of the given parameters.
      */
     void getParamCaps(in ParameterName[] paramNames, out ParamCapability[] caps);
diff --git a/tv/mediaquality/aidl/default/hal/media_quality_hal_impl.rs b/tv/mediaquality/aidl/default/hal/media_quality_hal_impl.rs
index 2958a5e..35fb999 100644
--- a/tv/mediaquality/aidl/default/hal/media_quality_hal_impl.rs
+++ b/tv/mediaquality/aidl/default/hal/media_quality_hal_impl.rs
@@ -243,6 +243,11 @@
         Ok(picture_params)
     }
 
+    fn sendDefaultPictureParameters(&self, _picture_parameters: &PictureParameters) -> binder::Result<()>{
+        println!("Received picture parameters");
+        Ok(())
+    }
+
     fn getSoundProfileListener(&self) -> binder::Result<binder::Strong<dyn ISoundProfileChangedListener>> {
         println!("getSoundProfileListener");
         let listener = self.sound_profile_changed_listener.lock().unwrap();
@@ -278,6 +283,11 @@
         Ok(sound_params)
     }
 
+    fn sendDefaultSoundParameters(&self, _sound_parameters: &SoundParameters) -> binder::Result<()>{
+        println!("Received sound parameters");
+        Ok(())
+    }
+
     fn getParamCaps(
             &self,
             param_names: &[ParameterName],
diff --git a/tv/mediaquality/aidl/vts/functional/VtsHalMediaQualityTest.cpp b/tv/mediaquality/aidl/vts/functional/VtsHalMediaQualityTest.cpp
index 07e30e6..b508ed6 100644
--- a/tv/mediaquality/aidl/vts/functional/VtsHalMediaQualityTest.cpp
+++ b/tv/mediaquality/aidl/vts/functional/VtsHalMediaQualityTest.cpp
@@ -169,6 +169,13 @@
     ASSERT_EQ(pictureParams.pictureParameters.size(), 2);
 }
 
+TEST_P(MediaQualityAidl, TestSendDefaultPictureParameters) {
+    PictureParameters pictureParams;
+    auto result = mediaquality->getPictureParameters(1, &pictureParams);
+    ASSERT_TRUE(result.isOk());
+    ASSERT_OK(mediaquality->sendDefaultPictureParameters(pictureParams));
+}
+
 TEST_P(MediaQualityAidl, TestSetSoundProfileAdjustmentListener) {
     std::shared_ptr<SoundProfileAdjustmentListener> listener =
             ndk::SharedRefBase::make<SoundProfileAdjustmentListener>(
@@ -183,6 +190,13 @@
     ASSERT_EQ(soundParams.soundParameters.size(), 2);
 }
 
+TEST_P(MediaQualityAidl, TestSendDefaultSoundParameters) {
+    SoundParameters soundParams;
+    auto result = mediaquality->getSoundParameters(1, &soundParams);
+    ASSERT_TRUE(result.isOk());
+    ASSERT_OK(mediaquality->sendDefaultSoundParameters(soundParams));
+}
+
 TEST_P(MediaQualityAidl, TestSetAmbientBacklightDetector) {
     AmbientBacklightSettings in_settings = {
             .packageName = "com.android.mediaquality",