Commit 31a9680a by kimvde Committed by Tofunmi Adigun-Hameed

Refactor SequenceAssetLoader release

In the past, the SequenceAssetLoader was released in TransformerInternal
when the export ended.

https://github.com/google/ExoPlayer/commit/782f19edcf9dcc4ecf47dc32776429990c4a928f was made to release the SequenceAssetLoader earlier, when
loading ended. This was causing player release timeouts because the last
AssetLoader in the sequence was released before the SamplePipelines (see
https://github.com/google/ExoPlayer/commit/78669f874309aa1ea9d7679707afde8f747f0c2b for more information).

The code that was releasing the SequenceAssetLoader was first commented
out because we didn't have an understanding of what was happening.

This change removes the early SequenceAssetLoader release all together.
It doesn't have any effect as this code was already commented out.

PiperOrigin-RevId: 532065673
(cherry picked from commit ff515c1d74339df8dad11ed7b9ea6c571d3c90e9)
parent 45b51d26
...@@ -167,10 +167,8 @@ import java.util.concurrent.atomic.AtomicInteger; ...@@ -167,10 +167,8 @@ import java.util.concurrent.atomic.AtomicInteger;
@Override @Override
public void release() { public void release() {
if (!released) { currentAssetLoader.release();
currentAssetLoader.release(); released = true;
released = true;
}
} }
private void addCurrentProcessedInput() { private void addCurrentProcessedInput() {
...@@ -373,9 +371,7 @@ import java.util.concurrent.atomic.AtomicInteger; ...@@ -373,9 +371,7 @@ import java.util.concurrent.atomic.AtomicInteger;
// SampleConsumer so there is no need to handle the case where the sample wasn't queued. // SampleConsumer so there is no need to handle the case where the sample wasn't queued.
checkState(sampleConsumer.queueInputBuffer()); checkState(sampleConsumer.queueInputBuffer());
audioLoopingEnded = true; audioLoopingEnded = true;
if (nonEndedTracks.decrementAndGet() == 0) { nonEndedTracks.decrementAndGet();
release();
}
} }
return false; return false;
} }
...@@ -388,13 +384,8 @@ import java.util.concurrent.atomic.AtomicInteger; ...@@ -388,13 +384,8 @@ import java.util.concurrent.atomic.AtomicInteger;
if (nonEndedTracks.get() == 0) { if (nonEndedTracks.get() == 0) {
switchAssetLoader(); switchAssetLoader();
} }
} else { return true;
checkState(sampleConsumer.queueInputBuffer());
if (nonEndedTracks.get() == 0) {
release();
}
} }
return true;
} }
checkState(sampleConsumer.queueInputBuffer()); checkState(sampleConsumer.queueInputBuffer());
...@@ -472,17 +463,13 @@ import java.util.concurrent.atomic.AtomicInteger; ...@@ -472,17 +463,13 @@ import java.util.concurrent.atomic.AtomicInteger;
@Override @Override
public void signalEndOfVideoInput() { public void signalEndOfVideoInput() {
nonEndedTracks.decrementAndGet();
boolean videoEnded = boolean videoEnded =
isLooping ? videoLoopingEnded : currentMediaItemIndex == editedMediaItems.size() - 1; isLooping ? videoLoopingEnded : currentMediaItemIndex == editedMediaItems.size() - 1;
if (videoEnded) { if (videoEnded) {
sampleConsumer.signalEndOfVideoInput(); sampleConsumer.signalEndOfVideoInput();
} } else if (nonEndedTracks.get() == 0) {
if (nonEndedTracks.decrementAndGet() == 0) { switchAssetLoader();
if (videoEnded) {
release();
} else {
switchAssetLoader();
}
} }
} }
...@@ -490,6 +477,9 @@ import java.util.concurrent.atomic.AtomicInteger; ...@@ -490,6 +477,9 @@ import java.util.concurrent.atomic.AtomicInteger;
handler.post( handler.post(
() -> { () -> {
try { try {
if (released) {
return;
}
addCurrentProcessedInput(); addCurrentProcessedInput();
totalDurationUs += currentAssetDurationUs; totalDurationUs += currentAssetDurationUs;
currentAssetLoader.release(); currentAssetLoader.release();
...@@ -512,11 +502,5 @@ import java.util.concurrent.atomic.AtomicInteger; ...@@ -512,11 +502,5 @@ import java.util.concurrent.atomic.AtomicInteger;
} }
}); });
} }
private void release() {
// TODO(b/276415739): releasing the player earlier causes more release timeouts on emulator
// tests. Figure out what the cause is and uncomment the line below once fixed.
// handler.post(SequenceAssetLoader.this::release);
}
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment