diff --git a/media/libstagefright/codecs/avc/dec/AVCDecoder.cpp b/media/libstagefright/codecs/avc/dec/AVCDecoder.cpp
index 7e18c1f..484c742 100644
--- a/media/libstagefright/codecs/avc/dec/AVCDecoder.cpp
+++ b/media/libstagefright/codecs/avc/dec/AVCDecoder.cpp
@@ -14,6 +14,10 @@
  * limitations under the License.
  */
 
+//#define LOG_NDEBUG 0
+#define LOG_TAG "AVCDecoder"
+#include <utils/Log.h>
+
 #include "AVCDecoder.h"
 
 #include "avcdec_api.h"
@@ -44,7 +48,8 @@
       mHandle(new tagAVCHandle),
       mInputBuffer(NULL),
       mAnchorTimeUs(0),
-      mNumSamplesOutput(0) {
+      mNumSamplesOutput(0),
+      mPendingSeekTimeUs(-1) {
     memset(mHandle, 0, sizeof(tagAVCHandle));
     mHandle->AVCObject = NULL;
     mHandle->userData = this;
@@ -152,6 +157,7 @@
 
     mAnchorTimeUs = 0;
     mNumSamplesOutput = 0;
+    mPendingSeekTimeUs = -1;
     mStarted = true;
 
     return OK;
@@ -195,6 +201,21 @@
         MediaBuffer **out, const ReadOptions *options) {
     *out = NULL;
 
+    int64_t seekTimeUs;
+    if (options && options->getSeekTo(&seekTimeUs)) {
+        LOGV("seek requested to %lld us (%.2f secs)", seekTimeUs, seekTimeUs / 1E6);
+
+        CHECK(seekTimeUs >= 0);
+        mPendingSeekTimeUs = seekTimeUs;
+
+        if (mInputBuffer) {
+            mInputBuffer->release();
+            mInputBuffer = NULL;
+        }
+
+        PVAVCDecReset(mHandle);
+    }
+
     if (mInputBuffer == NULL) {
         LOGV("fetching new input buffer.");
 
@@ -203,7 +224,19 @@
             mCodecSpecificData.removeAt(0);
         } else {
             for (;;) {
-                status_t err = mSource->read(&mInputBuffer);
+                if (mPendingSeekTimeUs >= 0) {
+                    LOGV("reading data from timestamp %lld (%.2f secs)",
+                         mPendingSeekTimeUs, mPendingSeekTimeUs / 1E6);
+                }
+
+                ReadOptions seekOptions;
+                if (mPendingSeekTimeUs >= 0) {
+                    seekOptions.setSeekTo(mPendingSeekTimeUs);
+                    mPendingSeekTimeUs = -1;
+                }
+                status_t err = mSource->read(&mInputBuffer, &seekOptions);
+                seekOptions.clearSeekTo();
+
                 if (err != OK) {
                     return err;
                 }
diff --git a/media/libstagefright/include/AVCDecoder.h b/media/libstagefright/include/AVCDecoder.h
index ee3cd47..621aa9a 100644
--- a/media/libstagefright/include/AVCDecoder.h
+++ b/media/libstagefright/include/AVCDecoder.h
@@ -57,6 +57,7 @@
 
     int64_t mAnchorTimeUs;
     int64_t mNumSamplesOutput;
+    int64_t mPendingSeekTimeUs;
 
     void addCodecSpecificData(const uint8_t *data, size_t size);
 
