1 /* 2 * Copyright (C) 2007 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 #ifndef __DCF_COMM_H__ 18 #define __DCF_COMM_H__ 19 20 #include <Drm2CommonTypes.h> 21 #include <arpa/inet.h> 22 #include <mistream.h> 23 #include <ustring.h> 24 25 using namespace ustl; 26 27 ////DCF box type list 28 const uint32_t DCF_CONTAINER_BOX = uint32_t('m' << 24 | 'r' << 16 | 'd' << 8 | 'o'); 29 const uint32_t DCF_USER_TYPE = uint32_t('d' << 24 | 'i' << 16 | 'u' << 8 | 'u'); 30 const uint32_t DCF_FILE_TYPE = uint32_t('p' << 24 | 'y' << 16 | 't' << 8 | 'f'); 31 const uint32_t DCF_FILE_BRAND = uint32_t('f' << 24 | 'c' << 16 | 'd' << 8 | 'o'); 32 33 34 /** 35 * The basic box class. 36 */ 37 class Box 38 { 39 public: 40 /** 41 * constructor for Box, used to parse Box 42 * \param box Box data 43 */ 44 Box(const uint8_t* box); 45 46 /** 47 * copy constructor for Box 48 * \param dcfBox Box object used to init a new Box object 49 */ 50 Box(const Box& dcfBox); 51 52 /** 53 * assignment operator for Box 54 * \param other Box object used to assign to a exist Box object 55 */ 56 Box& operator=(const Box& other); 57 58 /** Destructor for Box */ 59 virtual ~Box(); 60 61 /** 62 * get the size of Box 63 * \param none 64 * \return 65 * the size 66 */ 67 uint64_t getSize(void) const; 68 69 /** 70 * get the type of Box 71 * \param none 72 * \return 73 * the type 74 */ 75 uint32_t getType(void) const; 76 77 /** 78 * get the user type of Box 79 * \param none 80 * \return 81 * the user type 82 */ 83 const uint8_t* getUsertype(void) const; 84 85 /** 86 * get the length of Box 87 * \param none 88 * \return 89 * the length 90 */ 91 virtual uint32_t getLen(void) const; 92 PRIVATE: 93 static const uint32_t USER_TYPE_LEN = 16; 94 95 uint32_t mSize; 96 uint32_t mType; 97 uint64_t mLargeSize; 98 uint8_t* mUserType; 99 uint32_t mBoxLength; 100 }; 101 102 /** 103 * The fullBox class. 104 */ 105 class FullBox : public Box 106 { 107 public: 108 /** 109 * constructor for FullBox, used to parse FullBox 110 * \param fullBox FullBox data 111 */ 112 FullBox(const uint8_t* fullBox); 113 114 /** Destructor for FullBox */ 115 virtual ~FullBox(){} 116 117 /** 118 * get the version of FullBox 119 * \param none 120 * \return 121 * the version 122 */ 123 uint8_t getVersion(void) const; 124 125 /** 126 * get the flag of FullBox 127 * \param none 128 * \return 129 * the flag 130 */ 131 const uint8_t* getFlag(void) const; 132 133 /** 134 * get the length of FullBox 135 * \param none 136 * \return 137 * the length 138 */ 139 virtual uint32_t getLen(void) const; 140 PRIVATE: 141 static const uint32_t FLAG_LEN = 3; 142 143 uint8_t mVersion; 144 uint8_t mFlag[FLAG_LEN]; 145 uint32_t mFullBoxLength; 146 }; 147 148 ////// textal header class 149 class TextualHeader 150 { 151 public: 152 /** default constructor of DrmInStream */ 153 TextualHeader(){}; 154 155 /** 156 * constructor for TextualHeader, used to parse textal header 157 * \param inData textal header data 158 */ 159 TextualHeader(const string& inData); 160 161 /** 162 * get the name of textal header 163 * \param none 164 * \return 165 * the name 166 */ 167 string getName() const; 168 169 /** 170 * get the value of textal header 171 * \param none 172 * \return 173 * the value 174 */ 175 string getValue() const; 176 177 /** 178 * get the parameter of textal header 179 * \param none 180 * \return 181 * the parameter 182 */ 183 string getParam() const; 184 PRIVATE: 185 string name; 186 string value; 187 string param; 188 }; 189 190 extern int64_t ntoh_int64(int64_t in); 191 192 #endif 193