mirror of
https://github.com/androidx/media.git
synced 2025-04-29 22:36:54 +08:00
Fix KEY_TRACK_ID
in MediaFormat
returned by getTrackFormat()
The `KEY_TRACK_ID` was incorrectly set to the track index instead of the track ID from the media file. PiperOrigin-RevId: 738761146 (cherry picked from commit 99f364992afa35aa1dba6621ffaa0dc7f1247327)
This commit is contained in:
parent
d920cf87a6
commit
d79d6b2b8b
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
});
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user