summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/OggExtractor.cpp
diff options
context:
space:
mode:
authorLajos Molnar <lajos@google.com>2014-07-21 13:47:21 -0700
committerLajos Molnar <lajos@google.com>2014-07-21 13:53:37 -0700
commit225d5b20409fd400bfa4ed5e9bc1d5babb498471 (patch)
treecdb6c6af42de0f14c7312cd0951937de29d7a2b0 /media/libstagefright/OggExtractor.cpp
parentac847e2ca8e0a81e013e1fb2fdf2cefe21db3b75 (diff)
downloadframeworks_av-225d5b20409fd400bfa4ed5e9bc1d5babb498471.zip
frameworks_av-225d5b20409fd400bfa4ed5e9bc1d5babb498471.tar.gz
frameworks_av-225d5b20409fd400bfa4ed5e9bc1d5babb498471.tar.bz2
stagefright: handle seeking to before first cue-point.
Bug: 16446994 Change-Id: Id3f9d6780a7c4f62171cbfa8675a67334e8dfa10
Diffstat (limited to 'media/libstagefright/OggExtractor.cpp')
-rw-r--r--media/libstagefright/OggExtractor.cpp14
1 files changed, 9 insertions, 5 deletions
diff --git a/media/libstagefright/OggExtractor.cpp b/media/libstagefright/OggExtractor.cpp
index 0838004..821bd81 100644
--- a/media/libstagefright/OggExtractor.cpp
+++ b/media/libstagefright/OggExtractor.cpp
@@ -320,22 +320,26 @@ status_t MyVorbisExtractor::seekToTime(int64_t timeUs) {
}
size_t left = 0;
- size_t right = mTableOfContents.size() - 1;
- while (left <= right) {
- size_t center = left + (right - left) / 2;
+ size_t right_plus_one = mTableOfContents.size();
+ while (left < right_plus_one) {
+ size_t center = left + (right_plus_one - left) / 2;
const TOCEntry &entry = mTableOfContents.itemAt(center);
if (timeUs < entry.mTimeUs) {
- right = center - 1;
+ right_plus_one = center;
} else if (timeUs > entry.mTimeUs) {
left = center + 1;
} else {
- left = right = center;
+ left = center;
break;
}
}
+ if (left == mTableOfContents.size()) {
+ --left;
+ }
+
const TOCEntry &entry = mTableOfContents.itemAt(left);
ALOGV("seeking to entry %zu / %zu at offset %lld",