From e8742b33dd03c0449f3c21f6d56c5f305b4628c9 Mon Sep 17 00:00:00 2001 From: ibaker Date: Wed, 31 Mar 2021 17:35:17 +0100 Subject: [PATCH] Use outputStreamEnded for MetadataRenderer#isEnded Issue: #8710 PiperOrigin-RevId: 366051836 --- RELEASENOTES.md | 3 +++ .../android/exoplayer2/metadata/MetadataRenderer.java | 7 ++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/RELEASENOTES.md b/RELEASENOTES.md index 5be599e01f..1dcd47886c 100644 --- a/RELEASENOTES.md +++ b/RELEASENOTES.md @@ -77,6 +77,9 @@ spec ([#8704](https://github.com/google/ExoPlayer/issues/8704)). * Support TTML `textEmphasis` attributes, used for Japanese boutens. * Support TTML `shear` attributes. +* Metadata: + * Ensure that timed metadata near the end of a period is not dropped + ([#8710](https://github.com/google/ExoPlayer/issues/8710)). * MediaSession extension: Remove dependency to core module and rely on common only. The `TimelineQueueEditor` uses a new `MediaDescriptionConverter` for this purpose and does not rely on the `ConcatenatingMediaSource` anymore. diff --git a/library/core/src/main/java/com/google/android/exoplayer2/metadata/MetadataRenderer.java b/library/core/src/main/java/com/google/android/exoplayer2/metadata/MetadataRenderer.java index 5ae7cca66c..a74eb456b5 100644 --- a/library/core/src/main/java/com/google/android/exoplayer2/metadata/MetadataRenderer.java +++ b/library/core/src/main/java/com/google/android/exoplayer2/metadata/MetadataRenderer.java @@ -58,6 +58,7 @@ public final class MetadataRenderer extends BaseRenderer implements Callback { private int pendingMetadataCount; @Nullable private MetadataDecoder decoder; private boolean inputStreamEnded; + private boolean outputStreamEnded; private long subsampleOffsetUs; /** @@ -118,6 +119,7 @@ public final class MetadataRenderer extends BaseRenderer implements Callback { protected void onPositionReset(long positionUs, boolean joining) { flushPendingMetadata(); inputStreamEnded = false; + outputStreamEnded = false; } @Override @@ -158,6 +160,9 @@ public final class MetadataRenderer extends BaseRenderer implements Callback { pendingMetadataIndex = (pendingMetadataIndex + 1) % MAX_PENDING_METADATA_COUNT; pendingMetadataCount--; } + if (inputStreamEnded && pendingMetadataCount == 0) { + outputStreamEnded = true; + } } /** @@ -198,7 +203,7 @@ public final class MetadataRenderer extends BaseRenderer implements Callback { @Override public boolean isEnded() { - return inputStreamEnded; + return outputStreamEnded; } @Override