summaryrefslogtreecommitdiffstats
path: root/include/media
diff options
context:
space:
mode:
authorGloria Wang <gwang@google.com>2010-06-22 13:55:38 -0700
committerGloria Wang <gwang@google.com>2010-10-25 12:16:56 -0700
commitdcd25efb46c41c8d24a0a9cf61fb57f84149709e (patch)
tree6b6d165ba952924f1cd1b77f3a0903e5da31445a /include/media
parent2272ee27d9022d173b6eab45c409b3c3f57f30ec (diff)
downloadframeworks_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.h8
-rw-r--r--include/media/stagefright/FileSource.h15
-rw-r--r--include/media/stagefright/MediaErrors.h2
-rw-r--r--include/media/stagefright/MediaExtractor.h6
-rw-r--r--include/media/stagefright/MetaData.h2
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