diff --git a/libraries/container/src/main/java/androidx/media3/container/MdtaMetadataEntry.java b/libraries/container/src/main/java/androidx/media3/container/MdtaMetadataEntry.java index 9714f77eb9..93c47fc7f6 100644 --- a/libraries/container/src/main/java/androidx/media3/container/MdtaMetadataEntry.java +++ b/libraries/container/src/main/java/androidx/media3/container/MdtaMetadataEntry.java @@ -33,6 +33,9 @@ public final class MdtaMetadataEntry implements Metadata.Entry { /** Key for the capture frame rate (in frames per second). */ public static final String KEY_ANDROID_CAPTURE_FPS = "com.android.capture.fps"; + /** The default locale indicator which implies all speakers in all countries. */ + public static final int DEFAULT_LOCALE_INDICATOR = 0; + /** The type indicator for UTF-8 string. */ public static final int TYPE_INDICATOR_STRING = 1; @@ -54,6 +57,14 @@ public final class MdtaMetadataEntry implements Metadata.Entry { /** The four byte type indicator. */ public final int typeIndicator; + /** + * Creates a new metadata entry for the specified metadata key/value with {@linkplain + * #DEFAULT_LOCALE_INDICATOR default locale indicator}. + */ + public MdtaMetadataEntry(String key, byte[] value, int typeIndicator) { + this(key, value, DEFAULT_LOCALE_INDICATOR, typeIndicator); + } + /** Creates a new metadata entry for the specified metadata key/value. */ public MdtaMetadataEntry(String key, byte[] value, int localeIndicator, int typeIndicator) { this.key = key; diff --git a/libraries/container/src/test/java/androidx/media3/container/MdtaMetadataEntryTest.java b/libraries/container/src/test/java/androidx/media3/container/MdtaMetadataEntryTest.java index 1243df3e49..860010821b 100644 --- a/libraries/container/src/test/java/androidx/media3/container/MdtaMetadataEntryTest.java +++ b/libraries/container/src/test/java/androidx/media3/container/MdtaMetadataEntryTest.java @@ -29,7 +29,11 @@ public final class MdtaMetadataEntryTest { @Test public void parcelable() { MdtaMetadataEntry mdtaMetadataEntryToParcel = - new MdtaMetadataEntry("test", new byte[] {1, 2}, 3, 4); + new MdtaMetadataEntry( + /* key= */ "test", + /* value= */ new byte[] {1, 2}, + /* localeIndicator= */ 3, + /* typeIndicator= */ 4); Parcel parcel = Parcel.obtain(); mdtaMetadataEntryToParcel.writeToParcel(parcel, 0); diff --git a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MetadataRetrieverTest.java b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MetadataRetrieverTest.java index 1ded8940ea..4654c30b45 100644 --- a/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MetadataRetrieverTest.java +++ b/libraries/exoplayer/src/test/java/androidx/media3/exoplayer/MetadataRetrieverTest.java @@ -17,6 +17,8 @@ package androidx.media3.exoplayer; import static androidx.media3.container.MdtaMetadataEntry.KEY_ANDROID_CAPTURE_FPS; +import static androidx.media3.container.MdtaMetadataEntry.TYPE_INDICATOR_FLOAT32; +import static androidx.media3.container.MdtaMetadataEntry.TYPE_INDICATOR_STRING; import static androidx.media3.exoplayer.MetadataRetriever.retrieveMetadata; import static com.google.common.truth.Truth.assertThat; import static org.junit.Assert.assertThrows; @@ -160,13 +162,11 @@ public class MetadataRetrieverTest { new MdtaMetadataEntry( /* key= */ "com.android.version", /* value= */ Util.getUtf8Bytes("10"), - /* localeIndicator= */ 0, - MdtaMetadataEntry.TYPE_INDICATOR_STRING); + TYPE_INDICATOR_STRING); MdtaMetadataEntry expectedTemporalLayersCountMetdata = new MdtaMetadataEntry( /* key= */ "com.android.video.temporal_layers_count", /* value= */ Util.toByteArray(4), - /* localeIndicator= */ 0, MdtaMetadataEntry.TYPE_INDICATOR_INT32); SmtaMetadataEntry expectedSmtaEntry = new SmtaMetadataEntry(/* captureFrameRate= */ 240, /* svcTemporalLayerCount= */ 4); @@ -185,10 +185,7 @@ public class MetadataRetrieverTest { /* timescale= */ 1000); MdtaMetadataEntry expectedMdtaEntry = new MdtaMetadataEntry( - KEY_ANDROID_CAPTURE_FPS, - /* value= */ new byte[] {67, 112, 0, 0}, - /* localeIndicator= */ 0, - /* typeIndicator= */ 23); + KEY_ANDROID_CAPTURE_FPS, /* value= */ Util.toByteArray(240.0f), TYPE_INDICATOR_FLOAT32); ListenableFuture trackGroupsFuture = retrieveMetadata(context, mediaItem, clock); @@ -227,8 +224,7 @@ public class MetadataRetrieverTest { new MdtaMetadataEntry( /* key= */ "com.android.version", /* value= */ Util.getUtf8Bytes("13"), - /* localeIndicator= */ 0, - MdtaMetadataEntry.TYPE_INDICATOR_STRING); + TYPE_INDICATOR_STRING); SmtaMetadataEntry expectedSmtaEntry = new SmtaMetadataEntry(/* captureFrameRate= */ 240, /* svcTemporalLayerCount= */ 4); SlowMotionData expectedSlowMotionData = @@ -238,11 +234,7 @@ public class MetadataRetrieverTest { /* startTimeMs= */ 2128, /* endTimeMs= */ 9856, /* speedDivisor= */ 8))); MdtaMetadataEntry expectedCaptureFpsMdtaEntry = new MdtaMetadataEntry( - KEY_ANDROID_CAPTURE_FPS, - /* value= */ new byte[] {67, 112, 0, 0}, - /* localeIndicator= */ 0, - /* typeIndicator= */ 23); - + KEY_ANDROID_CAPTURE_FPS, /* value= */ Util.toByteArray(240.0f), TYPE_INDICATOR_FLOAT32); ListenableFuture trackGroupsFuture = retrieveMetadata(context, mediaItem, clock); ShadowLooper.idleMainLooper(); diff --git a/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerWithInAppMuxerEndToEndTest.java b/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerWithInAppMuxerEndToEndTest.java index d8c6051fd7..6b76d870a6 100644 --- a/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerWithInAppMuxerEndToEndTest.java +++ b/libraries/transformer/src/test/java/androidx/media3/transformer/TransformerWithInAppMuxerEndToEndTest.java @@ -153,7 +153,6 @@ public class TransformerWithInAppMuxerEndToEndTest { new MdtaMetadataEntry( MdtaMetadataEntry.KEY_ANDROID_CAPTURE_FPS, /* value= */ Util.toByteArray(captureFps), - /* localeIndicator= */ 0, MdtaMetadataEntry.TYPE_INDICATOR_FLOAT32); Muxer.Factory inAppMuxerFactory = new InAppMuxer.Factory.Builder() @@ -214,15 +213,11 @@ public class TransformerWithInAppMuxerEndToEndTest { public void transmux_withCustomMetadata_writesSameCustomMetadata() throws Exception { MdtaMetadataEntry expectedStringMetadata = new MdtaMetadataEntry( - "StringKey", - Util.getUtf8Bytes("StringValue"), - /* localeIndicator= */ 0, - MdtaMetadataEntry.TYPE_INDICATOR_STRING); + "StringKey", Util.getUtf8Bytes("StringValue"), MdtaMetadataEntry.TYPE_INDICATOR_STRING); MdtaMetadataEntry expectedFloatMetadata = new MdtaMetadataEntry( "FloatKey", /* value= */ Util.toByteArray(600.0f), - /* localeIndicator= */ 0, MdtaMetadataEntry.TYPE_INDICATOR_FLOAT32); Muxer.Factory inAppMuxerFactory = new InAppMuxer.Factory.Builder()