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

Commit cf78b879 authored by Nathalie Le Clair's avatar Nathalie Le Clair Committed by Android (Google) Code Review
Browse files

Merge "Fix SAD validation condition"

parents 37af9d8c 4ab2de10
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -337,6 +337,8 @@ final class Constants {
    static final int AUDIO_CODEC_WMAPRO = 0xE; // Support WMA-Pro
    static final int AUDIO_CODEC_MAX = 0xF;

    static final int AUDIO_FORMAT_MASK = 0b0111_1000;

    @StringDef({
        AUDIO_DEVICE_ARC_IN,
        AUDIO_DEVICE_SPDIF,
+8 −2
Original line number Diff line number Diff line
@@ -200,8 +200,14 @@ final class RequestSadAction extends HdmiCecFeatureAction {
    }

    private boolean isValidCodec(byte codec) {
        return Constants.AUDIO_CODEC_NONE < (codec & 0xFF)
                && (codec & 0xFF) <= Constants.AUDIO_CODEC_MAX;
        // Bit 7 needs to be 0.
        if ((codec & (1 << 7)) != 0) {
            return false;
        }
        // Bit [6, 3] is the audio format code.
        int audioFormatCode = (codec & Constants.AUDIO_FORMAT_MASK) >> 3;
        return Constants.AUDIO_CODEC_NONE < audioFormatCode
                && audioFormatCode <= Constants.AUDIO_CODEC_MAX;
    }

    private void updateResult(byte[] sad) {
+56 −55
Original line number Diff line number Diff line
@@ -295,10 +295,10 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_1.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_1 = new byte[]{
                0x01, 0x18, 0x4A,
                0x02, 0x64, 0x5A,
                0x03, 0x4B, 0x00,
                0x04, 0x20, 0x0A};
                0x0F, 0x18, 0x4A,
                0x17, 0x64, 0x5A,
                0x1F, 0x4B, 0x00,
                0x27, 0x20, 0x0A};
        HdmiCecMessage response1 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_1);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
@@ -310,10 +310,10 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_2.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_2 = new byte[]{
                0x05, 0x18, 0x4A,
                0x06, 0x64, 0x5A,
                0x07, 0x4B, 0x00,
                0x08, 0x20, 0x0A};
                0x2F, 0x18, 0x4A,
                0x37, 0x64, 0x5A,
                0x3F, 0x4B, 0x00,
                0x47, 0x20, 0x0A};
        HdmiCecMessage response2 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_2);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected2);
@@ -325,10 +325,10 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_3.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_3 = new byte[]{
                0x09, 0x18, 0x4A,
                0x0A, 0x64, 0x5A,
                0x0B, 0x4B, 0x00,
                0x0C, 0x20, 0x0A};
                0x4F, 0x18, 0x4A,
                0x57, 0x64, 0x5A,
                0x5F, 0x4B, 0x00,
                0x67, 0x20, 0x0A};
        HdmiCecMessage response3 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_3);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected3);
@@ -340,9 +340,9 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_4.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_4 = new byte[]{
                0x0D, 0x18, 0x4A,
                0x0E, 0x64, 0x5A,
                0x0F, 0x4B, 0x00};
                0x6F, 0x18, 0x4A,
                0x77, 0x64, 0x5A,
                0x7F, 0x4B, 0x00};
        HdmiCecMessage response4 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_4);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected4);
@@ -371,9 +371,9 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_1.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_1 = new byte[]{
                0x01, 0x18, 0x4A,
                0x03, 0x4B, 0x00,
                0x04, 0x20, 0x0A};
                0x0F, 0x18, 0x4A,
                0x1F, 0x4B, 0x00,
                0x27, 0x20, 0x0A};
        HdmiCecMessage response1 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_1);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
@@ -385,7 +385,7 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_2.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_2 = new byte[]{
                0x08, 0x20, 0x0A};
                0x2F, 0x20, 0x0A};
        HdmiCecMessage response2 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_2);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected2);
@@ -397,10 +397,10 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_3.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_3 = new byte[]{
                0x09, 0x18, 0x4A,
                0x0A, 0x64, 0x5A,
                0x0B, 0x4B, 0x00,
                0x0C, 0x20, 0x0A};
                0x4F, 0x18, 0x4A,
                0x57, 0x64, 0x5A,
                0x5F, 0x4B, 0x00,
                0x67, 0x20, 0x0A};
        HdmiCecMessage response3 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_3);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected3);
@@ -412,7 +412,7 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_4.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_4 = new byte[]{
                0x0F, 0x4B, 0x00};
                0x7F, 0x4B, 0x00};
        HdmiCecMessage response4 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_4);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected4);
@@ -440,11 +440,12 @@ public class RequestSadActionTest {
        HdmiCecMessage expected1 = HdmiCecMessageBuilder.buildRequestShortAudioDescriptor(
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_1.stream().mapToInt(i -> i).toArray());
        // Negative values require explicit casting
        byte[] sadsToRespond_1 = new byte[]{
                0x20, 0x18, 0x4A,
                0x21, 0x64, 0x5A,
                0x22, 0x4B, 0x00,
                0x23, 0x20, 0x0A};
                (byte) 0x80, 0x18, 0x4A,
                (byte) 0x82, 0x64, 0x5A,
                (byte) 0x87, 0x4B, 0x00,
                (byte) 0x8F, 0x20, 0x0A};
        HdmiCecMessage response1 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_1);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
