Refactor SequenceAssetLoader release

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

fc539da061 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
0b40bc37ab 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
This commit is contained in:
kimvde 2023-05-15 12:10:21 +01:00 committed by Ian Baker
parent 857e6ebee8
commit 6dfb387117

View File

@ -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;
// 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;
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;
@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;
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;
} }
}); });
} }
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);
}
} }
} }