diff options
Diffstat (limited to 'media/libmedia/IMediaMetadataRetriever.cpp')
-rw-r--r-- | media/libmedia/IMediaMetadataRetriever.cpp | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/media/libmedia/IMediaMetadataRetriever.cpp b/media/libmedia/IMediaMetadataRetriever.cpp index 7e6d54b..bb066a0 100644 --- a/media/libmedia/IMediaMetadataRetriever.cpp +++ b/media/libmedia/IMediaMetadataRetriever.cpp @@ -20,6 +20,7 @@ #include <binder/Parcel.h> #include <media/IMediaMetadataRetriever.h> #include <utils/String8.h> +#include <utils/KeyedVector.h> // The binder is supposed to propagate the scheduler group across // the binder interface so that remote calls are executed with @@ -161,8 +162,22 @@ public: if (ret != NO_ERROR) { return NULL; } - return reply.readCString(); + const char* str = reply.readCString(); + if (str != NULL) { + String8 value(str); + if (mMetadata.indexOfKey(keyCode) < 0) { + mMetadata.add(keyCode, value); + } else { + mMetadata.replaceValueFor(keyCode, value); + } + return mMetadata.valueFor(keyCode).string(); + } else { + return NULL; + } } + +private: + KeyedVector<int, String8> mMetadata; }; IMPLEMENT_META_INTERFACE(MediaMetadataRetriever, "android.media.IMediaMetadataRetriever"); |