diff options
author | Gloria Wang <gwang@google.com> | 2010-06-22 13:55:38 -0700 |
---|---|---|
committer | Gloria Wang <gwang@google.com> | 2010-10-25 12:16:56 -0700 |
commit | dcd25efb46c41c8d24a0a9cf61fb57f84149709e (patch) | |
tree | 6b6d165ba952924f1cd1b77f3a0903e5da31445a /include/media | |
parent | 2272ee27d9022d173b6eab45c409b3c3f57f30ec (diff) | |
download | frameworks_av-dcd25efb46c41c8d24a0a9cf61fb57f84149709e.zip frameworks_av-dcd25efb46c41c8d24a0a9cf61fb57f84149709e.tar.gz frameworks_av-dcd25efb46c41c8d24a0a9cf61fb57f84149709e.tar.bz2 |
DRM framework support:
- add a sniffer for DRM files
- add DRMSource and DRMExtractor for es_based DRM
- add pread in FileSource.cpp for container_based DRM
- add native DRM framework API calls in the player for
DRM audio/video playback
Change-Id: I4b9ef19165c9b4f44ff40eeededb9a665e78a90f
Diffstat (limited to 'include/media')
-rw-r--r-- | include/media/stagefright/DataSource.h | 8 | ||||
-rw-r--r-- | include/media/stagefright/FileSource.h | 15 | ||||
-rw-r--r-- | include/media/stagefright/MediaErrors.h | 2 | ||||
-rw-r--r-- | include/media/stagefright/MediaExtractor.h | 6 | ||||
-rw-r--r-- | include/media/stagefright/MetaData.h | 2 |
5 files changed, 33 insertions, 0 deletions
diff --git a/include/media/stagefright/DataSource.h b/include/media/stagefright/DataSource.h index 6f7dc38..cd19eae 100644 --- a/include/media/stagefright/DataSource.h +++ b/include/media/stagefright/DataSource.h @@ -25,6 +25,7 @@ #include <utils/List.h> #include <utils/RefBase.h> #include <utils/threads.h> +#include <drm/DrmManagerClient.h> namespace android { @@ -67,6 +68,13 @@ public: static void RegisterSniffer(SnifferFunc func); static void RegisterDefaultSniffers(); + // for DRM + virtual DecryptHandle* DrmInitialization(DrmManagerClient *client) { + return NULL; + } + virtual void getDrmInfo(DecryptHandle **handle, DrmManagerClient **client) {}; + + protected: virtual ~DataSource() {} diff --git a/include/media/stagefright/FileSource.h b/include/media/stagefright/FileSource.h index 8a215ea..4307263 100644 --- a/include/media/stagefright/FileSource.h +++ b/include/media/stagefright/FileSource.h @@ -23,6 +23,7 @@ #include <media/stagefright/DataSource.h> #include <media/stagefright/MediaErrors.h> #include <utils/threads.h> +#include <drm/DrmManagerClient.h> namespace android { @@ -37,15 +38,29 @@ public: virtual status_t getSize(off_t *size); + virtual DecryptHandle* DrmInitialization(DrmManagerClient *client); + + virtual void getDrmInfo(DecryptHandle **handle, DrmManagerClient **client); + protected: virtual ~FileSource(); private: FILE *mFile; + int mFd; int64_t mOffset; int64_t mLength; Mutex mLock; + /*for DRM*/ + DecryptHandle *mDecryptHandle; + DrmManagerClient *mDrmManagerClient; + int64_t mDrmBufOffset; + int64_t mDrmBufSize; + unsigned char *mDrmBuf; + + ssize_t readAtDRM(off_t offset, void *data, size_t size); + FileSource(const FileSource &); FileSource &operator=(const FileSource &); }; diff --git a/include/media/stagefright/MediaErrors.h b/include/media/stagefright/MediaErrors.h index 73d0f77..102885f 100644 --- a/include/media/stagefright/MediaErrors.h +++ b/include/media/stagefright/MediaErrors.h @@ -39,6 +39,8 @@ enum { // Not technically an error. INFO_FORMAT_CHANGED = MEDIA_ERROR_BASE - 12, + + ERROR_NO_LICENSE = MEDIA_ERROR_BASE - 13, }; } // namespace android diff --git a/include/media/stagefright/MediaExtractor.h b/include/media/stagefright/MediaExtractor.h index 21338ca..0fbb422 100644 --- a/include/media/stagefright/MediaExtractor.h +++ b/include/media/stagefright/MediaExtractor.h @@ -54,6 +54,12 @@ public: // CAN_SEEK_BACKWARD | CAN_SEEK_FORWARD | CAN_PAUSE virtual uint32_t flags() const; + // for DRM + virtual void setDrmFlag(bool flag) {}; + virtual char* getDrmTrackInfo(size_t trackID, int *len) { + return NULL; + } + protected: MediaExtractor() {} virtual ~MediaExtractor() {} diff --git a/include/media/stagefright/MetaData.h b/include/media/stagefright/MetaData.h index dc2bd50..d1b5f27 100644 --- a/include/media/stagefright/MetaData.h +++ b/include/media/stagefright/MetaData.h @@ -50,6 +50,8 @@ enum { kKeyBufferID = 'bfID', kKeyMaxInputSize = 'inpS', kKeyThumbnailTime = 'thbT', // int64_t (usecs) + kKeyTrackID = 'trID', + kKeyIsDRM = 'idrm', // int32_t (bool) kKeyAlbum = 'albu', // cstring kKeyArtist = 'arti', // cstring |