From 005d8560b7f4cde9de58c1b62a118d1b73d8c0a4 Mon Sep 17 00:00:00 2001 From: tonihei Date: Mon, 17 Jan 2022 16:46:47 +0000 Subject: [PATCH] Use Util method to infer stream type instead of just mime type. The MediaMetricsListener currently just looks at the mime type and doesn't use the inference based on the URI if no mime type is set. Also change default type to OTHER to avoid classifying streams from URLs without clear file extension as progressive. PiperOrigin-RevId: 422373381 --- .../analytics/MediaMetricsListener.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/analytics/MediaMetricsListener.java b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/analytics/MediaMetricsListener.java index d1289112b8..9fb0b2ac7d 100644 --- a/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/analytics/MediaMetricsListener.java +++ b/libraries/exoplayer/src/main/java/androidx/media3/exoplayer/analytics/MediaMetricsListener.java @@ -40,11 +40,11 @@ import android.util.Pair; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.media3.common.C; +import androidx.media3.common.C.ContentType; import androidx.media3.common.DrmInitData; import androidx.media3.common.Format; import androidx.media3.common.MediaItem; import androidx.media3.common.MediaLibraryInfo; -import androidx.media3.common.MimeTypes; import androidx.media3.common.ParserException; import androidx.media3.common.PlaybackException; import androidx.media3.common.Player; @@ -638,19 +638,23 @@ public final class MediaMetricsListener } private static int getStreamType(MediaItem mediaItem) { - if (mediaItem.localConfiguration == null || mediaItem.localConfiguration.mimeType == null) { + if (mediaItem.localConfiguration == null) { return PlaybackMetrics.STREAM_TYPE_UNKNOWN; } - String mimeType = mediaItem.localConfiguration.mimeType; - switch (mimeType) { - case MimeTypes.APPLICATION_M3U8: + @ContentType + int contentType = + Util.inferContentTypeForUriAndMimeType( + mediaItem.localConfiguration.uri, mediaItem.localConfiguration.mimeType); + switch (contentType) { + case C.TYPE_HLS: return PlaybackMetrics.STREAM_TYPE_HLS; - case MimeTypes.APPLICATION_MPD: + case C.TYPE_DASH: return PlaybackMetrics.STREAM_TYPE_DASH; - case MimeTypes.APPLICATION_SS: + case C.TYPE_SS: return PlaybackMetrics.STREAM_TYPE_SS; + case C.TYPE_RTSP: default: - return PlaybackMetrics.STREAM_TYPE_PROGRESSIVE; + return PlaybackMetrics.STREAM_TYPE_OTHER; } }