summaryrefslogtreecommitdiffstats
path: root/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
diff options
context:
space:
mode:
authorRobert Shih <robertshih@google.com>2015-05-15 10:12:21 -0700
committerRobert Shih <robertshih@google.com>2015-05-15 11:09:38 -0700
commit055404ea1309d4cbc5d313332b026f86bd6f0da1 (patch)
tree6d09c7670510fa7055db77399fb1ddcb9292e9fd /media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
parent804a77d1045c6c4023f73a0975a09025b2e8eef2 (diff)
downloadframeworks_av-055404ea1309d4cbc5d313332b026f86bd6f0da1.zip
frameworks_av-055404ea1309d4cbc5d313332b026f86bd6f0da1.tar.gz
frameworks_av-055404ea1309d4cbc5d313332b026f86bd6f0da1.tar.bz2
HTTPLiveSource: fix non timed id3 track selection
Non timed id3 track selection generates INVALID_OPERATION when performed on the last track. The buggy logic reads: if (not last track) { // non-timed-id3 related work } else if (has timed id3) { // timed id3 related work } // last track but non timed id3 not handled It should read: if (has no timed id3 || not last track) { // non-timed-id3 track related work } else { // timed id3 related work } Bug: 21195284 Change-Id: I2ddb5d8e2a1ecba4cc071c7ee14c6697fe8e220d
Diffstat (limited to 'media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp')
-rw-r--r--media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp24
1 files changed, 11 insertions, 13 deletions
diff --git a/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp b/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
index 39b8d09..126625a 100644
--- a/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
+++ b/media/libmediaplayerservice/nuplayer/HTTPLiveSource.cpp
@@ -161,24 +161,22 @@ status_t NuPlayer::HTTPLiveSource::selectTrack(size_t trackIndex, bool select, i
status_t err = INVALID_OPERATION;
bool postFetchMsg = false, isSub = false;
- if (trackIndex != mLiveSession->getTrackCount() - 1) {
+ if (!mHasMetadata || trackIndex != mLiveSession->getTrackCount() - 1) {
err = mLiveSession->selectTrack(trackIndex, select);
postFetchMsg = select;
isSub = true;
} else {
- // metadata track
- if (mHasMetadata) {
- if (mMetadataSelected && !select) {
- err = OK;
- } else if (!mMetadataSelected && select) {
- postFetchMsg = true;
- err = OK;
- } else {
- err = BAD_VALUE; // behave as LiveSession::selectTrack
- }
-
- mMetadataSelected = select;
+ // metadata track; i.e. (mHasMetadata && trackIndex == mLiveSession->getTrackCount() - 1)
+ if (mMetadataSelected && !select) {
+ err = OK;
+ } else if (!mMetadataSelected && select) {
+ postFetchMsg = true;
+ err = OK;
+ } else {
+ err = BAD_VALUE; // behave as LiveSession::selectTrack
}
+
+ mMetadataSelected = select;
}
if (err == OK) {