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

Commit e531feb3 authored by Vlad Popa's avatar Vlad Popa Committed by Android (Google) Code Review
Browse files

Merge "CTA2075: return boolean when adding MediaCodec" into main

parents 65b51ccb 6f324310
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -22102,7 +22102,7 @@ package android.media {
  }
  @FlaggedApi("android.media.audio.loudness_configurator_api") public class LoudnessCodecConfigurator {
    method @FlaggedApi("android.media.audio.loudness_configurator_api") public void addMediaCodec(@NonNull android.media.MediaCodec);
    method @FlaggedApi("android.media.audio.loudness_configurator_api") public boolean addMediaCodec(@NonNull android.media.MediaCodec);
    method @FlaggedApi("android.media.audio.loudness_configurator_api") @NonNull public static android.media.LoudnessCodecConfigurator create();
    method @FlaggedApi("android.media.audio.loudness_configurator_api") @NonNull public static android.media.LoudnessCodecConfigurator create(@NonNull java.util.concurrent.Executor, @NonNull android.media.LoudnessCodecConfigurator.OnLoudnessCodecUpdateListener);
    method @FlaggedApi("android.media.audio.loudness_configurator_api") @NonNull public android.os.Bundle getLoudnessCodecParams(@NonNull android.media.AudioTrack, @NonNull android.media.MediaCodec);
+9 −5
Original line number Diff line number Diff line
@@ -234,19 +234,21 @@ public class LoudnessCodecConfigurator {
     * @param mediaCodec the codec to start receiving asynchronous loudness
     *                   updates. The codec has to be in a configured or started
     *                   state in order to add it for loudness updates.
     * @throws IllegalArgumentException if the {@code mediaCodec} was not configured,
     *                                  does not contain loudness metadata or if it
     *                                  was already added before
     * @throws IllegalArgumentException if the same {@code mediaCodec} was already
     *                                  added before.
     * @return {@code false} if the {@code mediaCodec} was not configured or does
     *         not contain loudness metadata, {@code true} otherwise.
     */
    @FlaggedApi(FLAG_LOUDNESS_CONFIGURATOR_API)
    public void addMediaCodec(@NonNull MediaCodec mediaCodec) {
    public boolean addMediaCodec(@NonNull MediaCodec mediaCodec) {
        final MediaCodec mc = Objects.requireNonNull(mediaCodec,
                "MediaCodec for addMediaCodec cannot be null");
        int piid = PLAYER_PIID_INVALID;
        final LoudnessCodecInfo mcInfo = getCodecInfo(mc);

        if (mcInfo == null) {
            throw new IllegalArgumentException("Could not extract codec loudness information");
            Log.v(TAG, "Could not extract codec loudness information");
            return false;
        }
        synchronized (mConfiguratorLock) {
            final AtomicBoolean containsCodec = new AtomicBoolean(false);
@@ -271,6 +273,8 @@ public class LoudnessCodecConfigurator {
        if (piid != PLAYER_PIID_INVALID) {
            mLcDispatcher.addLoudnessCodecInfo(piid, mediaCodec.hashCode(), mcInfo);
        }

        return true;
    }

    /**
+13 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.loudnesscodecapitest;
import static android.media.audio.Flags.FLAG_LOUDNESS_CONFIGURATOR_API;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertThrows;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
@@ -189,6 +190,18 @@ public class LoudnessCodecConfiguratorTest {
        }
    }

    @Test
    @RequiresFlagsEnabled(FLAG_LOUDNESS_CONFIGURATOR_API)
    public void addUnconfiguredMediaCodec_returnsFalse() throws Exception {
        final MediaCodec mediaCodec = MediaCodec.createDecoderByType("audio/mpeg");

        try {
            assertFalse(mLcc.addMediaCodec(mediaCodec));
        } finally {
            mediaCodec.release();
        }
    }

    @Test
    @RequiresFlagsEnabled(FLAG_LOUDNESS_CONFIGURATOR_API)
    public void setClearTrack_removeAllAudioServicePiidCodecs() throws Exception {