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

Commit de96cc8a authored by Haofan Wang's avatar Haofan Wang
Browse files

Improve parameter capability

1. Add parameter default value in the bundle.
2. Handle String parameter value conversion for capabillities.

Bug: 442556388
Test: m
Flag: EXEMPT bugfix
Change-Id: Iac81968bb995df2886d8f4b47770fb32b2da0fcb
parent 4acc99e3
Loading
Loading
Loading
Loading
+37 −2
Original line number Original line 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.ISoundProfileAdjustmentListener;
import android.hardware.tv.mediaquality.ISoundProfileChangedListener;
import android.hardware.tv.mediaquality.ISoundProfileChangedListener;
import android.hardware.tv.mediaquality.ParamCapability;
import android.hardware.tv.mediaquality.ParamCapability;
import android.hardware.tv.mediaquality.ParameterDefaultValue;
import android.hardware.tv.mediaquality.PictureParameter;
import android.hardware.tv.mediaquality.PictureParameter;
import android.hardware.tv.mediaquality.PictureParameters;
import android.hardware.tv.mediaquality.PictureParameters;
import android.hardware.tv.mediaquality.SoundParameter;
import android.hardware.tv.mediaquality.SoundParameter;
@@ -1487,6 +1488,7 @@ public class MediaQualityService extends SystemService {
                        boolean isSupported = pcHal.isSupported;
                        boolean isSupported = pcHal.isSupported;
                        int type = pcHal.defaultValue == null ? 0 : pcHal.defaultValue.getTag() + 1;
                        int type = pcHal.defaultValue == null ? 0 : pcHal.defaultValue.getTag() + 1;
                        Bundle bundle = MediaQualityUtils.convertToCaps(type, pcHal.range);
                        Bundle bundle = MediaQualityUtils.convertToCaps(type, pcHal.range);
                        putParamCapDefaultValueIntoBundle(bundle, pcHal.defaultValue);


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


                paramCaps.add(new ParameterCapability(name, isSupported, type, bundle));
                paramCaps.add(new ParameterCapability(name, isSupported, type, bundle));
            }
            }
@@ -2323,9 +2327,10 @@ public class MediaQualityService extends SystemService {
            for (ParamCapability cap: caps) {
            for (ParamCapability cap: caps) {
                String name = MediaQualityUtils.getParameterName(cap.name);
                String name = MediaQualityUtils.getParameterName(cap.name);
                boolean isSupported = cap.isSupported;
                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;
                int type = cap.defaultValue == null ? 0 : cap.defaultValue.getTag() + 1;
                Bundle bundle = MediaQualityUtils.convertToCaps(type, cap.range);
                Bundle bundle = MediaQualityUtils.convertToCaps(type, cap.range);
                putParamCapDefaultValueIntoBundle(bundle, cap.defaultValue);


                paramCaps.add(new ParameterCapability(name, isSupported, type, bundle));
                paramCaps.add(new ParameterCapability(name, isSupported, type, bundle));
            }
            }
@@ -2340,11 +2345,12 @@ public class MediaQualityService extends SystemService {
            for (VendorParamCapability vpcHal: caps) {
            for (VendorParamCapability vpcHal: caps) {
                String name = MediaQualityUtils.getVendorParameterName(vpcHal);
                String name = MediaQualityUtils.getVendorParameterName(vpcHal);
                boolean isSupported = vpcHal.isSupported;
                boolean isSupported = vpcHal.isSupported;
                //Reason for +1: please see getListParameterCapability()
                //Reason for +1: please see getParameterCapabilityList()
                int type = vpcHal.defaultValue
                int type = vpcHal.defaultValue
                        == null ? 0 : vpcHal.defaultValue.getTag() + 1;
                        == null ? 0 : vpcHal.defaultValue.getTag() + 1;
                Bundle paramRangeBundle = MediaQualityUtils.convertToCaps(
                Bundle paramRangeBundle = MediaQualityUtils.convertToCaps(
                        type, vpcHal.range);
                        type, vpcHal.range);
                putParamCapDefaultValueIntoBundle(paramRangeBundle, vpcHal.defaultValue);
                MediaQualityUtils.convertToVendorCaps(vpcHal, paramRangeBundle);
                MediaQualityUtils.convertToVendorCaps(vpcHal, paramRangeBundle);
                vendorParamCaps.add(new ParameterCapability(
                vendorParamCaps.add(new ParameterCapability(
                        name, isSupported, type, paramRangeBundle));
                        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 Original line Diff line number Diff line
@@ -2143,6 +2143,20 @@ public final class MediaQualityUtils {
        } else if (type == ParameterDefaultValue.longDefault) {
        } else if (type == ParameterDefaultValue.longDefault) {
            bundle.putObject(ParameterCapability.CAPABILITY_MIN, range.numRange.getLongMinMax()[0]);
            bundle.putObject(ParameterCapability.CAPABILITY_MIN, range.numRange.getLongMinMax()[0]);
            bundle.putObject(ParameterCapability.CAPABILITY_MAX, range.numRange.getLongMinMax()[1]);
            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;
        return bundle;
    }
    }
@@ -2154,6 +2168,7 @@ public final class MediaQualityUtils {
     * @param paramRangeBundle bundle that will contains vendor param defined values.
     * @param paramRangeBundle bundle that will contains vendor param defined values.
     */
     */
    public static void convertToVendorCaps(VendorParamCapability vpcHal, Bundle paramRangeBundle) {
    public static void convertToVendorCaps(VendorParamCapability vpcHal, Bundle paramRangeBundle) {
        if (vpcHal != null && vpcHal.range != null) {
            byte[] vendorParamCapRangeByteArray = Objects.requireNonNull(
            byte[] vendorParamCapRangeByteArray = Objects.requireNonNull(
                    vpcHal.range.vendorDefinedValues.getParcelable(
                    vpcHal.range.vendorDefinedValues.getParcelable(
                            DefaultExtension.class)).bytes;
                            DefaultExtension.class)).bytes;
@@ -2166,9 +2181,11 @@ public final class MediaQualityUtils {
            String[] vendorDefinedValues = new String[vendorDefinedValuesSize];
            String[] vendorDefinedValues = new String[vendorDefinedValuesSize];
            vendorParamCapRangeParcel.readStringArray(vendorDefinedValues);
            vendorParamCapRangeParcel.readStringArray(vendorDefinedValues);
            //TODO: Handle int, long and double array
            //TODO: Handle int, long and double array
        paramRangeBundle.putStringArray(ParameterCapability.CAPABILITY_ENUM, vendorDefinedValues);
            paramRangeBundle.putStringArray(ParameterCapability.CAPABILITY_ENUM,
                    vendorDefinedValues);
            vendorParamCapRangeParcel.recycle();
            vendorParamCapRangeParcel.recycle();
        }
        }
    }


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