From 515e855eae78aa495da58356486aaa666cb57fd1 Mon Sep 17 00:00:00 2001 From: James Dong Date: Wed, 25 May 2011 15:02:50 -0700 Subject: Extract embedded cover art (aka poster frame) in mp4 files Change-Id: Ic9421ee27b9aa3b27df00878b887de20f25d232b --- media/libstagefright/StagefrightMetadataRetriever.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) (limited to 'media/libstagefright/StagefrightMetadataRetriever.cpp') diff --git a/media/libstagefright/StagefrightMetadataRetriever.cpp b/media/libstagefright/StagefrightMetadataRetriever.cpp index 4c3dc47..de3957b 100644 --- a/media/libstagefright/StagefrightMetadataRetriever.cpp +++ b/media/libstagefright/StagefrightMetadataRetriever.cpp @@ -317,6 +317,17 @@ VideoFrame *StagefrightMetadataRetriever::getFrameAtTime( return NULL; } + const void *data; + uint32_t type; + size_t dataSize; + if (mExtractor->getMetaData()->findData(kKeyAlbumArt, &type, &data, &dataSize) + && mAlbumArt == NULL) { + mAlbumArt = new MediaAlbumArt; + mAlbumArt->mSize = dataSize; + mAlbumArt->mData = new uint8_t[dataSize]; + memcpy(mAlbumArt->mData, data, dataSize); + } + VideoFrame *frame = extractVideoFrameWithCodecFlags( &mClient, trackMeta, source, OMXCodec::kPreferSoftwareCodecs, @@ -408,7 +419,8 @@ void StagefrightMetadataRetriever::parseMetaData() { const void *data; uint32_t type; size_t dataSize; - if (meta->findData(kKeyAlbumArt, &type, &data, &dataSize)) { + if (meta->findData(kKeyAlbumArt, &type, &data, &dataSize) + && mAlbumArt == NULL) { mAlbumArt = new MediaAlbumArt; mAlbumArt->mSize = dataSize; mAlbumArt->mData = new uint8_t[dataSize]; -- cgit v1.1