diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:43 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2008-12-17 18:05:43 -0800 |
commit | 7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8 (patch) | |
tree | d9838a098f868ee2fcffc20627a8c9a33cb23377 /include/media/mediametadataretriever.h | |
parent | 2729ea9262ca60d93047e984739887cfc89e82eb (diff) | |
download | frameworks_av-7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8.zip frameworks_av-7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8.tar.gz frameworks_av-7b5eb023f8d87cca6d830ae6c11c6aadbe02aca8.tar.bz2 |
Code drop from //branches/cupcake/...@124589
Diffstat (limited to 'include/media/mediametadataretriever.h')
-rw-r--r-- | include/media/mediametadataretriever.h | 85 |
1 files changed, 37 insertions, 48 deletions
diff --git a/include/media/mediametadataretriever.h b/include/media/mediametadataretriever.h index 586dda1c..05cba30 100644 --- a/include/media/mediametadataretriever.h +++ b/include/media/mediametadataretriever.h @@ -18,10 +18,16 @@ #ifndef MEDIAMETADATARETRIEVER_H #define MEDIAMETADATARETRIEVER_H -#include <graphics/SkBitmap.h> // for SkBitmap +#include <utils/Errors.h> // for status_t +#include <utils/threads.h> +#include <utils/IMemory.h> +#include <media/IMediaMetadataRetriever.h> namespace android { +class IMediaPlayerService; +class IMediaMetadataRetriever; + // Keep these in synch with the constants defined in MediaMetadataRetriever.java // class. enum { @@ -38,62 +44,45 @@ enum { METADATA_KEY_NUM_TRACKS = 10, METADATA_KEY_IS_DRM_CRIPPLED = 11, METADATA_KEY_CODEC = 12, + METADATA_KEY_RATING = 13, + METADATA_KEY_COMMENT = 14, + METADATA_KEY_COPYRIGHT = 15, // Add more here... }; -// A utility class that holds the size and actual data in album art. -class MediaAlbumArt { + +class MediaMetadataRetriever: public RefBase +{ public: - MediaAlbumArt(): length(0), data(NULL) {} - MediaAlbumArt(const MediaAlbumArt& copy) { - // Don't be caught by uninitialized variables!! - length = 0; - data = NULL; - setData(copy.length, copy.data); - } - MediaAlbumArt(const char* url); - ~MediaAlbumArt() { clearData(); } + MediaMetadataRetriever(); + ~MediaMetadataRetriever(); + void disconnect(); + status_t setDataSource(const char* dataSourceUrl); + status_t setDataSource(int fd, int64_t offset, int64_t length); + status_t setMode(int mode); + status_t getMode(int* mode); + sp<IMemory> captureFrame(); + sp<IMemory> extractAlbumArt(); + const char* extractMetadata(int keyCode); - void clearData(); - status_t setData(unsigned int len, const char* buf); - char *getData() const { return copyData(length, data); } - unsigned int getLength() const { return length; } - private: - // Disable copy assignment operator! - MediaAlbumArt& operator=(const MediaAlbumArt& rhs); - static char* copyData(unsigned int len, const char* buf); - - unsigned int length; // Number of bytes in data. - char *data; // Actual binary data. -}; + static const sp<IMediaPlayerService>& getService(); -class MediaMetadataRetrieverImpl -{ -public: - virtual ~MediaMetadataRetrieverImpl() {}; - virtual status_t setDataSource(const char* dataSourceUrl) = 0; - virtual SkBitmap *captureFrame() = 0; - virtual const char* extractMetadata(int keyCode) = 0; - virtual MediaAlbumArt* extractAlbumArt() = 0; - virtual void setMode(int mode) = 0; -}; + class DeathNotifier: public IBinder::DeathRecipient + { + public: + DeathNotifier() {} + virtual ~DeathNotifier(); + virtual void binderDied(const wp<IBinder>& who); + }; -class MediaMetadataRetriever -{ -public: - static status_t setDataSource(const char* dataSourceUrl); - static SkBitmap *captureFrame(); - static const char* extractMetadata(int keyCode); - static MediaAlbumArt* extractAlbumArt(); - static void setMode(int mode); - static void release(); - static void create(); + static sp<DeathNotifier> sDeathNotifier; + static Mutex sServiceLock; + static sp<IMediaPlayerService> sService; + + Mutex mLock; + sp<IMediaMetadataRetriever> mRetriever; -private: - MediaMetadataRetriever() {} - static MediaMetadataRetrieverImpl *mRetriever; - static void *mLibHandler; }; }; // namespace android |