Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 198c1ce6 authored by Haofan Wang's avatar Haofan Wang
Browse files

Add vendor picture parameters

Add setVendorPictureParameters method to store vendor parameters in the
picture parameters. So that vendor can define their own parameters
without changing too much framework code.

Bug: 393450022
Flag: android.media.tv.flags.media_quality_fw_bugfix
Test: atest CtsMediaQualityTestCases
Change-Id: I4446bb36dd0656cf5831fdde53e6d998d82eef6e
parent 39356f50
Loading
Loading
Loading
Loading
+5 −4
Original line number Diff line number Diff line
@@ -138,6 +138,7 @@ java_library_static {
        "ondeviceintelligence_conditionally",
    ],
    srcs: [
        ":android.hardware.audio.effect-V1-java-source",
        ":android.hardware.tv.hdmi.connection-V1-java-source",
        ":android.hardware.tv.hdmi.earc-V1-java-source",
        ":android.hardware.tv.mediaquality-V1-java-source",
+31 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@ import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.hardware.audio.effect.DefaultExtension;
import android.hardware.tv.mediaquality.AmbientBacklightColorFormat;
import android.hardware.tv.mediaquality.IMediaQuality;
import android.hardware.tv.mediaquality.IPictureProfileAdjustmentListener;
@@ -58,6 +59,7 @@ import android.os.Binder;
import android.os.Bundle;
import android.os.Environment;
import android.os.IBinder;
import android.os.Parcel;
import android.os.PersistableBundle;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
@@ -370,13 +372,21 @@ public class MediaQualityService extends SystemService {

            try {
                if (mMediaQuality != null) {
                    PictureParameters pp = new PictureParameters();
                    PictureParameter[] pictureParameters = MediaQualityUtils
                            .convertPersistableBundleToPictureParameterList(params);

                    PictureParameters pp = new PictureParameters();
                    PersistableBundle vendorPictureParameters = params
                            .getPersistableBundle(BaseParameters.VENDOR_PARAMETERS);
                    Parcel parcel = Parcel.obtain();
                    if (vendorPictureParameters != null) {
                        setVendorPictureParameters(pp, parcel, vendorPictureParameters);
                    }

                    pp.pictureParameters = pictureParameters;

                    mMediaQuality.sendDefaultPictureParameters(pp);
                    parcel.recycle();
                    return true;
                }
            } catch (RemoteException e) {
@@ -1428,11 +1438,19 @@ public class MediaQualityService extends SystemService {
                    MediaQualityUtils.convertPersistableBundleToPictureParameterList(
                            params);

            PersistableBundle vendorPictureParameters = params
                    .getPersistableBundle(BaseParameters.VENDOR_PARAMETERS);
            Parcel parcel = Parcel.obtain();
            if (vendorPictureParameters != null) {
                setVendorPictureParameters(pictureParameters, parcel, vendorPictureParameters);
            }

            android.hardware.tv.mediaquality.PictureProfile toReturn =
                    new android.hardware.tv.mediaquality.PictureProfile();
            toReturn.pictureProfileId = id;
            toReturn.parameters = pictureParameters;

            parcel.recycle();
            return toReturn;
        }

@@ -1738,4 +1756,16 @@ public class MediaQualityService extends SystemService {
            return android.hardware.tv.mediaquality.IMediaQualityCallback.Stub.VERSION;
        }
    }

    private void setVendorPictureParameters(
            PictureParameters pictureParameters,
            Parcel parcel,
            PersistableBundle vendorPictureParameters) {
        vendorPictureParameters.writeToParcel(parcel, 0);
        byte[] vendorBundleToByteArray = parcel.marshall();
        DefaultExtension defaultExtension = new DefaultExtension();
        defaultExtension.bytes = Arrays.copyOf(
                vendorBundleToByteArray, vendorBundleToByteArray.length);
        pictureParameters.vendorPictureParameters.setParcelable(defaultExtension);
    }
}