diff options
| -rw-r--r-- | core/api/current.txt | 13 | ||||
| -rw-r--r-- | media/java/android/media/MediaCodecInfo.java | 138 | ||||
| -rw-r--r-- | media/java/android/media/MediaFormat.java | 7 |
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. |