OSDN Git Service

Return a runtime error instead of assertion if seeking beyond EOS in mpeg4 files.
authorAndreas Huber <andih@google.com>
Thu, 6 Oct 2011 16:07:12 +0000 (09:07 -0700)
committerAndreas Huber <andih@google.com>
Thu, 6 Oct 2011 16:07:12 +0000 (09:07 -0700)
Change-Id: If6531b4a1ff45460cfcdcc04764c5c63a2f5a749
related-to-bug: 5418914

media/libstagefright/MPEG4Extractor.cpp

index 3b79f06..1e24599 100644 (file)
@@ -1972,6 +1972,12 @@ status_t MPEG4Source::read(
                     sampleIndex, &syncSampleIndex, findFlags);
         }
 
+        uint32_t sampleTime;
+        if (err == OK) {
+            err = mSampleTable->getMetaDataForSample(
+                    sampleIndex, NULL, NULL, &sampleTime);
+        }
+
         if (err != OK) {
             if (err == ERROR_OUT_OF_RANGE) {
                 // An attempt to seek past the end of the stream would
@@ -1984,10 +1990,6 @@ status_t MPEG4Source::read(
             return err;
         }
 
-        uint32_t sampleTime;
-        CHECK_EQ((status_t)OK, mSampleTable->getMetaDataForSample(
-                    sampleIndex, NULL, NULL, &sampleTime));
-
         if (mode == ReadOptions::SEEK_CLOSEST) {
             targetSampleTimeUs = (sampleTime * 1000000ll) / mTimescale;
         }