@@ -456,10 +457,10 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_2.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_2 = new byte[]{
                0x24, 0x18, 0x4A,
                0x25, 0x64, 0x5A,
                0x26, 0x4B, 0x00,
                0x27, 0x20, 0x0A};
                (byte) 0x92, 0x18, 0x4A,
                (byte) 0x98, 0x64, 0x5A,
                (byte) 0xA1, 0x4B, 0x00,
                (byte) 0xA4, 0x20, 0x0A};
        HdmiCecMessage response2 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_2);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected2);
@@ -471,10 +472,10 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_3.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_3 = new byte[]{
                0x28, 0x18, 0x4A,
                0x29, 0x64, 0x5A,
                0x2A, 0x4B, 0x00,
                0x2B, 0x20, 0x0A};
                (byte) 0xB3, 0x18, 0x4A,
                (byte) 0xBA, 0x64, 0x5A,
                (byte) 0xCB, 0x4B, 0x00,
                (byte) 0xCF, 0x20, 0x0A};
        HdmiCecMessage response3 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_3);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected3);
@@ -486,9 +487,9 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_4.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_4 = new byte[]{
                0x2C, 0x18, 0x4A,
                0x2D, 0x64, 0x5A,
                0x2E, 0x4B, 0x00};
                (byte) 0xF0, 0x18, 0x4A,
                (byte) 0xF1, 0x64, 0x5A,
                (byte) 0xF3, 0x4B, 0x00};
        HdmiCecMessage response4 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_4);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected4);
@@ -510,10 +511,10 @@ public class RequestSadActionTest {
                mTvLogicalAddress, Constants.ADDR_AUDIO_SYSTEM,
                CODECS_TO_QUERY_1.stream().mapToInt(i -> i).toArray());
        byte[] sadsToRespond_1 = new byte[]{
                0x01, 0x18,
                0x02, 0x64, 0x5A,
                0x03, 0x4B, 0x00,
                0x04, 0x20, 0x0A};
                0x0F, 0x18,
                0x17, 0x64, 0x5A,
                0x1F, 0x4B, 0x00,
                0x27, 0x20, 0x0A};
        HdmiCecMessage response1 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_1);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
@@ -580,10 +581,10 @@ public class RequestSadActionTest {
                new int[]{Constants.AUDIO_CODEC_LPCM, Constants.AUDIO_CODEC_DD,
                        Constants.AUDIO_CODEC_MP3, Constants.AUDIO_CODEC_MPEG2});
        byte[] sadsToRespond_1 = new byte[]{
                0x01, 0x18, 0x4A,
                0x02, 0x64, 0x5A,
                0x04, 0x20, 0x0A,
                0x05, 0x18, 0x4A};
                0x0F, 0x18, 0x4A,
                0x17, 0x64, 0x5A,
                0x27, 0x20, 0x0A,
                0x2F, 0x18, 0x4A};
        HdmiCecMessage response1 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_1);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected1);
@@ -596,10 +597,10 @@ public class RequestSadActionTest {
                new int[]{Constants.AUDIO_CODEC_AAC, Constants.AUDIO_CODEC_DTS,
                        Constants.AUDIO_CODEC_ATRAC, Constants.AUDIO_CODEC_DDP});
        byte[] sadsToRespond_2 = new byte[]{
                0x06, 0x64, 0x5A,
                0x07, 0x4B, 0x00,
                0x08, 0x20, 0x0A,
                0x09, 0x18, 0x4A};
                0x37, 0x64, 0x5A,
                0x3F, 0x4B, 0x00,
                0x47, 0x20, 0x0A,
                0x4F, 0x18, 0x4A};
        HdmiCecMessage response2 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_2);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected2);
@@ -612,10 +613,10 @@ public class RequestSadActionTest {
                new int[]{Constants.AUDIO_CODEC_DTSHD, Constants.AUDIO_CODEC_TRUEHD,
                        Constants.AUDIO_CODEC_DST, Constants.AUDIO_CODEC_MAX});
        byte[] sadsToRespond_3 = new byte[]{
                0x0B, 0x4B, 0x00,
                0x0C, 0x20, 0x0A,
                0x0D, 0x18, 0x4A,
                0x0F, 0x4B, 0x00};
                0x5F, 0x4B, 0x00,
                0x67, 0x20, 0x0A,
                0x6F, 0x18, 0x4A,
                0x7F, 0x4B, 0x00};
        HdmiCecMessage response3 = HdmiCecMessageBuilder.buildReportShortAudioDescriptor(
                Constants.ADDR_AUDIO_SYSTEM, mTvLogicalAddress, sadsToRespond_3);
        assertThat(mNativeWrapper.getResultMessages()).contains(expected3);