diff options
| author | Andreas Huber <andih@google.com> | 2009-10-21 14:01:30 -0700 |
|---|---|---|
| committer | Andreas Huber <andih@google.com> | 2009-10-21 14:01:30 -0700 |
| commit | f68c168d366e8aad58454917f96344398a02efd8 (patch) | |
| tree | 13f7f5734703daff681fcb1a6ec7d2847fa595f0 | |
| parent | dad4780bbd6be0891ea8745bd274fc8d6882f071 (diff) | |
| download | frameworks_base-f68c168d366e8aad58454917f96344398a02efd8.zip frameworks_base-f68c168d366e8aad58454917f96344398a02efd8.tar.gz frameworks_base-f68c168d366e8aad58454917f96344398a02efd8.tar.bz2 | |
Some cleanup of OMXCodec code, make sure to ignore 0-length output buffers in the metadata retriever.
| -rw-r--r-- | include/media/stagefright/OMXCodec.h | 1 | ||||
| -rw-r--r-- | media/libmediaplayerservice/StagefrightMetadataRetriever.cpp | 12 | ||||
| -rw-r--r-- | media/libstagefright/OMXCodec.cpp | 4 |
3 files changed, 12 insertions, 5 deletions
diff --git a/include/media/stagefright/OMXCodec.h b/include/media/stagefright/OMXCodec.h index ec043a9..dfc902e 100644 --- a/include/media/stagefright/OMXCodec.h +++ b/include/media/stagefright/OMXCodec.h @@ -106,7 +106,6 @@ private: sp<IOMX> mOMX; IOMX::node_id mNode; - sp<OMXCodecObserver> mObserver; uint32_t mQuirks; bool mIsEncoder; char *mMIME; diff --git a/media/libmediaplayerservice/StagefrightMetadataRetriever.cpp b/media/libmediaplayerservice/StagefrightMetadataRetriever.cpp index 0e92162..c069128 100644 --- a/media/libmediaplayerservice/StagefrightMetadataRetriever.cpp +++ b/media/libmediaplayerservice/StagefrightMetadataRetriever.cpp @@ -129,11 +129,19 @@ VideoFrame *StagefrightMetadataRetriever::captureFrame() { decoder->start(); - MediaBuffer *buffer; + // Read one output buffer, ignore format change notifications + // and spurious empty buffers. + + MediaBuffer *buffer = NULL; status_t err; do { + if (buffer != NULL) { + buffer->release(); + buffer = NULL; + } err = decoder->read(&buffer); - } while (err == INFO_FORMAT_CHANGED); + } while (err == INFO_FORMAT_CHANGED + || (buffer != NULL && buffer->range_length() == 0)); if (err != OK) { CHECK_EQ(buffer, NULL); diff --git a/media/libstagefright/OMXCodec.cpp b/media/libstagefright/OMXCodec.cpp index 264271d..d692820 100644 --- a/media/libstagefright/OMXCodec.cpp +++ b/media/libstagefright/OMXCodec.cpp @@ -1065,8 +1065,8 @@ static bool formatHasNotablyChanged( return false; } - if (from.get() == NULL && to.get() != NULL - || from.get() != NULL && to.get() == NULL) { + if ((from.get() == NULL && to.get() != NULL) + || (from.get() != NULL && to.get() == NULL)) { return true; } |
