mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
Add log session ID APIs to MediaExtractorCompat
Implemented `setLogSessionId(LogSessionId)` and `getLogSessionId()` methods. Note: The `LogSessionId` is currently **not** forwarded to `MediaParser`, but this will be addressed once `MediaParser` can be used to configure `MediaExtractorCompat`. PiperOrigin-RevId: 692945255
This commit is contained in:
parent
0270267e08
commit
278eaf47ad
@ -17,16 +17,21 @@ package androidx.media3.exoplayer;
|
||||
|
||||
import static com.google.common.truth.Truth.assertThat;
|
||||
import static org.junit.Assert.assertThrows;
|
||||
import static org.junit.Assume.assumeTrue;
|
||||
|
||||
import android.content.Context;
|
||||
import android.media.MediaExtractor;
|
||||
import android.media.MediaFormat;
|
||||
import android.media.metrics.LogSessionId;
|
||||
import android.media.metrics.MediaMetricsManager;
|
||||
import android.media.metrics.PlaybackSession;
|
||||
import android.net.Uri;
|
||||
import androidx.media3.common.C;
|
||||
import androidx.media3.common.Format;
|
||||
import androidx.media3.common.MimeTypes;
|
||||
import androidx.media3.common.ParserException;
|
||||
import androidx.media3.common.util.ParsableByteArray;
|
||||
import androidx.media3.common.util.Util;
|
||||
import androidx.media3.datasource.DefaultDataSource;
|
||||
import androidx.media3.exoplayer.upstream.Allocator;
|
||||
import androidx.media3.extractor.Extractor;
|
||||
@ -41,6 +46,7 @@ import androidx.media3.extractor.TrackOutput;
|
||||
import androidx.media3.test.utils.TestUtil;
|
||||
import androidx.test.core.app.ApplicationProvider;
|
||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||
import androidx.test.platform.app.InstrumentationRegistry;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
@ -687,6 +693,28 @@ public class MediaExtractorCompatTest {
|
||||
assertThat(mediaFormat.containsKey(MediaFormat.KEY_DURATION)).isFalse();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getLogSessionId_withUnsetSessionId_returnsNone() {
|
||||
assumeTrue(Util.SDK_INT >= 31);
|
||||
assertThat(mediaExtractorCompat.getLogSessionId()).isEqualTo(LogSessionId.LOG_SESSION_ID_NONE);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void getLogSessionId_withSetSessionId_returnsSetSessionId() {
|
||||
assumeTrue(Util.SDK_INT >= 31);
|
||||
|
||||
MediaMetricsManager mediaMetricsManager =
|
||||
InstrumentationRegistry.getInstrumentation()
|
||||
.getTargetContext()
|
||||
.getSystemService(MediaMetricsManager.class);
|
||||
PlaybackSession playbackSession = mediaMetricsManager.createPlaybackSession();
|
||||
LogSessionId logSessionId = playbackSession.getSessionId();
|
||||
|
||||
mediaExtractorCompat.setLogSessionId(logSessionId);
|
||||
|
||||
assertThat(mediaExtractorCompat.getLogSessionId()).isEqualTo(logSessionId);
|
||||
}
|
||||
|
||||
// Internal methods.
|
||||
|
||||
private void assertReadSample(int trackIndex, long timeUs, int size, byte... sampleData) {
|
||||
|
@ -27,6 +27,7 @@ import android.content.res.AssetFileDescriptor;
|
||||
import android.media.MediaDataSource;
|
||||
import android.media.MediaExtractor;
|
||||
import android.media.MediaFormat;
|
||||
import android.media.metrics.LogSessionId;
|
||||
import android.net.Uri;
|
||||
import android.util.SparseArray;
|
||||
import androidx.annotation.IntDef;
|
||||
@ -138,6 +139,7 @@ public final class MediaExtractorCompat {
|
||||
private boolean tracksEnded;
|
||||
private int upstreamFormatsCount;
|
||||
@Nullable private Map<String, String> httpRequestHeaders;
|
||||
@Nullable private LogSessionId logSessionId;
|
||||
|
||||
/** Creates a new instance. */
|
||||
public MediaExtractorCompat(Context context) {
|
||||
@ -572,6 +574,20 @@ public final class MediaExtractorCompat {
|
||||
return sampleMetadataQueue.peekFirst().flags;
|
||||
}
|
||||
|
||||
/** Sets the {@link LogSessionId} for MediaExtractorCompat. */
|
||||
@RequiresApi(31)
|
||||
public void setLogSessionId(LogSessionId logSessionId) {
|
||||
if (!logSessionId.equals(LogSessionId.LOG_SESSION_ID_NONE)) {
|
||||
this.logSessionId = logSessionId;
|
||||
}
|
||||
}
|
||||
|
||||
/** Returns the {@link LogSessionId} for MediaExtractorCompat. */
|
||||
@RequiresApi(31)
|
||||
public LogSessionId getLogSessionId() {
|
||||
return logSessionId != null ? logSessionId : LogSessionId.LOG_SESSION_ID_NONE;
|
||||
}
|
||||
|
||||
@VisibleForTesting(otherwise = NONE)
|
||||
public Allocator getAllocator() {
|
||||
return allocator;
|
||||
|
Loading…
x
Reference in New Issue
Block a user