Merge "If we basically finished the preparation phase and are only buffering enough data to start playback, cancel this early on reset()."
This commit is contained in:
committed by
Android (Google) Code Review
commit
fb26350c00
@@ -412,6 +412,12 @@ void AwesomePlayer::reset_l() {
|
||||
LOGI("interrupting the connection process");
|
||||
mConnectingDataSource->disconnect();
|
||||
}
|
||||
|
||||
if (mFlags & PREPARING_CONNECTED) {
|
||||
// We are basically done preparing, we're just buffering
|
||||
// enough data to start playback, we can safely interrupt that.
|
||||
finishAsyncPrepare_l();
|
||||
}
|
||||
}
|
||||
|
||||
while (mFlags & PREPARING) {
|
||||
@@ -1625,7 +1631,7 @@ void AwesomePlayer::abortPrepare(status_t err) {
|
||||
}
|
||||
|
||||
mPrepareResult = err;
|
||||
mFlags &= ~(PREPARING|PREPARE_CANCELLED);
|
||||
mFlags &= ~(PREPARING|PREPARE_CANCELLED|PREPARING_CONNECTED);
|
||||
mAsyncPrepareEvent = NULL;
|
||||
mPreparedCondition.broadcast();
|
||||
}
|
||||
@@ -1673,6 +1679,8 @@ void AwesomePlayer::onPrepareAsyncEvent() {
|
||||
}
|
||||
}
|
||||
|
||||
mFlags |= PREPARING_CONNECTED;
|
||||
|
||||
if (mCachedSource != NULL || mRTSPController != NULL) {
|
||||
postBufferingEvent_l();
|
||||
} else {
|
||||
@@ -1692,7 +1700,7 @@ void AwesomePlayer::finishAsyncPrepare_l() {
|
||||
}
|
||||
|
||||
mPrepareResult = OK;
|
||||
mFlags &= ~(PREPARING|PREPARE_CANCELLED);
|
||||
mFlags &= ~(PREPARING|PREPARE_CANCELLED|PREPARING_CONNECTED);
|
||||
mFlags |= PREPARED;
|
||||
mAsyncPrepareEvent = NULL;
|
||||
mPreparedCondition.broadcast();
|
||||
|
||||
@@ -111,6 +111,11 @@ private:
|
||||
AUDIO_AT_EOS = 256,
|
||||
VIDEO_AT_EOS = 512,
|
||||
AUTO_LOOPING = 1024,
|
||||
|
||||
// We are basically done preparing but are currently buffering
|
||||
// sufficient data to begin playback and finish the preparation phase
|
||||
// for good.
|
||||
PREPARING_CONNECTED = 2048,
|
||||
};
|
||||
|
||||
mutable Mutex mLock;
|
||||
|
||||
Reference in New Issue
Block a user