summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/timedtext/TimedTextDriver.cpp
diff options
context:
space:
mode:
authorInsun Kang <insun@google.com>2012-06-18 16:51:48 +0900
committerInsun Kang <insun@google.com>2012-08-02 11:56:07 +0900
commit6472badc497a9e748411f8c8c9ed5d83ef335a85 (patch)
tree682bc926abcc04dff0783b1fa4ecb379d2908cb5 /media/libstagefright/timedtext/TimedTextDriver.cpp
parentbb6bc8491fe819f96e1902e56694715cb110ce94 (diff)
downloadframeworks_av-6472badc497a9e748411f8c8c9ed5d83ef335a85.zip
frameworks_av-6472badc497a9e748411f8c8c9ed5d83ef335a85.tar.gz
frameworks_av-6472badc497a9e748411f8c8c9ed5d83ef335a85.tar.bz2
Fix: status checking in TimedTextDriver.
o fixes seeking error when there's no enabled text track. o clean up status checking code for deselectTrack. o fixes a potential bug : pause->backward seek can trigger unwanted resume. Bug: 6682160 Change-Id: I03d8788b27fb9c0a6092be83ad3578ccf3266905 (cherry picked from commit 2dafb6071d4f14e0e208912500694912211aa26b)
Diffstat (limited to 'media/libstagefright/timedtext/TimedTextDriver.cpp')
-rw-r--r--media/libstagefright/timedtext/TimedTextDriver.cpp36
1 files changed, 28 insertions, 8 deletions
diff --git a/media/libstagefright/timedtext/TimedTextDriver.cpp b/media/libstagefright/timedtext/TimedTextDriver.cpp
index 1a0dc7b..71da803 100644
--- a/media/libstagefright/timedtext/TimedTextDriver.cpp
+++ b/media/libstagefright/timedtext/TimedTextDriver.cpp
@@ -145,21 +145,41 @@ status_t TimedTextDriver::selectTrack(size_t index) {
}
status_t TimedTextDriver::unselectTrack(size_t index) {
+ Mutex::Autolock autoLock(mLock);
if (mCurrentTrackIndex != index) {
return INVALID_OPERATION;
}
- status_t err = pause();
- if (err != OK) {
- return err;
+ switch (mState) {
+ case UNINITIALIZED:
+ return INVALID_OPERATION;
+ case PLAYING:
+ mPlayer->pause();
+ mState = UNINITIALIZED;
+ return OK;
+ case PAUSED:
+ mState = UNINITIALIZED;
+ return OK;
+ default:
+ TRESPASS();
}
- Mutex::Autolock autoLock(mLock);
- mState = UNINITIALIZED;
- return OK;
+ return UNKNOWN_ERROR;
}
status_t TimedTextDriver::seekToAsync(int64_t timeUs) {
- mPlayer->seekToAsync(timeUs);
- return OK;
+ Mutex::Autolock autoLock(mLock);
+ switch (mState) {
+ case UNINITIALIZED:
+ return INVALID_OPERATION;
+ case PAUSED:
+ mPlayer->seekToAsync(timeUs);
+ return OK;
+ case PLAYING:
+ mPlayer->seekToAsync(timeUs);
+ return OK;
+ defaut:
+ TRESPASS();
+ }
+ return UNKNOWN_ERROR;
}
status_t TimedTextDriver::addInBandTextSource(