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 | c6323f9d72e0f08dd1e813550a56c8d2f0fd76a2 (patch) | |
tree | e655f9a2780ffab04697fb98b3d4d1fbb2477896 /media/libmediaplayerservice | |
parent | 12658b720b176b7d934444256d07ba3c595d9b44 (diff) | |
download | frameworks_av-c6323f9d72e0f08dd1e813550a56c8d2f0fd76a2.zip frameworks_av-c6323f9d72e0f08dd1e813550a56c8d2f0fd76a2.tar.gz frameworks_av-c6323f9d72e0f08dd1e813550a56c8d2f0fd76a2.tar.bz2 |
Some cleanup of OMXCodec code, make sure to ignore 0-length output buffers in the metadata retriever.
Diffstat (limited to 'media/libmediaplayerservice')
-rw-r--r-- | media/libmediaplayerservice/StagefrightMetadataRetriever.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
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); |