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

Commit 3ae06329 authored by Kevin Rocard's avatar Kevin Rocard
Browse files

Add OPUS encoding to the framework



Audio offload support was added to AudioTrack in Q,
but only a few encoding were exposed (MP3 & AAC).

This patch adds only Opus support.
For R we probably want to expose all format that the framework supports.

Bug: 146540917
Test: AudioTrackOffloadTest AudioFormatTest
Change-Id: I2ca57d45081668f76f8d9e153f66d1fd41209685
Signed-off-by: default avatarKevin Rocard <krocard@google.com>
parent 7b2a2936
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -23283,6 +23283,7 @@ package android.media {
    field public static final int ENCODING_IEC61937 = 13; // 0xd
    field public static final int ENCODING_INVALID = 0; // 0x0
    field public static final int ENCODING_MP3 = 9; // 0x9
    field public static final int ENCODING_OPUS = 20; // 0x14
    field public static final int ENCODING_PCM_16BIT = 2; // 0x2
    field public static final int ENCODING_PCM_8BIT = 3; // 0x3
    field public static final int ENCODING_PCM_FLOAT = 4; // 0x4
+5 −0
Original line number Diff line number Diff line
@@ -38,6 +38,7 @@
#define ENCODING_AC4            17
#define ENCODING_E_AC3_JOC      18
#define ENCODING_DOLBY_MAT      19
#define ENCODING_OPUS           20

#define ENCODING_INVALID    0
#define ENCODING_DEFAULT    1
@@ -88,6 +89,8 @@ static inline audio_format_t audioFormatToNative(int audioFormat)
        return AUDIO_FORMAT_DEFAULT;
    case ENCODING_DOLBY_MAT:
        return AUDIO_FORMAT_MAT;
    case ENCODING_OPUS:
        return AUDIO_FORMAT_OPUS;
    default:
        return AUDIO_FORMAT_INVALID;
    }
@@ -142,6 +145,8 @@ static inline int audioFormatFromNative(audio_format_t nativeFormat)
    case AUDIO_FORMAT_MAT_2_0:
    case AUDIO_FORMAT_MAT_2_1:
        return ENCODING_DOLBY_MAT;
    case AUDIO_FORMAT_OPUS:
        return ENCODING_OPUS;
    case AUDIO_FORMAT_DEFAULT:
        return ENCODING_DEFAULT;
    default:
+11 −1
Original line number Diff line number Diff line
@@ -281,6 +281,8 @@ public final class AudioFormat implements Parcelable {
     * metadata (object audio) over HDMI (e.g. Dolby Atmos content).
     **/
    public static final int ENCODING_DOLBY_MAT = 19;
    /** Audio data format: OPUS compressed. */
    public static final int ENCODING_OPUS = 20;

    /** @hide */
    public static String toLogFriendlyEncoding(int enc) {
@@ -323,6 +325,8 @@ public final class AudioFormat implements Parcelable {
                return "ENCODING_E_AC3_JOC";
            case ENCODING_DOLBY_MAT:
                return "ENCODING_DOLBY_MAT";
            case ENCODING_OPUS:
                return "ENCODING_OPUS";
            default :
                return "invalid encoding " + enc;
        }
@@ -548,6 +552,7 @@ public final class AudioFormat implements Parcelable {
            case ENCODING_AC4:
            case ENCODING_E_AC3_JOC:
            case ENCODING_DOLBY_MAT:
            case ENCODING_OPUS:
                return true;
            default:
                return false;
@@ -576,6 +581,7 @@ public final class AudioFormat implements Parcelable {
            case ENCODING_AC4:
            case ENCODING_E_AC3_JOC:
            case ENCODING_DOLBY_MAT:
            case ENCODING_OPUS:
                return true;
            default:
                return false;
@@ -607,6 +613,7 @@ public final class AudioFormat implements Parcelable {
            case ENCODING_AC4:
            case ENCODING_E_AC3_JOC:
            case ENCODING_DOLBY_MAT:
            case ENCODING_OPUS:
                return false;
            case ENCODING_INVALID:
            default:
@@ -638,6 +645,7 @@ public final class AudioFormat implements Parcelable {
            case ENCODING_AC4:
            case ENCODING_E_AC3_JOC:
            case ENCODING_DOLBY_MAT:
            case ENCODING_OPUS:
                return false;
            case ENCODING_INVALID:
            default:
@@ -917,6 +925,7 @@ public final class AudioFormat implements Parcelable {
                case ENCODING_AC4:
                case ENCODING_E_AC3_JOC:
                case ENCODING_DOLBY_MAT:
                case ENCODING_OPUS:
                    mEncoding = encoding;
                    break;
                case ENCODING_INVALID:
@@ -1136,7 +1145,8 @@ public final class AudioFormat implements Parcelable {
        ENCODING_AAC_XHE,
        ENCODING_AC4,
        ENCODING_E_AC3_JOC,
        ENCODING_DOLBY_MAT }
        ENCODING_DOLBY_MAT,
        ENCODING_OPUS }
    )
    @Retention(RetentionPolicy.SOURCE)
    public @interface Encoding {}