Restore equivalence
This commit is contained in:
parent
51405c9959
commit
aa57062199
@ -38,8 +38,8 @@ repositories {
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Next add a gradle compile dependency to the `build.gradle` file of your app
|
Next add a dependency in the `build.gradle` file of your app module. The
|
||||||
module. The following will add a dependency to the full library:
|
following will add a dependency to the full library:
|
||||||
|
|
||||||
```gradle
|
```gradle
|
||||||
implementation 'com.google.android.exoplayer:exoplayer:2.X.X'
|
implementation 'com.google.android.exoplayer:exoplayer:2.X.X'
|
||||||
|
@ -1929,12 +1929,12 @@ public final class MatroskaExtractor implements Extractor {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Builds initialization data for a {@link Format} from FourCC codec private data.
|
* Builds initialization data for a {@link Format} from FourCC codec private data.
|
||||||
* <p>
|
|
||||||
* VC1 and H263 are the only supported compression types.
|
|
||||||
*
|
*
|
||||||
* @return A pair object with the first object being the codec mime type
|
* <p>VC1 and H263 are the only supported compression types.
|
||||||
* and the second object the initialization data for the {@link Format},
|
*
|
||||||
* or null if the compression type is not a currently supported type (VC1 or H263).
|
* @return The codec mime type and initialization data. If the compression type is not supported
|
||||||
|
* then the mime type is set to {@link MimeTypes#VIDEO_UNKNOWN} and the initialization data
|
||||||
|
* is {@code null}.
|
||||||
* @throws ParserException If the initialization data could not be built.
|
* @throws ParserException If the initialization data could not be built.
|
||||||
*/
|
*/
|
||||||
private static Pair<String, List<byte[]>> parseFourCcPrivate(ParsableByteArray buffer)
|
private static Pair<String, List<byte[]>> parseFourCcPrivate(ParsableByteArray buffer)
|
||||||
@ -1950,8 +1950,10 @@ public final class MatroskaExtractor implements Extractor {
|
|||||||
int startOffset = buffer.getPosition() + 20;
|
int startOffset = buffer.getPosition() + 20;
|
||||||
byte[] bufferData = buffer.data;
|
byte[] bufferData = buffer.data;
|
||||||
for (int offset = startOffset; offset < bufferData.length - 4; offset++) {
|
for (int offset = startOffset; offset < bufferData.length - 4; offset++) {
|
||||||
if (bufferData[offset] == 0x00 && bufferData[offset + 1] == 0x00
|
if (bufferData[offset] == 0x00
|
||||||
&& bufferData[offset + 2] == 0x01 && bufferData[offset + 3] == 0x0F) {
|
&& bufferData[offset + 1] == 0x00
|
||||||
|
&& bufferData[offset + 2] == 0x01
|
||||||
|
&& bufferData[offset + 3] == 0x0F) {
|
||||||
// We've found the initialization data.
|
// We've found the initialization data.
|
||||||
byte[] initializationData = Arrays.copyOfRange(bufferData, offset, bufferData.length);
|
byte[] initializationData = Arrays.copyOfRange(bufferData, offset, bufferData.length);
|
||||||
return new Pair<>(MimeTypes.VIDEO_VC1, Collections.singletonList(initializationData));
|
return new Pair<>(MimeTypes.VIDEO_VC1, Collections.singletonList(initializationData));
|
||||||
|
@ -289,6 +289,7 @@ public abstract class DownloadService extends Service implements DownloadManager
|
|||||||
@Override
|
@Override
|
||||||
public void onIdle(DownloadManager downloadManager) {
|
public void onIdle(DownloadManager downloadManager) {
|
||||||
// Make sure startForeground is called before stopping.
|
// Make sure startForeground is called before stopping.
|
||||||
|
// Workaround for https://buganizer.corp.google.com/issues/69424260
|
||||||
if (Util.SDK_INT >= 26) {
|
if (Util.SDK_INT >= 26) {
|
||||||
Builder notificationBuilder = new Builder(this, getNotificationChannelId());
|
Builder notificationBuilder = new Builder(this, getNotificationChannelId());
|
||||||
Notification foregroundNotification = notificationBuilder.build();
|
Notification foregroundNotification = notificationBuilder.build();
|
||||||
|
@ -614,8 +614,8 @@ public class DefaultHttpDataSource implements HttpDataSource {
|
|||||||
}
|
}
|
||||||
String className = inputStream.getClass().getName();
|
String className = inputStream.getClass().getName();
|
||||||
if ("com.android.okhttp.internal.http.HttpTransport$ChunkedInputStream".equals(className)
|
if ("com.android.okhttp.internal.http.HttpTransport$ChunkedInputStream".equals(className)
|
||||||
|| "com.android.okhttp.internal.http.HttpTransport$FixedLengthInputStream".equals(
|
|| "com.android.okhttp.internal.http.HttpTransport$FixedLengthInputStream"
|
||||||
className)) {
|
.equals(className)) {
|
||||||
Class<?> superclass = inputStream.getClass().getSuperclass();
|
Class<?> superclass = inputStream.getClass().getSuperclass();
|
||||||
Method unexpectedEndOfInput = superclass.getDeclaredMethod("unexpectedEndOfInput");
|
Method unexpectedEndOfInput = superclass.getDeclaredMethod("unexpectedEndOfInput");
|
||||||
unexpectedEndOfInput.setAccessible(true);
|
unexpectedEndOfInput.setAccessible(true);
|
||||||
|
@ -89,173 +89,207 @@ public class EventLogger
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLoadingChanged(boolean isLoading) {
|
public void onLoadingChanged(boolean isLoading) {
|
||||||
logd(TAG, "loading [" + isLoading + "]");
|
logd("loading [" + isLoading + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerStateChanged(boolean playWhenReady, int state) {
|
public void onPlayerStateChanged(boolean playWhenReady, int state) {
|
||||||
logd(TAG, "state [" + getSessionTimeString() + ", " + playWhenReady + ", "
|
logd(
|
||||||
+ getStateString(state) + "]");
|
"state ["
|
||||||
|
+ getSessionTimeString()
|
||||||
|
+ ", "
|
||||||
|
+ playWhenReady
|
||||||
|
+ ", "
|
||||||
|
+ getStateString(state)
|
||||||
|
+ "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRepeatModeChanged(@Player.RepeatMode int repeatMode) {
|
public void onRepeatModeChanged(@Player.RepeatMode int repeatMode) {
|
||||||
logd(TAG, "repeatMode [" + getRepeatModeString(repeatMode) + "]");
|
logd("repeatMode [" + getRepeatModeString(repeatMode) + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {
|
public void onShuffleModeEnabledChanged(boolean shuffleModeEnabled) {
|
||||||
logd(TAG, "shuffleModeEnabled [" + shuffleModeEnabled + "]");
|
logd("shuffleModeEnabled [" + shuffleModeEnabled + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPositionDiscontinuity(@Player.DiscontinuityReason int reason) {
|
public void onPositionDiscontinuity(@Player.DiscontinuityReason int reason) {
|
||||||
logd(TAG, "positionDiscontinuity [" + getDiscontinuityReasonString(reason) + "]");
|
logd("positionDiscontinuity [" + getDiscontinuityReasonString(reason) + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {
|
public void onPlaybackParametersChanged(PlaybackParameters playbackParameters) {
|
||||||
logd(TAG, "playbackParameters " + String.format(
|
logd(
|
||||||
|
"playbackParameters "
|
||||||
|
+ String.format(
|
||||||
"[speed=%.2f, pitch=%.2f]", playbackParameters.speed, playbackParameters.pitch));
|
"[speed=%.2f, pitch=%.2f]", playbackParameters.speed, playbackParameters.pitch));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTimelineChanged(Timeline timeline, Object manifest,
|
public void onTimelineChanged(
|
||||||
@Player.TimelineChangeReason int reason) {
|
Timeline timeline, Object manifest, @Player.TimelineChangeReason int reason) {
|
||||||
int periodCount = timeline.getPeriodCount();
|
int periodCount = timeline.getPeriodCount();
|
||||||
int windowCount = timeline.getWindowCount();
|
int windowCount = timeline.getWindowCount();
|
||||||
logd(TAG, "timelineChanged [periodCount=" + periodCount + ", windowCount=" + windowCount
|
logd(
|
||||||
+ ", reason=" + getTimelineChangeReasonString(reason));
|
"timelineChanged [periodCount="
|
||||||
|
+ periodCount
|
||||||
|
+ ", windowCount="
|
||||||
|
+ windowCount
|
||||||
|
+ ", reason="
|
||||||
|
+ getTimelineChangeReasonString(reason));
|
||||||
for (int i = 0; i < Math.min(periodCount, MAX_TIMELINE_ITEM_LINES); i++) {
|
for (int i = 0; i < Math.min(periodCount, MAX_TIMELINE_ITEM_LINES); i++) {
|
||||||
timeline.getPeriod(i, period);
|
timeline.getPeriod(i, period);
|
||||||
logd(TAG, " " + "period [" + getTimeString(period.getDurationMs()) + "]");
|
logd(" " + "period [" + getTimeString(period.getDurationMs()) + "]");
|
||||||
}
|
}
|
||||||
if (periodCount > MAX_TIMELINE_ITEM_LINES) {
|
if (periodCount > MAX_TIMELINE_ITEM_LINES) {
|
||||||
logd(TAG, " ...");
|
logd(" ...");
|
||||||
}
|
}
|
||||||
for (int i = 0; i < Math.min(windowCount, MAX_TIMELINE_ITEM_LINES); i++) {
|
for (int i = 0; i < Math.min(windowCount, MAX_TIMELINE_ITEM_LINES); i++) {
|
||||||
timeline.getWindow(i, window);
|
timeline.getWindow(i, window);
|
||||||
logd(TAG, " " + "window [" + getTimeString(window.getDurationMs()) + ", "
|
logd(
|
||||||
+ window.isSeekable + ", " + window.isDynamic + "]");
|
" "
|
||||||
|
+ "window ["
|
||||||
|
+ getTimeString(window.getDurationMs())
|
||||||
|
+ ", "
|
||||||
|
+ window.isSeekable
|
||||||
|
+ ", "
|
||||||
|
+ window.isDynamic
|
||||||
|
+ "]");
|
||||||
}
|
}
|
||||||
if (windowCount > MAX_TIMELINE_ITEM_LINES) {
|
if (windowCount > MAX_TIMELINE_ITEM_LINES) {
|
||||||
logd(TAG, " ...");
|
logd(" ...");
|
||||||
}
|
}
|
||||||
logd(TAG, "]");
|
logd("]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlayerError(ExoPlaybackException e) {
|
public void onPlayerError(ExoPlaybackException e) {
|
||||||
loge(TAG, "playerFailed [" + getSessionTimeString() + "]", e);
|
loge("playerFailed [" + getSessionTimeString() + "]", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTracksChanged(TrackGroupArray ignored, TrackSelectionArray trackSelections) {
|
public void onTracksChanged(TrackGroupArray ignored, TrackSelectionArray trackSelections) {
|
||||||
MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
|
MappedTrackInfo mappedTrackInfo = trackSelector.getCurrentMappedTrackInfo();
|
||||||
if (mappedTrackInfo == null) {
|
if (mappedTrackInfo == null) {
|
||||||
logd(TAG, "Tracks []");
|
logd("Tracks []");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
logd(TAG, "Tracks [");
|
logd("Tracks [");
|
||||||
// Log tracks associated to renderers.
|
// Log tracks associated to renderers.
|
||||||
for (int rendererIndex = 0; rendererIndex < mappedTrackInfo.length; rendererIndex++) {
|
for (int rendererIndex = 0; rendererIndex < mappedTrackInfo.length; rendererIndex++) {
|
||||||
TrackGroupArray rendererTrackGroups = mappedTrackInfo.getTrackGroups(rendererIndex);
|
TrackGroupArray rendererTrackGroups = mappedTrackInfo.getTrackGroups(rendererIndex);
|
||||||
TrackSelection trackSelection = trackSelections.get(rendererIndex);
|
TrackSelection trackSelection = trackSelections.get(rendererIndex);
|
||||||
if (rendererTrackGroups.length > 0) {
|
if (rendererTrackGroups.length > 0) {
|
||||||
logd(TAG, " Renderer:" + rendererIndex + " [");
|
logd(" Renderer:" + rendererIndex + " [");
|
||||||
for (int groupIndex = 0; groupIndex < rendererTrackGroups.length; groupIndex++) {
|
for (int groupIndex = 0; groupIndex < rendererTrackGroups.length; groupIndex++) {
|
||||||
TrackGroup trackGroup = rendererTrackGroups.get(groupIndex);
|
TrackGroup trackGroup = rendererTrackGroups.get(groupIndex);
|
||||||
String adaptiveSupport = getAdaptiveSupportString(trackGroup.length,
|
String adaptiveSupport =
|
||||||
|
getAdaptiveSupportString(
|
||||||
|
trackGroup.length,
|
||||||
mappedTrackInfo.getAdaptiveSupport(rendererIndex, groupIndex, false));
|
mappedTrackInfo.getAdaptiveSupport(rendererIndex, groupIndex, false));
|
||||||
logd(TAG, " Group:" + groupIndex + ", adaptive_supported=" + adaptiveSupport + " [");
|
logd(" Group:" + groupIndex + ", adaptive_supported=" + adaptiveSupport + " [");
|
||||||
for (int trackIndex = 0; trackIndex < trackGroup.length; trackIndex++) {
|
for (int trackIndex = 0; trackIndex < trackGroup.length; trackIndex++) {
|
||||||
String status = getTrackStatusString(trackSelection, trackGroup, trackIndex);
|
String status = getTrackStatusString(trackSelection, trackGroup, trackIndex);
|
||||||
String formatSupport = getFormatSupportString(
|
String formatSupport =
|
||||||
|
getFormatSupportString(
|
||||||
mappedTrackInfo.getTrackFormatSupport(rendererIndex, groupIndex, trackIndex));
|
mappedTrackInfo.getTrackFormatSupport(rendererIndex, groupIndex, trackIndex));
|
||||||
logd(TAG, " " + status + " Track:" + trackIndex + ", "
|
logd(
|
||||||
|
" "
|
||||||
|
+ status
|
||||||
|
+ " Track:"
|
||||||
|
+ trackIndex
|
||||||
|
+ ", "
|
||||||
+ Format.toLogString(trackGroup.getFormat(trackIndex))
|
+ Format.toLogString(trackGroup.getFormat(trackIndex))
|
||||||
+ ", supported=" + formatSupport);
|
+ ", supported="
|
||||||
|
+ formatSupport);
|
||||||
}
|
}
|
||||||
logd(TAG, " ]");
|
logd(" ]");
|
||||||
}
|
}
|
||||||
// Log metadata for at most one of the tracks selected for the renderer.
|
// Log metadata for at most one of the tracks selected for the renderer.
|
||||||
if (trackSelection != null) {
|
if (trackSelection != null) {
|
||||||
for (int selectionIndex = 0; selectionIndex < trackSelection.length(); selectionIndex++) {
|
for (int selectionIndex = 0; selectionIndex < trackSelection.length(); selectionIndex++) {
|
||||||
Metadata metadata = trackSelection.getFormat(selectionIndex).metadata;
|
Metadata metadata = trackSelection.getFormat(selectionIndex).metadata;
|
||||||
if (metadata != null) {
|
if (metadata != null) {
|
||||||
logd(TAG, " Metadata [");
|
logd(" Metadata [");
|
||||||
printMetadata(metadata, " ");
|
printMetadata(metadata, " ");
|
||||||
logd(TAG, " ]");
|
logd(" ]");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logd(TAG, " ]");
|
logd(" ]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Log tracks not associated with a renderer.
|
// Log tracks not associated with a renderer.
|
||||||
TrackGroupArray unassociatedTrackGroups = mappedTrackInfo.getUnassociatedTrackGroups();
|
TrackGroupArray unassociatedTrackGroups = mappedTrackInfo.getUnassociatedTrackGroups();
|
||||||
if (unassociatedTrackGroups.length > 0) {
|
if (unassociatedTrackGroups.length > 0) {
|
||||||
logd(TAG, " Renderer:None [");
|
logd(" Renderer:None [");
|
||||||
for (int groupIndex = 0; groupIndex < unassociatedTrackGroups.length; groupIndex++) {
|
for (int groupIndex = 0; groupIndex < unassociatedTrackGroups.length; groupIndex++) {
|
||||||
logd(TAG, " Group:" + groupIndex + " [");
|
logd(" Group:" + groupIndex + " [");
|
||||||
TrackGroup trackGroup = unassociatedTrackGroups.get(groupIndex);
|
TrackGroup trackGroup = unassociatedTrackGroups.get(groupIndex);
|
||||||
for (int trackIndex = 0; trackIndex < trackGroup.length; trackIndex++) {
|
for (int trackIndex = 0; trackIndex < trackGroup.length; trackIndex++) {
|
||||||
String status = getTrackStatusString(false);
|
String status = getTrackStatusString(false);
|
||||||
String formatSupport = getFormatSupportString(
|
String formatSupport =
|
||||||
RendererCapabilities.FORMAT_UNSUPPORTED_TYPE);
|
getFormatSupportString(RendererCapabilities.FORMAT_UNSUPPORTED_TYPE);
|
||||||
logd(TAG, " " + status + " Track:" + trackIndex + ", "
|
logd(
|
||||||
|
" "
|
||||||
|
+ status
|
||||||
|
+ " Track:"
|
||||||
|
+ trackIndex
|
||||||
|
+ ", "
|
||||||
+ Format.toLogString(trackGroup.getFormat(trackIndex))
|
+ Format.toLogString(trackGroup.getFormat(trackIndex))
|
||||||
+ ", supported=" + formatSupport);
|
+ ", supported="
|
||||||
|
+ formatSupport);
|
||||||
}
|
}
|
||||||
logd(TAG, " ]");
|
logd(" ]");
|
||||||
}
|
}
|
||||||
logd(TAG, " ]");
|
logd(" ]");
|
||||||
}
|
}
|
||||||
logd(TAG, "]");
|
logd("]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onSeekProcessed() {
|
public void onSeekProcessed() {
|
||||||
logd(TAG, "seekProcessed");
|
logd("seekProcessed");
|
||||||
}
|
}
|
||||||
|
|
||||||
// MetadataOutput
|
// MetadataOutput
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onMetadata(Metadata metadata) {
|
public void onMetadata(Metadata metadata) {
|
||||||
logd(TAG, "onMetadata [");
|
logd("onMetadata [");
|
||||||
printMetadata(metadata, " ");
|
printMetadata(metadata, " ");
|
||||||
logd(TAG, "]");
|
logd("]");
|
||||||
}
|
}
|
||||||
|
|
||||||
// AudioRendererEventListener
|
// AudioRendererEventListener
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAudioEnabled(DecoderCounters counters) {
|
public void onAudioEnabled(DecoderCounters counters) {
|
||||||
logd(TAG, "audioEnabled [" + getSessionTimeString() + "]");
|
logd("audioEnabled [" + getSessionTimeString() + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAudioSessionId(int audioSessionId) {
|
public void onAudioSessionId(int audioSessionId) {
|
||||||
logd(TAG, "audioSessionId [" + audioSessionId + "]");
|
logd("audioSessionId [" + audioSessionId + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAudioDecoderInitialized(String decoderName, long elapsedRealtimeMs,
|
public void onAudioDecoderInitialized(
|
||||||
long initializationDurationMs) {
|
String decoderName, long elapsedRealtimeMs, long initializationDurationMs) {
|
||||||
logd(TAG, "audioDecoderInitialized [" + getSessionTimeString() + ", " + decoderName + "]");
|
logd("audioDecoderInitialized [" + getSessionTimeString() + ", " + decoderName + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAudioInputFormatChanged(Format format) {
|
public void onAudioInputFormatChanged(Format format) {
|
||||||
logd(TAG, "audioFormatChanged [" + getSessionTimeString() + ", " + Format.toLogString(format)
|
logd("audioFormatChanged [" + getSessionTimeString() + ", " + Format.toLogString(format) + "]");
|
||||||
+ "]");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAudioDisabled(DecoderCounters counters) {
|
public void onAudioDisabled(DecoderCounters counters) {
|
||||||
logd(TAG, "audioDisabled [" + getSessionTimeString() + "]");
|
logd("audioDisabled [" + getSessionTimeString() + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -268,40 +302,39 @@ public class EventLogger
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onVideoEnabled(DecoderCounters counters) {
|
public void onVideoEnabled(DecoderCounters counters) {
|
||||||
logd(TAG, "videoEnabled [" + getSessionTimeString() + "]");
|
logd("videoEnabled [" + getSessionTimeString() + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onVideoDecoderInitialized(String decoderName, long elapsedRealtimeMs,
|
public void onVideoDecoderInitialized(
|
||||||
long initializationDurationMs) {
|
String decoderName, long elapsedRealtimeMs, long initializationDurationMs) {
|
||||||
logd(TAG, "videoDecoderInitialized [" + getSessionTimeString() + ", " + decoderName + "]");
|
logd("videoDecoderInitialized [" + getSessionTimeString() + ", " + decoderName + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onVideoInputFormatChanged(Format format) {
|
public void onVideoInputFormatChanged(Format format) {
|
||||||
logd(TAG, "videoFormatChanged [" + getSessionTimeString() + ", " + Format.toLogString(format)
|
logd("videoFormatChanged [" + getSessionTimeString() + ", " + Format.toLogString(format) + "]");
|
||||||
+ "]");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onVideoDisabled(DecoderCounters counters) {
|
public void onVideoDisabled(DecoderCounters counters) {
|
||||||
logd(TAG, "videoDisabled [" + getSessionTimeString() + "]");
|
logd("videoDisabled [" + getSessionTimeString() + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDroppedFrames(int count, long elapsed) {
|
public void onDroppedFrames(int count, long elapsed) {
|
||||||
logd(TAG, "droppedFrames [" + getSessionTimeString() + ", " + count + "]");
|
logd("droppedFrames [" + getSessionTimeString() + ", " + count + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onVideoSizeChanged(int width, int height, int unappliedRotationDegrees,
|
public void onVideoSizeChanged(
|
||||||
float pixelWidthHeightRatio) {
|
int width, int height, int unappliedRotationDegrees, float pixelWidthHeightRatio) {
|
||||||
logd(TAG, "videoSizeChanged [" + width + ", " + height + "]");
|
logd("videoSizeChanged [" + width + ", " + height + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onRenderedFirstFrame(Surface surface) {
|
public void onRenderedFirstFrame(Surface surface) {
|
||||||
logd(TAG, "renderedFirstFrame [" + surface + "]");
|
logd("renderedFirstFrame [" + surface + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
// DefaultDrmSessionManager.EventListener
|
// DefaultDrmSessionManager.EventListener
|
||||||
@ -313,17 +346,17 @@ public class EventLogger
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDrmKeysRestored() {
|
public void onDrmKeysRestored() {
|
||||||
logd(TAG, "drmKeysRestored [" + getSessionTimeString() + "]");
|
logd("drmKeysRestored [" + getSessionTimeString() + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDrmKeysRemoved() {
|
public void onDrmKeysRemoved() {
|
||||||
logd(TAG, "drmKeysRemoved [" + getSessionTimeString() + "]");
|
logd("drmKeysRemoved [" + getSessionTimeString() + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDrmKeysLoaded() {
|
public void onDrmKeysLoaded() {
|
||||||
logd(TAG, "drmKeysLoaded [" + getSessionTimeString() + "]");
|
logd("drmKeysLoaded [" + getSessionTimeString() + "]");
|
||||||
}
|
}
|
||||||
|
|
||||||
// MediaSourceEventListener
|
// MediaSourceEventListener
|
||||||
@ -397,10 +430,29 @@ public class EventLogger
|
|||||||
// Do nothing.
|
// Do nothing.
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs a debug message.
|
||||||
|
*
|
||||||
|
* @param msg The message to log.
|
||||||
|
*/
|
||||||
|
protected void logd(String msg) {
|
||||||
|
Log.d(TAG, msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Logs an error message and exception.
|
||||||
|
*
|
||||||
|
* @param msg The message to log.
|
||||||
|
* @param tr The exception to log.
|
||||||
|
*/
|
||||||
|
protected void loge(String msg, Throwable tr) {
|
||||||
|
Log.e(TAG, msg, tr);
|
||||||
|
}
|
||||||
|
|
||||||
// Internal methods
|
// Internal methods
|
||||||
|
|
||||||
private void printInternalError(String type, Exception e) {
|
private void printInternalError(String type, Exception e) {
|
||||||
loge(TAG, "internalError [" + getSessionTimeString() + ", " + type + "]", e);
|
loge("internalError [" + getSessionTimeString() + ", " + type + "]", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void printMetadata(Metadata metadata, String prefix) {
|
private void printMetadata(Metadata metadata, String prefix) {
|
||||||
@ -408,37 +460,51 @@ public class EventLogger
|
|||||||
Metadata.Entry entry = metadata.get(i);
|
Metadata.Entry entry = metadata.get(i);
|
||||||
if (entry instanceof TextInformationFrame) {
|
if (entry instanceof TextInformationFrame) {
|
||||||
TextInformationFrame textInformationFrame = (TextInformationFrame) entry;
|
TextInformationFrame textInformationFrame = (TextInformationFrame) entry;
|
||||||
logd(TAG, prefix + String.format("%s: value=%s", textInformationFrame.id,
|
logd(
|
||||||
textInformationFrame.value));
|
prefix
|
||||||
|
+ String.format(
|
||||||
|
"%s: value=%s", textInformationFrame.id, textInformationFrame.value));
|
||||||
} else if (entry instanceof UrlLinkFrame) {
|
} else if (entry instanceof UrlLinkFrame) {
|
||||||
UrlLinkFrame urlLinkFrame = (UrlLinkFrame) entry;
|
UrlLinkFrame urlLinkFrame = (UrlLinkFrame) entry;
|
||||||
logd(TAG, prefix + String.format("%s: url=%s", urlLinkFrame.id, urlLinkFrame.url));
|
logd(prefix + String.format("%s: url=%s", urlLinkFrame.id, urlLinkFrame.url));
|
||||||
} else if (entry instanceof PrivFrame) {
|
} else if (entry instanceof PrivFrame) {
|
||||||
PrivFrame privFrame = (PrivFrame) entry;
|
PrivFrame privFrame = (PrivFrame) entry;
|
||||||
logd(TAG, prefix + String.format("%s: owner=%s", privFrame.id, privFrame.owner));
|
logd(prefix + String.format("%s: owner=%s", privFrame.id, privFrame.owner));
|
||||||
} else if (entry instanceof GeobFrame) {
|
} else if (entry instanceof GeobFrame) {
|
||||||
GeobFrame geobFrame = (GeobFrame) entry;
|
GeobFrame geobFrame = (GeobFrame) entry;
|
||||||
logd(TAG, prefix + String.format("%s: mimeType=%s, filename=%s, description=%s",
|
logd(
|
||||||
|
prefix
|
||||||
|
+ String.format(
|
||||||
|
"%s: mimeType=%s, filename=%s, description=%s",
|
||||||
geobFrame.id, geobFrame.mimeType, geobFrame.filename, geobFrame.description));
|
geobFrame.id, geobFrame.mimeType, geobFrame.filename, geobFrame.description));
|
||||||
} else if (entry instanceof ApicFrame) {
|
} else if (entry instanceof ApicFrame) {
|
||||||
ApicFrame apicFrame = (ApicFrame) entry;
|
ApicFrame apicFrame = (ApicFrame) entry;
|
||||||
logd(TAG, prefix + String.format("%s: mimeType=%s, description=%s",
|
logd(
|
||||||
|
prefix
|
||||||
|
+ String.format(
|
||||||
|
"%s: mimeType=%s, description=%s",
|
||||||
apicFrame.id, apicFrame.mimeType, apicFrame.description));
|
apicFrame.id, apicFrame.mimeType, apicFrame.description));
|
||||||
} else if (entry instanceof CommentFrame) {
|
} else if (entry instanceof CommentFrame) {
|
||||||
CommentFrame commentFrame = (CommentFrame) entry;
|
CommentFrame commentFrame = (CommentFrame) entry;
|
||||||
logd(TAG, prefix + String.format("%s: language=%s, description=%s", commentFrame.id,
|
logd(
|
||||||
commentFrame.language, commentFrame.description));
|
prefix
|
||||||
|
+ String.format(
|
||||||
|
"%s: language=%s, description=%s",
|
||||||
|
commentFrame.id, commentFrame.language, commentFrame.description));
|
||||||
} else if (entry instanceof Id3Frame) {
|
} else if (entry instanceof Id3Frame) {
|
||||||
Id3Frame id3Frame = (Id3Frame) entry;
|
Id3Frame id3Frame = (Id3Frame) entry;
|
||||||
logd(TAG, prefix + String.format("%s", id3Frame.id));
|
logd(prefix + id3Frame.id);
|
||||||
} else if (entry instanceof EventMessage) {
|
} else if (entry instanceof EventMessage) {
|
||||||
EventMessage eventMessage = (EventMessage) entry;
|
EventMessage eventMessage = (EventMessage) entry;
|
||||||
logd(TAG, prefix + String.format("EMSG: scheme=%s, id=%d, value=%s",
|
logd(
|
||||||
|
prefix
|
||||||
|
+ String.format(
|
||||||
|
"EMSG: scheme=%s, id=%d, value=%s",
|
||||||
eventMessage.schemeIdUri, eventMessage.id, eventMessage.value));
|
eventMessage.schemeIdUri, eventMessage.id, eventMessage.value));
|
||||||
} else if (entry instanceof SpliceCommand) {
|
} else if (entry instanceof SpliceCommand) {
|
||||||
String description =
|
String description =
|
||||||
String.format("SCTE-35 splice command: type=%s.", entry.getClass().getSimpleName());
|
String.format("SCTE-35 splice command: type=%s.", entry.getClass().getSimpleName());
|
||||||
logd(TAG, prefix + description);
|
logd(prefix + description);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -555,11 +621,4 @@ public class EventLogger
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void logd(String tag, String msg) {
|
|
||||||
Log.d(tag, msg);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void loge(String tag, String msg, Throwable tr) {
|
|
||||||
Log.e(tag, msg, tr);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user