am f10d9404: Merge "StagefrightMediaScanner: Close metadata retriever after we are done scanning" into honeycomb
* commit 'f10d940413000732f1cd35bcb113c41019c7e3b7': StagefrightMediaScanner: Close metadata retriever after we are done scanning
This commit is contained in:
@@ -22,8 +22,6 @@
|
|||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
|
|
||||||
struct MediaMetadataRetriever;
|
|
||||||
|
|
||||||
struct StagefrightMediaScanner : public MediaScanner {
|
struct StagefrightMediaScanner : public MediaScanner {
|
||||||
StagefrightMediaScanner();
|
StagefrightMediaScanner();
|
||||||
virtual ~StagefrightMediaScanner();
|
virtual ~StagefrightMediaScanner();
|
||||||
@@ -35,8 +33,6 @@ struct StagefrightMediaScanner : public MediaScanner {
|
|||||||
virtual char *extractAlbumArt(int fd);
|
virtual char *extractAlbumArt(int fd);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
sp<MediaMetadataRetriever> mRetriever;
|
|
||||||
|
|
||||||
StagefrightMediaScanner(const StagefrightMediaScanner &);
|
StagefrightMediaScanner(const StagefrightMediaScanner &);
|
||||||
StagefrightMediaScanner &operator=(const StagefrightMediaScanner &);
|
StagefrightMediaScanner &operator=(const StagefrightMediaScanner &);
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -28,9 +28,7 @@
|
|||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
|
|
||||||
StagefrightMediaScanner::StagefrightMediaScanner()
|
StagefrightMediaScanner::StagefrightMediaScanner() {}
|
||||||
: mRetriever(new MediaMetadataRetriever) {
|
|
||||||
}
|
|
||||||
|
|
||||||
StagefrightMediaScanner::~StagefrightMediaScanner() {}
|
StagefrightMediaScanner::~StagefrightMediaScanner() {}
|
||||||
|
|
||||||
@@ -131,37 +129,41 @@ status_t StagefrightMediaScanner::processFile(
|
|||||||
if (status != OK) {
|
if (status != OK) {
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
} else if (mRetriever->setDataSource(path) == OK) {
|
} else {
|
||||||
const char *value;
|
sp<MediaMetadataRetriever> mRetriever(new MediaMetadataRetriever);
|
||||||
if ((value = mRetriever->extractMetadata(
|
|
||||||
METADATA_KEY_MIMETYPE)) != NULL) {
|
|
||||||
client.setMimeType(value);
|
|
||||||
}
|
|
||||||
|
|
||||||
struct KeyMap {
|
if (mRetriever->setDataSource(path) == OK) {
|
||||||
const char *tag;
|
|
||||||
int key;
|
|
||||||
};
|
|
||||||
static const KeyMap kKeyMap[] = {
|
|
||||||
{ "tracknumber", METADATA_KEY_CD_TRACK_NUMBER },
|
|
||||||
{ "discnumber", METADATA_KEY_DISC_NUMBER },
|
|
||||||
{ "album", METADATA_KEY_ALBUM },
|
|
||||||
{ "artist", METADATA_KEY_ARTIST },
|
|
||||||
{ "albumartist", METADATA_KEY_ALBUMARTIST },
|
|
||||||
{ "composer", METADATA_KEY_COMPOSER },
|
|
||||||
{ "genre", METADATA_KEY_GENRE },
|
|
||||||
{ "title", METADATA_KEY_TITLE },
|
|
||||||
{ "year", METADATA_KEY_YEAR },
|
|
||||||
{ "duration", METADATA_KEY_DURATION },
|
|
||||||
{ "writer", METADATA_KEY_WRITER },
|
|
||||||
{ "compilation", METADATA_KEY_COMPILATION },
|
|
||||||
};
|
|
||||||
static const size_t kNumEntries = sizeof(kKeyMap) / sizeof(kKeyMap[0]);
|
|
||||||
|
|
||||||
for (size_t i = 0; i < kNumEntries; ++i) {
|
|
||||||
const char *value;
|
const char *value;
|
||||||
if ((value = mRetriever->extractMetadata(kKeyMap[i].key)) != NULL) {
|
if ((value = mRetriever->extractMetadata(
|
||||||
client.addStringTag(kKeyMap[i].tag, value);
|
METADATA_KEY_MIMETYPE)) != NULL) {
|
||||||
|
client.setMimeType(value);
|
||||||
|
}
|
||||||
|
|
||||||
|
struct KeyMap {
|
||||||
|
const char *tag;
|
||||||
|
int key;
|
||||||
|
};
|
||||||
|
static const KeyMap kKeyMap[] = {
|
||||||
|
{ "tracknumber", METADATA_KEY_CD_TRACK_NUMBER },
|
||||||
|
{ "discnumber", METADATA_KEY_DISC_NUMBER },
|
||||||
|
{ "album", METADATA_KEY_ALBUM },
|
||||||
|
{ "artist", METADATA_KEY_ARTIST },
|
||||||
|
{ "albumartist", METADATA_KEY_ALBUMARTIST },
|
||||||
|
{ "composer", METADATA_KEY_COMPOSER },
|
||||||
|
{ "genre", METADATA_KEY_GENRE },
|
||||||
|
{ "title", METADATA_KEY_TITLE },
|
||||||
|
{ "year", METADATA_KEY_YEAR },
|
||||||
|
{ "duration", METADATA_KEY_DURATION },
|
||||||
|
{ "writer", METADATA_KEY_WRITER },
|
||||||
|
{ "compilation", METADATA_KEY_COMPILATION },
|
||||||
|
};
|
||||||
|
static const size_t kNumEntries = sizeof(kKeyMap) / sizeof(kKeyMap[0]);
|
||||||
|
|
||||||
|
for (size_t i = 0; i < kNumEntries; ++i) {
|
||||||
|
const char *value;
|
||||||
|
if ((value = mRetriever->extractMetadata(kKeyMap[i].key)) != NULL) {
|
||||||
|
client.addStringTag(kKeyMap[i].tag, value);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -180,6 +182,7 @@ char *StagefrightMediaScanner::extractAlbumArt(int fd) {
|
|||||||
}
|
}
|
||||||
lseek64(fd, 0, SEEK_SET);
|
lseek64(fd, 0, SEEK_SET);
|
||||||
|
|
||||||
|
sp<MediaMetadataRetriever> mRetriever(new MediaMetadataRetriever);
|
||||||
if (mRetriever->setDataSource(fd, 0, size) == OK) {
|
if (mRetriever->setDataSource(fd, 0, size) == OK) {
|
||||||
sp<IMemory> mem = mRetriever->extractAlbumArt();
|
sp<IMemory> mem = mRetriever->extractAlbumArt();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user