diff --git a/libraries/common/src/main/java/androidx/media3/common/util/MediaFormatUtil.java b/libraries/common/src/main/java/androidx/media3/common/util/MediaFormatUtil.java index dca4b73377..5f91180945 100644 --- a/libraries/common/src/main/java/androidx/media3/common/util/MediaFormatUtil.java +++ b/libraries/common/src/main/java/androidx/media3/common/util/MediaFormatUtil.java @@ -128,6 +128,10 @@ public final class MediaFormatUtil { formatBuilder.setInitializationData(csdBuffers.build()); + if (mediaFormat.containsKey(MediaFormat.KEY_TRACK_ID)) { + formatBuilder.setId(mediaFormat.getInteger(MediaFormat.KEY_TRACK_ID)); + } + return formatBuilder.build(); } @@ -175,6 +179,10 @@ public final class MediaFormatUtil { result.setInteger(MediaFormat.KEY_ENCODER_PADDING, format.encoderPadding); maybeSetPixelAspectRatio(result, format.pixelWidthHeightRatio); + + if (format.id != null) { + result.setInteger(MediaFormat.KEY_TRACK_ID, Integer.parseInt(format.id)); + } return result; } diff --git a/libraries/exoplayer/src/androidTest/java/androidx/media3/exoplayer/MediaExtractorCompatTest.java b/libraries/exoplayer/src/androidTest/java/androidx/media3/exoplayer/MediaExtractorCompatTest.java index 247380b75d..4755c7502c 100644 --- a/libraries/exoplayer/src/androidTest/java/androidx/media3/exoplayer/MediaExtractorCompatTest.java +++ b/libraries/exoplayer/src/androidTest/java/androidx/media3/exoplayer/MediaExtractorCompatTest.java @@ -701,11 +701,13 @@ public class MediaExtractorCompatTest { public void getTrackFormat_withMultipleTracks_returnsCorrectTrackId() throws IOException { fakeExtractor.addReadAction( (input, seekPosition) -> { - TrackOutput output1 = extractorOutput.track(/* id= */ 1, C.TRACK_TYPE_VIDEO); - TrackOutput output2 = extractorOutput.track(/* id= */ 2, C.TRACK_TYPE_AUDIO); + TrackOutput output1 = extractorOutput.track(/* id= */ 0, C.TRACK_TYPE_VIDEO); + TrackOutput output2 = extractorOutput.track(/* id= */ 1, C.TRACK_TYPE_AUDIO); extractorOutput.endTracks(); - output1.format(PLACEHOLDER_FORMAT_VIDEO); - output2.format(PLACEHOLDER_FORMAT_AUDIO); + output1.format( + new Format.Builder().setId(1).setSampleMimeType(MimeTypes.VIDEO_H264).build()); + output2.format( + new Format.Builder().setId(2).setSampleMimeType(MimeTypes.AUDIO_AAC).build()); return Extractor.RESULT_CONTINUE; }); diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaExtractorCompat.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaExtractorCompat.java index 9c791509bd..6965ef7586 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaExtractorCompat.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/MediaExtractorCompat.java @@ -1002,7 +1002,6 @@ public final class MediaExtractorCompat { FormatHolder scratchFormatHolder, DecoderInputBuffer scratchNoDataDecoderInputBuffer) { Format format = getFormat(scratchFormatHolder, scratchNoDataDecoderInputBuffer); MediaFormat mediaFormatResult = MediaFormatUtil.createMediaFormatFromFormat(format); - mediaFormatResult.setInteger(MediaFormat.KEY_TRACK_ID, getIdOfBackingTrack()); if (compatibilityTrackMimeType != null) { if (Util.SDK_INT >= 29) { mediaFormatResult.removeKey(MediaFormat.KEY_CODECS_STRING);