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

Commit 070c04f5 authored by Haofan Wang's avatar Haofan Wang Committed by Android (Google) Code Review
Browse files

Merge "Improve parameter capability" into main

parents cc5a5c43 de96cc8a
Loading
Loading
Loading
Loading
+37 −2
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import android.hardware.tv.mediaquality.IPictureProfileChangedListener;
import android.hardware.tv.mediaquality.ISoundProfileAdjustmentListener;
import android.hardware.tv.mediaquality.ISoundProfileChangedListener;
import android.hardware.tv.mediaquality.ParamCapability;
import android.hardware.tv.mediaquality.ParameterDefaultValue;
import android.hardware.tv.mediaquality.PictureParameter;
import android.hardware.tv.mediaquality.PictureParameters;
import android.hardware.tv.mediaquality.SoundParameter;
@@ -1487,6 +1488,7 @@ public class MediaQualityService extends SystemService {
                        boolean isSupported = pcHal.isSupported;
                        int type = pcHal.defaultValue == null ? 0 : pcHal.defaultValue.getTag() + 1;
                        Bundle bundle = MediaQualityUtils.convertToCaps(type, pcHal.range);
                        putParamCapDefaultValueIntoBundle(bundle, pcHal.defaultValue);

                        pcList.add(new ParameterCapability(name, isSupported, type, bundle));
                    }
