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

Commit 3f4ab0a7 authored by Treehugger Robot's avatar Treehugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[Media Quality] Support setting Picture Profile instance as a parameter...

Merge "[Media Quality] Support setting Picture Profile instance as a parameter in MediaCodec" into main
parents 510a6bf0 7551181f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -824,6 +824,11 @@ java_aconfig_library {
    defaults: ["framework-minus-apex-aconfig-java-defaults"],
}

cc_aconfig_library {
    name: "android.media.tv.flags-aconfig-cc",
    aconfig_declarations: "android.media.tv.flags-aconfig",
}

// Permissions
aconfig_declarations {
    name: "android.permission.flags-aconfig",
+31 −2
Original line number Diff line number Diff line
@@ -20,6 +20,8 @@ import static android.media.codec.Flags.FLAG_CODEC_AVAILABILITY;
import static android.media.codec.Flags.FLAG_NULL_OUTPUT_SURFACE;
import static android.media.codec.Flags.FLAG_REGION_OF_INTEREST;
import static android.media.codec.Flags.FLAG_SUBSESSION_METRICS;
import static android.media.tv.flags.Flags.applyPictureProfiles;
import static android.media.tv.flags.Flags.mediaQualityFw;

import static com.android.media.codec.flags.Flags.FLAG_LARGE_AUDIO_FRAME;

@@ -37,6 +39,8 @@ import android.graphics.Rect;
import android.graphics.SurfaceTexture;
import android.hardware.HardwareBuffer;
import android.media.MediaCodecInfo.CodecCapabilities;
import android.media.quality.PictureProfile;
import android.media.quality.PictureProfileHandle;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
@@ -5370,6 +5374,9 @@ final public class MediaCodec {
     * @param params The bundle of parameters to set.
     * @throws IllegalStateException if in the Released state.
     */

    private static final String PARAMETER_KEY_PICTURE_PROFILE_HANDLE = "picture-profile-handle";

    public final void setParameters(@Nullable Bundle params) {
        if (params == null) {
            return;
@@ -5389,6 +5396,28 @@ final public class MediaCodec {
                }
                keys[i] = "audio-hw-sync";
                values[i] = AudioSystem.getAudioHwSyncForSession(sessionId);
            } else if (applyPictureProfiles() && mediaQualityFw()
                    && key.equals(MediaFormat.KEY_PICTURE_PROFILE_INSTANCE)) {
                PictureProfile pictureProfile = null;
                try {
                    pictureProfile = (PictureProfile) params.get(key);
                } catch (ClassCastException e) {
                    throw new IllegalArgumentException(
                            "Cannot cast the instance parameter to PictureProfile!");
                } catch (Exception e) {
                    android.util.Log.getStackTraceString(e);
                    throw new IllegalArgumentException("Unexpected exception when casting the "
                                                       + "instance parameter to PictureProfile!");
                }
                if (pictureProfile == null) {
                    throw new IllegalArgumentException(
                            "Picture profile instance parameter is null!");
                }
                PictureProfileHandle handle = pictureProfile.getHandle();
                if (handle != PictureProfileHandle.NONE) {
                    keys[i] = PARAMETER_KEY_PICTURE_PROFILE_HANDLE;
                    values[i] = Long.valueOf(handle.getId());
                }
            } else {
                keys[i] = key;
                Object value = params.get(key);