diff options
author | Andreas Huber <andih@google.com> | 2010-03-10 10:55:35 -0800 |
---|---|---|
committer | Andreas Huber <andih@google.com> | 2010-03-10 10:55:35 -0800 |
commit | 2e39c1ca101e01ff13b03129a87939e7982b25bf (patch) | |
tree | 358a6b713ba8244901ebc16860e9983c00bb53d2 /media/libstagefright | |
parent | b699c595d78e8cd7f60c2c5102d40db07b18926b (diff) | |
download | frameworks_av-2e39c1ca101e01ff13b03129a87939e7982b25bf.zip frameworks_av-2e39c1ca101e01ff13b03129a87939e7982b25bf.tar.gz frameworks_av-2e39c1ca101e01ff13b03129a87939e7982b25bf.tar.bz2 |
Instead of instantiating StagefrightMetadataRetriever directly, instantiate a MediaMetadataRetriever which will do-the-right-thing(tm) even for .wma/.wmv/.asf files.
Change-Id: Ibda4b5268514934f14a3d49a564902bc670f4384
related-to-bug: 2074137
Diffstat (limited to 'media/libstagefright')
-rw-r--r-- | media/libstagefright/StagefrightMediaScanner.cpp | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/media/libstagefright/StagefrightMediaScanner.cpp b/media/libstagefright/StagefrightMediaScanner.cpp index b1eca2b..34fb2bc 100644 --- a/media/libstagefright/StagefrightMediaScanner.cpp +++ b/media/libstagefright/StagefrightMediaScanner.cpp @@ -20,7 +20,8 @@ #include <media/stagefright/StagefrightMediaScanner.h> -#include "include/StagefrightMetadataRetriever.h" +#include <media/mediametadataretriever.h> +#include <private/media/VideoFrame.h> // Sonivox includes #include <libsonivox/eas.h> @@ -32,7 +33,7 @@ namespace android { StagefrightMediaScanner::StagefrightMediaScanner() - : mRetriever(new StagefrightMetadataRetriever) { + : mRetriever(new MediaMetadataRetriever) { } StagefrightMediaScanner::~StagefrightMediaScanner() {} @@ -146,6 +147,8 @@ failure: status_t StagefrightMediaScanner::processFile( const char *path, const char *mimeType, MediaScannerClient &client) { + LOGV("processFile '%s'.", path); + client.setLocale(locale()); client.beginFile(); @@ -218,6 +221,8 @@ status_t StagefrightMediaScanner::processFile( } char *StagefrightMediaScanner::extractAlbumArt(int fd) { + LOGV("extractAlbumArt %d", fd); + off_t size = lseek(fd, 0, SEEK_END); if (size < 0) { return NULL; @@ -227,15 +232,14 @@ char *StagefrightMediaScanner::extractAlbumArt(int fd) { if (mRetriever->setDataSource(fd, 0, size) == OK && mRetriever->setMode( METADATA_MODE_FRAME_CAPTURE_ONLY) == OK) { - MediaAlbumArt *art = mRetriever->extractAlbumArt(); + sp<IMemory> mem = mRetriever->extractAlbumArt(); + + if (mem != NULL) { + MediaAlbumArt *art = static_cast<MediaAlbumArt *>(mem->pointer()); - if (art != NULL) { char *data = (char *)malloc(art->mSize + 4); *(int32_t *)data = art->mSize; - memcpy(&data[4], art->mData, art->mSize); - - delete art; - art = NULL; + memcpy(&data[4], &art[1], art->mSize); return data; } |