@@ -1507,6 +1509,7 @@ public class MediaQualityService extends SystemService {
                                == null ? 0 : vpcHal.defaultValue.getTag() + 1;
                        Bundle paramRangeBundle = MediaQualityUtils.convertToCaps(
                                type, vpcHal.range);
                        putParamCapDefaultValueIntoBundle(paramRangeBundle, vpcHal.defaultValue);
                        MediaQualityUtils.convertToVendorCaps(vpcHal, paramRangeBundle);
                        pcList.add(new ParameterCapability(
                                name, isSupported, type, paramRangeBundle));
@@ -2105,6 +2108,7 @@ public class MediaQualityService extends SystemService {
                boolean isSupported = cap.isSupported;
                int type = cap.defaultValue == null ? 0 : cap.defaultValue.getTag() + 1;
                Bundle bundle = MediaQualityUtils.convertToCaps(type, cap.range);
                putParamCapDefaultValueIntoBundle(bundle, cap.defaultValue);

                paramCaps.add(new ParameterCapability(name, isSupported, type, bundle));
            }
@@ -2323,9 +2327,10 @@ public class MediaQualityService extends SystemService {
            for (ParamCapability cap: caps) {
                String name = MediaQualityUtils.getParameterName(cap.name);
                boolean isSupported = cap.isSupported;
                //Reason for +1: please see getListParameterCapability()
                //Reason for +1: please see getParameterCapabilityList()
                int type = cap.defaultValue == null ? 0 : cap.defaultValue.getTag() + 1;
                Bundle bundle = MediaQualityUtils.convertToCaps(type, cap.range);
                putParamCapDefaultValueIntoBundle(bundle, cap.defaultValue);

                paramCaps.add(new ParameterCapability(name, isSupported, type, bundle));
            }
@@ -2340,11 +2345,12 @@ public class MediaQualityService extends SystemService {
            for (VendorParamCapability vpcHal: caps) {
                String name = MediaQualityUtils.getVendorParameterName(vpcHal);
                boolean isSupported = vpcHal.isSupported;
                //Reason for +1: please see getListParameterCapability()
                //Reason for +1: please see getParameterCapabilityList()
                int type = vpcHal.defaultValue
                        == null ? 0 : vpcHal.defaultValue.getTag() + 1;
                Bundle paramRangeBundle = MediaQualityUtils.convertToCaps(
                        type, vpcHal.range);
                putParamCapDefaultValueIntoBundle(paramRangeBundle, vpcHal.defaultValue);
                MediaQualityUtils.convertToVendorCaps(vpcHal, paramRangeBundle);
                vendorParamCaps.add(new ParameterCapability(
                        name, isSupported, type, paramRangeBundle));
@@ -2940,4 +2946,33 @@ public class MediaQualityService extends SystemService {
            }
        }
    }

    private void putParamCapDefaultValueIntoBundle(
            Bundle bundle, ParameterDefaultValue defaultValue) {
        if (defaultValue == null) {
            return;
        }

        switch (defaultValue.getTag()) {
            case ParameterDefaultValue.intDefault:
                bundle.putInt(
                        ParameterCapability.CAPABILITY_DEFAULT, defaultValue.getIntDefault());
                break;
            case ParameterDefaultValue.longDefault:
                bundle.putLong(
                        ParameterCapability.CAPABILITY_DEFAULT, defaultValue.getLongDefault());
                break;
            case ParameterDefaultValue.doubleDefault:
                bundle.putDouble(
                        ParameterCapability.CAPABILITY_DEFAULT, defaultValue.getDoubleDefault());
                break;
            case ParameterDefaultValue.stringDefault:
                bundle.putString(
                        ParameterCapability.CAPABILITY_DEFAULT, defaultValue.getStringDefault());
                break;
            default:
                Log.d(TAG, "putParamCapDefaultValueIntoBundle: "
                        + "default value type is not supported for tag " + defaultValue.getTag());
        }
    }
}
+31 −14
Original line number Diff line number Diff line
@@ -2143,6 +2143,20 @@ public final class MediaQualityUtils {
        } else if (type == ParameterDefaultValue.longDefault) {
            bundle.putObject(ParameterCapability.CAPABILITY_MIN, range.numRange.getLongMinMax()[0]);
            bundle.putObject(ParameterCapability.CAPABILITY_MAX, range.numRange.getLongMinMax()[1]);
        } else if (type == ParameterDefaultValue.stringDefault) {
            byte[] stringParameterValuesByte = Objects.requireNonNull(
                    range.vendorDefinedValues.getParcelable(DefaultExtension.class)).bytes;
            Parcel paramCapRangeParcel = Parcel.obtain();
            paramCapRangeParcel.unmarshall(
                    stringParameterValuesByte, 0, stringParameterValuesByte.length
            );
            paramCapRangeParcel.setDataPosition(0);
            int paramValuesSize = paramCapRangeParcel.readInt();
            paramCapRangeParcel.setDataPosition(0);
            String[] stringParamValues = new String[paramValuesSize];
            paramCapRangeParcel.readStringArray(stringParamValues);
            bundle.putObject(ParameterCapability.CAPABILITY_ENUM, stringParamValues);
            paramCapRangeParcel.recycle();
        }
        return bundle;
    }
@@ -2154,6 +2168,7 @@ public final class MediaQualityUtils {
     * @param paramRangeBundle bundle that will contains vendor param defined values.
     */
    public static void convertToVendorCaps(VendorParamCapability vpcHal, Bundle paramRangeBundle) {
        if (vpcHal != null && vpcHal.range != null) {
            byte[] vendorParamCapRangeByteArray = Objects.requireNonNull(
                    vpcHal.range.vendorDefinedValues.getParcelable(
                            DefaultExtension.class)).bytes;
@@ -2166,9 +2181,11 @@ public final class MediaQualityUtils {
            String[] vendorDefinedValues = new String[vendorDefinedValuesSize];
            vendorParamCapRangeParcel.readStringArray(vendorDefinedValues);
            //TODO: Handle int, long and double array
        paramRangeBundle.putStringArray(ParameterCapability.CAPABILITY_ENUM, vendorDefinedValues);
            paramRangeBundle.putStringArray(ParameterCapability.CAPABILITY_ENUM,
                    vendorDefinedValues);
            vendorParamCapRangeParcel.recycle();
        }
    }

    private static String getTempId(BiMap<Long, String> map, Cursor cursor) {
        int colIndex = cursor.getColumnIndex(BaseParameters.PARAMETER_ID);