summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/api/current.txt13
-rw-r--r--media/java/android/media/MediaCodecInfo.java138
-rw-r--r--media/java/android/media/MediaFormat.java7
3 files changed, 156 insertions, 2 deletions
diff --git a/core/api/current.txt b/core/api/current.txt
index c0b6ab6a6755..5c4463cac93d 100644
--- a/core/api/current.txt
+++ b/core/api/current.txt
@@ -23348,6 +23348,18 @@ package android.media {
field public static final int HEVCProfileMain10HDR10 = 4096; // 0x1000
field public static final int HEVCProfileMain10HDR10Plus = 8192; // 0x2000
field public static final int HEVCProfileMainStill = 4; // 0x4
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileBaseAac = 16908290; // 0x1020002
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileBaseEnhancedAac = 17039362; // 0x1040002
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileBaseEnhancedFlac = 17039364; // 0x1040004
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileBaseEnhancedOpus = 17039361; // 0x1040001
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileBaseEnhancedPcm = 17039368; // 0x1040008
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileBaseFlac = 16908292; // 0x1020004
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileBaseOpus = 16908289; // 0x1020001
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileBasePcm = 16908296; // 0x1020008
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileSimpleAac = 16842754; // 0x1010002
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileSimpleFlac = 16842756; // 0x1010004
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileSimpleOpus = 16842753; // 0x1010001
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final int IAMFProfileSimplePcm = 16842760; // 0x1010008
field public static final int MPEG2LevelH14 = 2; // 0x2
field public static final int MPEG2LevelHL = 3; // 0x3
field public static final int MPEG2LevelHP = 4; // 0x4
@@ -24046,6 +24058,7 @@ package android.media {
field public static final String MIMETYPE_AUDIO_FLAC = "audio/flac";
field public static final String MIMETYPE_AUDIO_G711_ALAW = "audio/g711-alaw";
field public static final String MIMETYPE_AUDIO_G711_MLAW = "audio/g711-mlaw";
+ field @FlaggedApi("android.media.audio.iamf_definitions_api") public static final String MIMETYPE_AUDIO_IAMF = "audio/iamf";
field public static final String MIMETYPE_AUDIO_IEC61937 = "audio/x-iec61937";
field public static final String MIMETYPE_AUDIO_MPEG = "audio/mpeg";
field public static final String MIMETYPE_AUDIO_MPEGH_BL_L3 = "audio/mhm1.03";
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index 96edd63a9b12..39679818d91a 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -16,14 +16,15 @@
package android.media;
-import static android.media.Utils.intersectSortedDistinctRanges;
-import static android.media.Utils.sortDistinctRanges;
+import static android.media.audio.Flags.FLAG_IAMF_DEFINITIONS_API;
import static android.media.codec.Flags.FLAG_DYNAMIC_COLOR_ASPECTS;
import static android.media.codec.Flags.FLAG_HLG_EDITING;
import static android.media.codec.Flags.FLAG_IN_PROCESS_SW_AUDIO_CODEC;
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_APV_SUPPORT;
+import static android.media.Utils.intersectSortedDistinctRanges;
+import static android.media.Utils.sortDistinctRanges;
import static android.media.MediaCodec.GetFlag;
import android.annotation.FlaggedApi;
@@ -4756,6 +4757,139 @@ public final class MediaCodecInfo {
@FlaggedApi(FLAG_APV_SUPPORT)
public static final int APVLevel71Band3 = 0x200008;
+ // IAMF profiles are defined as the combination of the (listed from LSB to MSB):
+ // - audio codec (2 bytes)
+ // - profile (1 byte, offset 16)
+ // - specification version (1 byte, offset 24)
+ private static final int IAMF_CODEC_OPUS = 0x1;
+ private static final int IAMF_CODEC_AAC = 0x1 << 1;
+ private static final int IAMF_CODEC_FLAC = 0x1 << 2;
+ private static final int IAMF_CODEC_PCM = 0x1 << 3;
+ private static final int IAMF_PROFILE_SIMPLE = 0x1 << 16;
+ private static final int IAMF_PROFILE_BASE = 0x1 << 17;
+ private static final int IAMF_PROFILE_BASE_ENHANCED = 0x1 << 18;
+ private static final int IAMF_v1 = 0x1 << 24;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-simple">simple profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in OPUS.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileSimpleOpus =
+ IAMF_v1 + IAMF_PROFILE_SIMPLE + IAMF_CODEC_OPUS;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-simple">simple profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in AAC.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileSimpleAac =
+ IAMF_v1 + IAMF_PROFILE_SIMPLE + IAMF_CODEC_AAC;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-simple">simple profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in FLAC.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileSimpleFlac =
+ IAMF_v1 + IAMF_PROFILE_SIMPLE + IAMF_CODEC_FLAC;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-simple">simple profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in PCM.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileSimplePcm =
+ IAMF_v1 + IAMF_PROFILE_SIMPLE + IAMF_CODEC_PCM;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-base">base profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in OPUS.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileBaseOpus =
+ IAMF_v1 + IAMF_PROFILE_BASE + IAMF_CODEC_OPUS;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-base">base profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in AAC.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileBaseAac =
+ IAMF_v1 + IAMF_PROFILE_BASE + IAMF_CODEC_AAC;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-base">base profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in FLAC.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileBaseFlac =
+ IAMF_v1 + IAMF_PROFILE_BASE + IAMF_CODEC_FLAC;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-base">base profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in PCM.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileBasePcm =
+ IAMF_v1 + IAMF_PROFILE_BASE + IAMF_CODEC_PCM;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-base-enhanced">base-enhanced profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in OPUS.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileBaseEnhancedOpus =
+ IAMF_v1 + IAMF_PROFILE_BASE_ENHANCED + IAMF_CODEC_OPUS;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-base-enhanced">base-enhanced profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in AAC.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileBaseEnhancedAac =
+ IAMF_v1 + IAMF_PROFILE_BASE_ENHANCED + IAMF_CODEC_AAC;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-base-enhanced">base-enhanced profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in FLAC.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileBaseEnhancedFlac =
+ IAMF_v1 + IAMF_PROFILE_BASE_ENHANCED + IAMF_CODEC_FLAC;
+ /**
+ * IAMF profile using the
+ * <a href="https://aomediacodec.github.io/iamf/#profiles-base-enhanced">base-enhanced profile</a>
+ * with audio streams <a href="https://aomediacodec.github.io/iamf/#codec_id">encoded</a>
+ * in PCM.
+ */
+ @SuppressLint("AllUpper")
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final int IAMFProfileBaseEnhancedPcm =
+ IAMF_v1 + IAMF_PROFILE_BASE_ENHANCED + IAMF_CODEC_PCM;
+
/**
* The profile of the media content. Depending on the type of media this can be
* one of the profile values defined in this class.
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java
index bd65b2ecb76a..8edaff1a384f 100644
--- a/media/java/android/media/MediaFormat.java
+++ b/media/java/android/media/MediaFormat.java
@@ -16,6 +16,8 @@
package android.media;
+
+import static android.media.audio.Flags.FLAG_IAMF_DEFINITIONS_API;
import static android.media.codec.Flags.FLAG_IN_PROCESS_SW_AUDIO_CODEC;
import static android.media.codec.Flags.FLAG_NUM_INPUT_SLOTS;
import static android.media.codec.Flags.FLAG_REGION_OF_INTEREST;
@@ -262,6 +264,11 @@ public final class MediaFormat {
* MIME type for the IEC61937 audio stream encapsulation. This type isn't defined by IANA.
*/
public static final String MIMETYPE_AUDIO_IEC61937 = "audio/x-iec61937";
+ /**
+ * MIME type for IAMF audio stream
+ */
+ @FlaggedApi(FLAG_IAMF_DEFINITIONS_API)
+ public static final String MIMETYPE_AUDIO_IAMF = "audio/iamf";
/**
* MIME type for HEIF still image data encoded in HEVC.