mirror of
https://github.com/samsonjs/media.git
synced 2026-03-26 09:35:47 +00:00
Add KEY_TRACK_ID to MediaFormat returned by getTrackFormat(int)
This aligns the behavior with `MediaExtractor`, which sets this key in its [`MediaFormat`](https://developer.android.com/reference/android/media/MediaExtractor#getTrackFormat(int)) output. Additionally, unnecessary `selectTrack` calls have been removed from the existing `getTrackFormat_...` tests, as they are not required to fetch the track format. PiperOrigin-RevId: 700741326
This commit is contained in:
parent
6e29b96337
commit
08619bf6fa
2 changed files with 24 additions and 3 deletions
|
|
@ -649,7 +649,6 @@ public class MediaExtractorCompatTest {
|
|||
return Extractor.RESULT_CONTINUE;
|
||||
});
|
||||
mediaExtractorCompat.setDataSource(PLACEHOLDER_URI, /* offset= */ 0);
|
||||
mediaExtractorCompat.selectTrack(/* trackIndex= */ 0);
|
||||
|
||||
MediaFormat mediaFormat = mediaExtractorCompat.getTrackFormat(/* trackIndex= */ 0);
|
||||
|
||||
|
|
@ -671,7 +670,6 @@ public class MediaExtractorCompatTest {
|
|||
return Extractor.RESULT_CONTINUE;
|
||||
});
|
||||
mediaExtractorCompat.setDataSource(PLACEHOLDER_URI, /* offset= */ 0);
|
||||
mediaExtractorCompat.selectTrack(/* trackIndex= */ 0);
|
||||
|
||||
MediaFormat mediaFormat = mediaExtractorCompat.getTrackFormat(/* trackIndex= */ 0);
|
||||
|
||||
|
|
@ -694,13 +692,35 @@ public class MediaExtractorCompatTest {
|
|||
return Extractor.RESULT_CONTINUE;
|
||||
});
|
||||
mediaExtractorCompat.setDataSource(PLACEHOLDER_URI, /* offset= */ 0);
|
||||
mediaExtractorCompat.selectTrack(/* trackIndex= */ 0);
|
||||
|
||||
MediaFormat mediaFormat = mediaExtractorCompat.getTrackFormat(/* trackIndex= */ 0);
|
||||
|
||||
assertThat(mediaFormat.containsKey(MediaFormat.KEY_DURATION)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
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);
|
||||
extractorOutput.endTracks();
|
||||
output1.format(PLACEHOLDER_FORMAT_VIDEO);
|
||||
output2.format(PLACEHOLDER_FORMAT_AUDIO);
|
||||
return Extractor.RESULT_CONTINUE;
|
||||
});
|
||||
|
||||
mediaExtractorCompat.setDataSource(PLACEHOLDER_URI, /* offset= */ 0);
|
||||
|
||||
MediaFormat videoFormat = mediaExtractorCompat.getTrackFormat(/* trackIndex= */ 0);
|
||||
assertThat(videoFormat.containsKey(MediaFormat.KEY_TRACK_ID)).isTrue();
|
||||
assertThat(videoFormat.getInteger(MediaFormat.KEY_TRACK_ID)).isEqualTo(1);
|
||||
|
||||
MediaFormat audioFormat = mediaExtractorCompat.getTrackFormat(/* trackIndex= */ 1);
|
||||
assertThat(audioFormat.containsKey(MediaFormat.KEY_TRACK_ID)).isTrue();
|
||||
assertThat(audioFormat.getInteger(MediaFormat.KEY_TRACK_ID)).isEqualTo(2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getLogSessionId_withUnsetSessionId_returnsNone() {
|
||||
assumeTrue(Util.SDK_INT >= 31);
|
||||
|
|
|
|||
|
|
@ -1002,6 +1002,7 @@ 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…
Reference in a new issue