summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/StagefrightMediaScanner.cpp
diff options
context:
space:
mode:
authorAndreas Huber <andih@google.com>2010-03-10 10:55:35 -0800
committerAndreas Huber <andih@google.com>2010-03-10 10:55:35 -0800
commit2e39c1ca101e01ff13b03129a87939e7982b25bf (patch)
tree358a6b713ba8244901ebc16860e9983c00bb53d2 /media/libstagefright/StagefrightMediaScanner.cpp
parentb699c595d78e8cd7f60c2c5102d40db07b18926b (diff)
downloadframeworks_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/StagefrightMediaScanner.cpp')
-rw-r--r--media/libstagefright/StagefrightMediaScanner.cpp20
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;
}