| /* |
| * Copyright (C) 2007 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| #ifndef __DCF_CONTAINER_H__ |
| #define __DCF_CONTAINER_H__ |
| |
| #include <Drm2CommonTypes.h> |
| #include <uvector.h> |
| #include <dcf/DrmIStream.h> |
| #include <dcf/DrmDcfCommon.h> |
| |
| class DrmInStream; |
| |
| /////////dcf container |
| class DcfContainer : public FullBox |
| { |
| public: |
| friend class DrmInStream; |
| |
| /** default constructor of DcfContainer */ |
| DcfContainer(istream& inRawData):FullBox(NULL),mConStream(inRawData){} |
| |
| /** |
| * constructor for DcfContainer, used to parse DCF container |
| * \param data DCF container data |
| * \param len DCF container data len |
| * \param off the offset from the start of DCF container |
| */ |
| DcfContainer(const uint8_t* data,istream& inRawData,uint64_t conOff); |
| |
| /** Destructor for DcfContainer */ |
| ~DcfContainer(); |
| |
| /** |
| * get the content type of one content |
| * \param none |
| * \return |
| * the content type |
| */ |
| string getContentType(void) const; |
| |
| /** |
| * get the encryption method apply to content |
| * \param none |
| * \return |
| * the encryption method |
| */ |
| uint8_t getEncryptionMethod(void) const; |
| |
| /** |
| * get the padding scheme apply to content |
| * \param none |
| * \return |
| * the padding scheme |
| */ |
| uint8_t getPaddingScheme(void) const; |
| |
| /** |
| * get the length of plain content |
| * \param none |
| * \return |
| * the length of plain content |
| */ |
| uint64_t getPlaintextLength(void) const; |
| |
| /** |
| * get the length of content ID |
| * \param none |
| * \return |
| * the length of content ID |
| */ |
| uint16_t getContentIDLength(void) const; |
| |
| /** |
| * get the length of rights issuer URL |
| * \param none |
| * \return |
| * the length of rights issuer URL |
| */ |
| uint16_t getRightsIssuerURLLength(void) const; |
| |
| /** |
| * get the length of textal header |
| * \param none |
| * \return |
| * the length of textal header |
| */ |
| uint16_t getTextualHeadersLength(void) const; |
| |
| /** |
| * get the content ID of one content |
| * \param none |
| * \return |
| * the content ID |
| */ |
| string getContentID(void) const; |
| |
| /** |
| * get the rights issuer URL |
| * \param none |
| * \return |
| * the rights issuer URL |
| */ |
| string getRightsIssuerURL(void) const; |
| |
| /** |
| * get the preview method |
| * \param none |
| * \return |
| * the preview method |
| */ |
| string getPreviewMethod(void) const; |
| |
| /** |
| * get the location of content |
| * \param none |
| * \return |
| * the location of content |
| */ |
| string getContentLocation(void) const; |
| |
| /** |
| * get the URL of content |
| * \param none |
| * \return |
| * the URL of content |
| */ |
| string getContentURL(void) const; |
| |
| /** |
| * get the customer head |
| * \param none |
| * \return |
| * the customer head |
| */ |
| vector<string> getCustomerHead(void) const; |
| |
| /** |
| * get the preview element data |
| * \param none |
| * \return |
| * the DRM Instream of preview element data |
| */ |
| DrmInStream getPreviewElementData(void) const; |
| |
| /** |
| * get the plain content |
| * \param none |
| * \return |
| * the DRM Instream of plain content |
| */ |
| DrmInStream getDecryptContent(uint8_t* decryptKey) const; |
| |
| /** |
| * get the istream of DCF |
| * \param none |
| * \return |
| * the istream of DCF |
| */ |
| istream& getStream(void) const; |
| |
| PRIVATE: |
| static const uint32_t USER_DATA_FLAG = 0x01; |
| |
| uint8_t mContentTypeLen; |
| string mContentType; |
| uint8_t mEncryptionMethod; |
| uint8_t mPaddingScheme; |
| uint64_t mPlaintextLength; |
| uint16_t mContentIDLength; |
| uint16_t mRightsIssuerURLLength; |
| uint16_t mTextualHeadersLength; |
| string mContentID; |
| string mRightsIssuerURL; |
| vector<TextualHeader*> mTextualHeaders; |
| bool mSilentFirst; |
| string mSlientMethod; |
| string mSilentRightsURL; |
| string mPreviewMethod; |
| string mPreviewElementURI; |
| string mPreviewRightsURL; |
| string mContentURL; |
| string mContentVersion; |
| string mContentLocation; |
| vector<string> mCustomHeader; |
| bool mHasUserData; |
| uint64_t mDataLen; |
| istream& mConStream; |
| uint64_t mDecOffset; |
| |
| PRIVATE: |
| // parse text header |
| bool parseTextualHeaders(const uint8_t* data, uint32_t len); |
| void copy(const DcfContainer& container); |
| DcfContainer(const DcfContainer& container):FullBox(NULL),mConStream(container.mConStream){} |
| DcfContainer& operator=(const DcfContainer& other){return *this;} |
| }; |
| |
| |
| #endif |