diff options
author | Andreas Huber <andih@google.com> | 2010-10-06 16:43:57 -0700 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-10-07 09:19:25 -0700 |
commit | 2b82e9652ba049e754c2cc74e381282f231d5fbf (patch) | |
tree | 8b4d7249f6a0ae009088918f19d17be00d36ea10 /media/libstagefright/StagefrightMetadataRetriever.cpp | |
parent | 0bcae473ba1cd1d72e7cef8fbab449db060dc8d7 (diff) | |
download | frameworks_av-2b82e9652ba049e754c2cc74e381282f231d5fbf.zip frameworks_av-2b82e9652ba049e754c2cc74e381282f231d5fbf.tar.gz frameworks_av-2b82e9652ba049e754c2cc74e381282f231d5fbf.tar.bz2 |
On this particular device the hardware video decoder spits out buffers that don't actually contain our video data, so we cannot use them to restore the video frame after suspend/resume.
Change-Id: I1b8fe68c1766299844fe84ebbff49cb8b3e4cc7c
related-to-bug: 3070094
Diffstat (limited to 'media/libstagefright/StagefrightMetadataRetriever.cpp')
-rw-r--r-- | media/libstagefright/StagefrightMetadataRetriever.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/media/libstagefright/StagefrightMetadataRetriever.cpp b/media/libstagefright/StagefrightMetadataRetriever.cpp index 9d89c20..af9c70c 100644 --- a/media/libstagefright/StagefrightMetadataRetriever.cpp +++ b/media/libstagefright/StagefrightMetadataRetriever.cpp @@ -159,6 +159,20 @@ static VideoFrame *extractVideoFrameWithCodecFlags( LOGV("successfully decoded video frame."); + int32_t unreadable; + if (buffer->meta_data()->findInt32(kKeyIsUnreadable, &unreadable) + && unreadable != 0) { + LOGV("video frame is unreadable, decoder does not give us access " + "to the video data."); + + buffer->release(); + buffer = NULL; + + decoder->stop(); + + return NULL; + } + int64_t timeUs; CHECK(buffer->meta_data()->findInt64(kKeyTime, &timeUs)); if (thumbNailTime >= 0) { |