Loading media/libmediaplayerservice/nuplayer/NuPlayer.cpp +18 −3 Original line number Diff line number Diff line Loading @@ -191,7 +191,8 @@ NuPlayer::NuPlayer(pid_t pid) mResetting(false), mSourceStarted(false), mPaused(false), mPausedByClient(false), mPausedByClient(true), mPendingBufferingFlag(PENDING_BUFFERING_FLAG_NONE), mPausedForBuffering(false) { clearFlushComplete(); } Loading Loading @@ -715,6 +716,10 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { onStart(); } mPausedByClient = false; if (mPendingBufferingFlag != PENDING_BUFFERING_FLAG_NONE) { notifyListener(MEDIA_INFO, mPendingBufferingFlag, 0); mPendingBufferingFlag = PENDING_BUFFERING_FLAG_NONE; } break; } Loading Loading @@ -2147,7 +2152,12 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { case Source::kWhatBufferingStart: { if (mPausedByClient) { mPendingBufferingFlag = PENDING_BUFFERING_FLAG_START; } else { notifyListener(MEDIA_INFO, MEDIA_INFO_BUFFERING_START, 0); mPendingBufferingFlag = PENDING_BUFFERING_FLAG_NONE; } break; } Loading @@ -2169,7 +2179,12 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { case Source::kWhatBufferingEnd: { if (mPausedByClient) { mPendingBufferingFlag = PENDING_BUFFERING_FLAG_END; } else { notifyListener(MEDIA_INFO, MEDIA_INFO_BUFFERING_END, 0); mPendingBufferingFlag = PENDING_BUFFERING_FLAG_NONE; } break; } Loading media/libmediaplayerservice/nuplayer/NuPlayer.h +9 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,12 @@ private: FLUSH_CMD_SHUTDOWN, }; enum PendingBufferingFlag { PENDING_BUFFERING_FLAG_NONE = MEDIA_INFO_UNKNOWN, PENDING_BUFFERING_FLAG_START = MEDIA_INFO_BUFFERING_START, PENDING_BUFFERING_FLAG_END = MEDIA_INFO_BUFFERING_END, }; // Status of flush responses from the decoder and renderer. bool mFlushComplete[2][2]; Loading @@ -208,6 +214,9 @@ private: // still become true, when we pause internally due to buffering. bool mPausedByClient; // Pending buffering flag which is not sent to client due to being paused. PendingBufferingFlag mPendingBufferingFlag; // Pause state as requested by source (internally) due to buffering bool mPausedForBuffering; Loading Loading
media/libmediaplayerservice/nuplayer/NuPlayer.cpp +18 −3 Original line number Diff line number Diff line Loading @@ -191,7 +191,8 @@ NuPlayer::NuPlayer(pid_t pid) mResetting(false), mSourceStarted(false), mPaused(false), mPausedByClient(false), mPausedByClient(true), mPendingBufferingFlag(PENDING_BUFFERING_FLAG_NONE), mPausedForBuffering(false) { clearFlushComplete(); } Loading Loading @@ -715,6 +716,10 @@ void NuPlayer::onMessageReceived(const sp<AMessage> &msg) { onStart(); } mPausedByClient = false; if (mPendingBufferingFlag != PENDING_BUFFERING_FLAG_NONE) { notifyListener(MEDIA_INFO, mPendingBufferingFlag, 0); mPendingBufferingFlag = PENDING_BUFFERING_FLAG_NONE; } break; } Loading Loading @@ -2147,7 +2152,12 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { case Source::kWhatBufferingStart: { if (mPausedByClient) { mPendingBufferingFlag = PENDING_BUFFERING_FLAG_START; } else { notifyListener(MEDIA_INFO, MEDIA_INFO_BUFFERING_START, 0); mPendingBufferingFlag = PENDING_BUFFERING_FLAG_NONE; } break; } Loading @@ -2169,7 +2179,12 @@ void NuPlayer::onSourceNotify(const sp<AMessage> &msg) { case Source::kWhatBufferingEnd: { if (mPausedByClient) { mPendingBufferingFlag = PENDING_BUFFERING_FLAG_END; } else { notifyListener(MEDIA_INFO, MEDIA_INFO_BUFFERING_END, 0); mPendingBufferingFlag = PENDING_BUFFERING_FLAG_NONE; } break; } Loading
media/libmediaplayerservice/nuplayer/NuPlayer.h +9 −0 Original line number Diff line number Diff line Loading @@ -182,6 +182,12 @@ private: FLUSH_CMD_SHUTDOWN, }; enum PendingBufferingFlag { PENDING_BUFFERING_FLAG_NONE = MEDIA_INFO_UNKNOWN, PENDING_BUFFERING_FLAG_START = MEDIA_INFO_BUFFERING_START, PENDING_BUFFERING_FLAG_END = MEDIA_INFO_BUFFERING_END, }; // Status of flush responses from the decoder and renderer. bool mFlushComplete[2][2]; Loading @@ -208,6 +214,9 @@ private: // still become true, when we pause internally due to buffering. bool mPausedByClient; // Pending buffering flag which is not sent to client due to being paused. PendingBufferingFlag mPendingBufferingFlag; // Pause state as requested by source (internally) due to buffering bool mPausedForBuffering; Loading