summaryrefslogtreecommitdiffstats
path: root/media/libstagefright
diff options
context:
space:
mode:
authorElliott Hughes <enh@google.com>2014-06-12 00:06:25 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2014-06-12 00:06:25 +0000
commit2a8270e6944fb3addfcba87f6885aaad196b8b88 (patch)
tree991b282008b0b02747b7b29c929e9d157dc08e62 /media/libstagefright
parentca44dc79b5a163030ab0963f80aa771871de092d (diff)
parentc323737dd46d724b4c1ec230b283f26ae2a22b4f (diff)
downloadframeworks_av-2a8270e6944fb3addfcba87f6885aaad196b8b88.zip
frameworks_av-2a8270e6944fb3addfcba87f6885aaad196b8b88.tar.gz
frameworks_av-2a8270e6944fb3addfcba87f6885aaad196b8b88.tar.bz2
am c323737d: Merge "Offer a type-safe album art interface."
* commit 'c323737dd46d724b4c1ec230b283f26ae2a22b4f': Offer a type-safe album art interface.
Diffstat (limited to 'media/libstagefright')
-rw-r--r--media/libstagefright/StagefrightMediaScanner.cpp10
-rw-r--r--media/libstagefright/StagefrightMetadataRetriever.cpp12
2 files changed, 5 insertions, 17 deletions
diff --git a/media/libstagefright/StagefrightMediaScanner.cpp b/media/libstagefright/StagefrightMediaScanner.cpp
index 2b51a29..f3fc3f6 100644
--- a/media/libstagefright/StagefrightMediaScanner.cpp
+++ b/media/libstagefright/StagefrightMediaScanner.cpp
@@ -202,7 +202,7 @@ MediaScanResult StagefrightMediaScanner::processFileInternal(
return MEDIA_SCAN_RESULT_OK;
}
-char *StagefrightMediaScanner::extractAlbumArt(int fd) {
+MediaAlbumArt *StagefrightMediaScanner::extractAlbumArt(int fd) {
ALOGV("extractAlbumArt %d", fd);
off64_t size = lseek64(fd, 0, SEEK_END);
@@ -214,15 +214,9 @@ char *StagefrightMediaScanner::extractAlbumArt(int fd) {
sp<MediaMetadataRetriever> mRetriever(new MediaMetadataRetriever);
if (mRetriever->setDataSource(fd, 0, size) == OK) {
sp<IMemory> mem = mRetriever->extractAlbumArt();
-
if (mem != NULL) {
MediaAlbumArt *art = static_cast<MediaAlbumArt *>(mem->pointer());
-
- char *data = (char *)malloc(art->mSize + 4);
- *(int32_t *)data = art->mSize;
- memcpy(&data[4], &art[1], art->mSize);
-
- return data;
+ return art->clone();
}
}
diff --git a/media/libstagefright/StagefrightMetadataRetriever.cpp b/media/libstagefright/StagefrightMetadataRetriever.cpp
index fcd9a85..e4d3c79 100644
--- a/media/libstagefright/StagefrightMetadataRetriever.cpp
+++ b/media/libstagefright/StagefrightMetadataRetriever.cpp
@@ -375,10 +375,7 @@ VideoFrame *StagefrightMetadataRetriever::getFrameAtTime(
size_t dataSize;
if (fileMeta->findData(kKeyAlbumArt, &type, &data, &dataSize)
&& mAlbumArt == NULL) {
- mAlbumArt = new MediaAlbumArt;
- mAlbumArt->mSize = dataSize;
- mAlbumArt->mData = new uint8_t[dataSize];
- memcpy(mAlbumArt->mData, data, dataSize);
+ mAlbumArt = MediaAlbumArt::fromData(dataSize, data);
}
VideoFrame *frame =
@@ -411,7 +408,7 @@ MediaAlbumArt *StagefrightMetadataRetriever::extractAlbumArt() {
}
if (mAlbumArt) {
- return new MediaAlbumArt(*mAlbumArt);
+ return mAlbumArt->clone();
}
return NULL;
@@ -480,10 +477,7 @@ void StagefrightMetadataRetriever::parseMetaData() {
size_t dataSize;
if (meta->findData(kKeyAlbumArt, &type, &data, &dataSize)
&& mAlbumArt == NULL) {
- mAlbumArt = new MediaAlbumArt;
- mAlbumArt->mSize = dataSize;
- mAlbumArt->mData = new uint8_t[dataSize];
- memcpy(mAlbumArt->mData, data, dataSize);
+ mAlbumArt = MediaAlbumArt::fromData(dataSize, data);
}
size_t numTracks = mExtractor->countTracks();