summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2009-10-21 14:01:30 -0700
committerAndreas Huber <andih@google.com>2009-10-21 14:01:30 -0700
commitf68c168d366e8aad58454917f96344398a02efd8 (patch)
tree13f7f5734703daff681fcb1a6ec7d2847fa595f0
parentdad4780bbd6be0891ea8745bd274fc8d6882f071 (diff)
downloadframeworks_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.h1
-rw-r--r--media/libmediaplayerservice/StagefrightMetadataRetriever.cpp12
-rw-r--r--media/libstagefright/OMXCodec.cpp4
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;
}