mirror of
https://github.com/androidx/media.git
synced 2025-05-09 16:40:55 +08:00
Use helper method to disable Renderers.
Removes duplicated code and starts cleaning up handling of media clocks. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=174829840
This commit is contained in:
parent
ea80c3e456
commit
f014b67d3e
@ -718,11 +718,9 @@ import java.io.IOException;
|
|||||||
if (playingPeriodHolder != newPlayingPeriodHolder
|
if (playingPeriodHolder != newPlayingPeriodHolder
|
||||||
|| playingPeriodHolder != readingPeriodHolder) {
|
|| playingPeriodHolder != readingPeriodHolder) {
|
||||||
for (Renderer renderer : enabledRenderers) {
|
for (Renderer renderer : enabledRenderers) {
|
||||||
renderer.disable();
|
disableRenderer(renderer);
|
||||||
}
|
}
|
||||||
enabledRenderers = new Renderer[0];
|
enabledRenderers = new Renderer[0];
|
||||||
rendererMediaClock = null;
|
|
||||||
rendererMediaClockSource = null;
|
|
||||||
playingPeriodHolder = null;
|
playingPeriodHolder = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -801,13 +799,10 @@ import java.io.IOException;
|
|||||||
handler.removeMessages(MSG_DO_SOME_WORK);
|
handler.removeMessages(MSG_DO_SOME_WORK);
|
||||||
rebuffering = false;
|
rebuffering = false;
|
||||||
standaloneMediaClock.stop();
|
standaloneMediaClock.stop();
|
||||||
rendererMediaClock = null;
|
|
||||||
rendererMediaClockSource = null;
|
|
||||||
rendererPositionUs = RENDERER_TIMESTAMP_OFFSET_US;
|
rendererPositionUs = RENDERER_TIMESTAMP_OFFSET_US;
|
||||||
for (Renderer renderer : enabledRenderers) {
|
for (Renderer renderer : enabledRenderers) {
|
||||||
try {
|
try {
|
||||||
ensureStopped(renderer);
|
disableRenderer(renderer);
|
||||||
renderer.disable();
|
|
||||||
} catch (ExoPlaybackException | RuntimeException e) {
|
} catch (ExoPlaybackException | RuntimeException e) {
|
||||||
// There's nothing we can do.
|
// There's nothing we can do.
|
||||||
Log.e(TAG, "Stop failed.", e);
|
Log.e(TAG, "Stop failed.", e);
|
||||||
@ -853,6 +848,15 @@ import java.io.IOException;
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void disableRenderer(Renderer renderer) throws ExoPlaybackException {
|
||||||
|
if (renderer == rendererMediaClockSource) {
|
||||||
|
rendererMediaClock = null;
|
||||||
|
rendererMediaClockSource = null;
|
||||||
|
}
|
||||||
|
ensureStopped(renderer);
|
||||||
|
renderer.disable();
|
||||||
|
}
|
||||||
|
|
||||||
private void reselectTracksInternal() throws ExoPlaybackException {
|
private void reselectTracksInternal() throws ExoPlaybackException {
|
||||||
if (playingPeriodHolder == null) {
|
if (playingPeriodHolder == null) {
|
||||||
// We don't have tracks yet, so we don't care.
|
// We don't have tracks yet, so we don't care.
|
||||||
@ -905,12 +909,7 @@ import java.io.IOException;
|
|||||||
if (rendererWasEnabledFlags[i]) {
|
if (rendererWasEnabledFlags[i]) {
|
||||||
if (sampleStream != renderer.getStream()) {
|
if (sampleStream != renderer.getStream()) {
|
||||||
// We need to disable the renderer.
|
// We need to disable the renderer.
|
||||||
if (renderer == rendererMediaClockSource) {
|
disableRenderer(renderer);
|
||||||
rendererMediaClock = null;
|
|
||||||
rendererMediaClockSource = null;
|
|
||||||
}
|
|
||||||
ensureStopped(renderer);
|
|
||||||
renderer.disable();
|
|
||||||
} else if (streamResetFlags[i]) {
|
} else if (streamResetFlags[i]) {
|
||||||
// The renderer will continue to consume from its current stream, but needs to be reset.
|
// The renderer will continue to consume from its current stream, but needs to be reset.
|
||||||
renderer.resetPosition(rendererPositionUs);
|
renderer.resetPosition(rendererPositionUs);
|
||||||
@ -1453,12 +1452,7 @@ import java.io.IOException;
|
|||||||
// The renderer should be disabled before playing the next period, either because it's not
|
// The renderer should be disabled before playing the next period, either because it's not
|
||||||
// needed to play the next period, or because we need to re-enable it as its current stream
|
// needed to play the next period, or because we need to re-enable it as its current stream
|
||||||
// is final and it's not reading ahead.
|
// is final and it's not reading ahead.
|
||||||
if (renderer == rendererMediaClockSource) {
|
disableRenderer(renderer);
|
||||||
rendererMediaClock = null;
|
|
||||||
rendererMediaClockSource = null;
|
|
||||||
}
|
|
||||||
ensureStopped(renderer);
|
|
||||||
renderer.disable();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user