From c6323f9d72e0f08dd1e813550a56c8d2f0fd76a2 Mon Sep 17 00:00:00 2001 From: Andreas Huber Date: Wed, 21 Oct 2009 14:01:30 -0700 Subject: Some cleanup of OMXCodec code, make sure to ignore 0-length output buffers in the metadata retriever. --- media/libmediaplayerservice/StagefrightMetadataRetriever.cpp | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'media/libmediaplayerservice') 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); -- cgit v1.1