mirror of
https://github.com/androidx/media.git
synced 2025-04-30 06:46:50 +08:00
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 (see0b40bc37ab
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:
parent
857e6ebee8
commit
6dfb387117
@ -167,10 +167,8 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
@Override
|
||||
public void release() {
|
||||
if (!released) {
|
||||
currentAssetLoader.release();
|
||||
released = true;
|
||||
}
|
||||
currentAssetLoader.release();
|
||||
released = true;
|
||||
}
|
||||
|
||||
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.
|
||||
checkState(sampleConsumer.queueInputBuffer());
|
||||
audioLoopingEnded = true;
|
||||
if (nonEndedTracks.decrementAndGet() == 0) {
|
||||
release();
|
||||
}
|
||||
nonEndedTracks.decrementAndGet();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -388,13 +384,8 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
if (nonEndedTracks.get() == 0) {
|
||||
switchAssetLoader();
|
||||
}
|
||||
} else {
|
||||
checkState(sampleConsumer.queueInputBuffer());
|
||||
if (nonEndedTracks.get() == 0) {
|
||||
release();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
checkState(sampleConsumer.queueInputBuffer());
|
||||
@ -472,17 +463,13 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
@Override
|
||||
public void signalEndOfVideoInput() {
|
||||
nonEndedTracks.decrementAndGet();
|
||||
boolean videoEnded =
|
||||
isLooping ? videoLoopingEnded : currentMediaItemIndex == editedMediaItems.size() - 1;
|
||||
if (videoEnded) {
|
||||
sampleConsumer.signalEndOfVideoInput();
|
||||
}
|
||||
if (nonEndedTracks.decrementAndGet() == 0) {
|
||||
if (videoEnded) {
|
||||
release();
|
||||
} else {
|
||||
switchAssetLoader();
|
||||
}
|
||||
} else if (nonEndedTracks.get() == 0) {
|
||||
switchAssetLoader();
|
||||
}
|
||||
}
|
||||
|
||||
@ -490,6 +477,9 @@ import java.util.concurrent.atomic.AtomicInteger;
|
||||
handler.post(
|
||||
() -> {
|
||||
try {
|
||||
if (released) {
|
||||
return;
|
||||
}
|
||||
addCurrentProcessedInput();
|
||||
totalDurationUs += currentAssetDurationUs;
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user