1 /* ------------------------------------------------------------------ 2 * Copyright (C) 1998-2009 PacketVideo 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 13 * express or implied. 14 * See the License for the specific language governing permissions 15 * and limitations under the License. 16 * ------------------------------------------------------------------- 17 */ 18 #ifndef ASSETINFOATOMS_H_INCLUDED 19 #define ASSETINFOATOMS_H_INCLUDED 20 21 #ifndef ATOM_H_INCLUDED 22 #include "atom.h" 23 #endif 24 #ifndef A_ISUCCEEDFAIL_H_INCLUDED 25 #include "a_isucceedfail.h" 26 #endif 27 #ifndef FULLATOM_H_INCLUDED 28 #include "fullatom.h" 29 #endif 30 #ifndef ATOMUTILS_H_INCLUDED 31 #include "atomutils.h" 32 #endif 33 #ifndef OSCL_VECTOR_H_INCLUDED 34 #include "oscl_vector.h" 35 #endif 36 37 #define BYTE_ORDER_MASK 0xFEFF 38 39 class PVA_FF_AssetInfoTitleAtom : public PVA_FF_FullAtom 40 { 41 public: 42 PVA_FF_AssetInfoTitleAtom(); 43 virtual ~PVA_FF_AssetInfoTitleAtom() {}; 44 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 45 46 // Member gets 47 void setTitleLangCode(const uint16 aLangCode) 48 { 49 _langCode = aLangCode; 50 } 51 void setTitleNotice(const PVA_FF_UNICODE_HEAP_STRING aTitle) 52 { 53 _title = aTitle; 54 recomputeSize(); 55 } 56 virtual void recomputeSize(); 57 private: 58 uint16 _langCode; 59 uint16 _byteOrderMask; 60 PVA_FF_UNICODE_HEAP_STRING _title; 61 }; 62 63 class PVA_FF_AssetInfoDescAtom : public PVA_FF_FullAtom 64 { 65 public: 66 PVA_FF_AssetInfoDescAtom(); 67 virtual ~PVA_FF_AssetInfoDescAtom() {}; 68 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 69 70 // Member gets 71 void setDescLangCode(uint16 aLangCode) 72 { 73 _langCode = aLangCode; 74 } 75 void setDescNotice(PVA_FF_UNICODE_HEAP_STRING aDescription) 76 { 77 _description = aDescription; 78 recomputeSize(); 79 } 80 virtual void recomputeSize(); 81 private: 82 uint16 _langCode; 83 uint16 _byteOrderMask; 84 PVA_FF_UNICODE_HEAP_STRING _description; 85 }; 86 87 class PVA_FF_AssetInfoCopyRightAtom : public PVA_FF_FullAtom 88 { 89 public: 90 PVA_FF_AssetInfoCopyRightAtom(); 91 virtual ~PVA_FF_AssetInfoCopyRightAtom() {}; 92 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 93 94 // Member gets 95 void setCopyRightLangCode(const uint16 aLangCode) 96 { 97 _langCode = aLangCode; 98 } 99 void setCopyRightString(const PVA_FF_UNICODE_HEAP_STRING aCprt) 100 { 101 _cprt = aCprt; 102 recomputeSize(); 103 } 104 virtual void recomputeSize(); 105 private: 106 uint16 _langCode; 107 uint16 _byteOrderMask; 108 PVA_FF_UNICODE_HEAP_STRING _cprt; 109 }; 110 111 class PVA_FF_AssetInfoPerformerAtom : public PVA_FF_FullAtom 112 { 113 public: 114 PVA_FF_AssetInfoPerformerAtom(); 115 virtual ~PVA_FF_AssetInfoPerformerAtom() {}; 116 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 117 // Member gets 118 void setPerfLangCode(uint16 aLangCode) 119 { 120 _langCode = aLangCode; 121 } 122 void setPerfNotice(PVA_FF_UNICODE_HEAP_STRING aPerformer) 123 { 124 _performer = aPerformer; 125 recomputeSize(); 126 } 127 virtual void recomputeSize(); 128 private: 129 uint16 _langCode; 130 uint16 _byteOrderMask; 131 PVA_FF_UNICODE_HEAP_STRING _performer; 132 }; 133 134 class PVA_FF_AssetInfoAuthorAtom : public PVA_FF_FullAtom 135 { 136 public: 137 PVA_FF_AssetInfoAuthorAtom(); 138 virtual ~PVA_FF_AssetInfoAuthorAtom() {}; 139 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 140 // Member gets 141 void setAuthorLangCode(uint16 aLangCode) 142 { 143 _langCode = aLangCode; 144 } 145 void setAuthorNotice(PVA_FF_UNICODE_HEAP_STRING aAuthor) 146 { 147 _author = aAuthor; 148 recomputeSize(); 149 } 150 virtual void recomputeSize(); 151 private: 152 uint16 _langCode; 153 uint16 _byteOrderMask; 154 PVA_FF_UNICODE_HEAP_STRING _author; 155 }; 156 157 class PVA_FF_AssetInfoGenreAtom : public PVA_FF_FullAtom 158 { 159 public: 160 PVA_FF_AssetInfoGenreAtom(); 161 virtual ~PVA_FF_AssetInfoGenreAtom() {}; 162 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 163 // Member gets 164 void setGenreLangCode(uint16 aLangCode) 165 { 166 _langCode = aLangCode; 167 } 168 void setGenreNotice(PVA_FF_UNICODE_HEAP_STRING aGenre) 169 { 170 _genre = aGenre; 171 recomputeSize(); 172 } 173 virtual void recomputeSize(); 174 private: 175 uint16 _langCode; 176 uint16 _byteOrderMask; 177 PVA_FF_UNICODE_HEAP_STRING _genre; 178 179 }; 180 181 class PVA_FF_AssetInfoRatingAtom : public PVA_FF_FullAtom 182 { 183 public: 184 PVA_FF_AssetInfoRatingAtom(); 185 virtual ~PVA_FF_AssetInfoRatingAtom() {}; 186 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 187 // Member gets 188 void setRatingLangCode(uint16 aLangCode) 189 { 190 _langCode = aLangCode; 191 } 192 193 void setRatingEntity(uint32 aRatingEntity) 194 { 195 _ratingEntity = aRatingEntity; 196 } 197 198 void setRatingCriteria(uint32 aRatingCriteria) 199 { 200 _ratingCriteria = aRatingCriteria; 201 } 202 203 void setRatingInfoNotice(PVA_FF_UNICODE_HEAP_STRING aRatingInfo) 204 { 205 _ratingInfo = aRatingInfo; 206 recomputeSize(); 207 } 208 virtual void recomputeSize(); 209 private: 210 uint16 _langCode; 211 uint16 _byteOrderMask; 212 uint32 _ratingEntity; 213 uint32 _ratingCriteria; 214 PVA_FF_UNICODE_HEAP_STRING _ratingInfo; 215 }; 216 217 class PVA_FF_AssetInfoClassificationAtom : public PVA_FF_FullAtom 218 { 219 public: 220 PVA_FF_AssetInfoClassificationAtom(); 221 virtual ~PVA_FF_AssetInfoClassificationAtom() {}; 222 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 223 // Member gets 224 void setClassificationLangCode(uint16 aLangCode) 225 { 226 _langCode = aLangCode; 227 } 228 229 void setClassificationEntity(uint32 aClassificationEntity) 230 { 231 _classificationEntity = aClassificationEntity; 232 } 233 234 235 void setClassificationTable(uint32 aClassificationTable) 236 { 237 _classificationTable = aClassificationTable; 238 } 239 240 void setClassificationInfoNotice(PVA_FF_UNICODE_HEAP_STRING aClassificationInfo) 241 { 242 _classificationInfo = aClassificationInfo; 243 recomputeSize(); 244 } 245 246 virtual void recomputeSize(); 247 private: 248 uint16 _langCode; 249 uint16 _byteOrderMask; 250 uint16 _classificationTable; 251 uint32 _classificationEntity; 252 253 PVA_FF_UNICODE_HEAP_STRING _classificationInfo; 254 255 }; 256 257 class PVA_FF_AssetInfoKeyWordStruct 258 { 259 260 public: 261 PVA_FF_AssetInfoKeyWordStruct() {}; 262 PVA_FF_AssetInfoKeyWordStruct(uint8 , PVA_FF_UNICODE_HEAP_STRING); 263 virtual ~PVA_FF_AssetInfoKeyWordStruct() {}; 264 uint32 getSizeofStruct(); 265 bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 266 267 private: 268 uint8 _keyWordSize; 269 PVA_FF_UNICODE_HEAP_STRING _keyWordInfo; 270 uint16 _byteOrderMask; 271 272 }; 273 274 class PVA_FF_AssetInfoKeyWordsAtom : public PVA_FF_FullAtom 275 { 276 public: 277 PVA_FF_AssetInfoKeyWordsAtom(); 278 virtual ~PVA_FF_AssetInfoKeyWordsAtom();//{}; 279 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 280 // Member gets 281 282 void setKeyWordsLangCode(uint16 aLangCode) 283 { 284 _langCode = aLangCode; 285 } 286 287 void setKeyWord(uint32 aKeyWordBinarySize, 288 PVA_FF_UNICODE_HEAP_STRING aKeyWord); 289 virtual void recomputeSize(); 290 private: 291 uint16 _langCode; 292 uint8 _keyWordCnt; 293 PVA_FF_AssetInfoKeyWordStruct PVA_FF_KeyWordStruct; 294 Oscl_Vector<PVA_FF_AssetInfoKeyWordStruct*, OsclMemAllocator> *_pKeyWordVect; 295 296 }; 297 298 class PVA_FF_AssetInfoLocationInfoAtom : public PVA_FF_FullAtom 299 { 300 public: 301 PVA_FF_AssetInfoLocationInfoAtom(); 302 virtual ~PVA_FF_AssetInfoLocationInfoAtom() {}; 303 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 304 // Member gets 305 void setLocationInfoLangCode(uint16 aLangCode) 306 { 307 _langCode = aLangCode; 308 } 309 310 void setLocationInfoRole(uint8 aLocationInfoRole) 311 { 312 _locationInfoRole = aLocationInfoRole; 313 } 314 315 void setLocationInfoLongitude(uint32 _aLocationInfoLongitude) 316 { 317 _locationInfoLongitude = _aLocationInfoLongitude; 318 } 319 320 void setLocationInfoLatitude(uint32 _aLocationInfoLatitude) 321 { 322 _locationInfoLatitude = _aLocationInfoLatitude; 323 } 324 325 void setLocationInfoAltitude(uint32 _aLocationInfoAltitude) 326 { 327 _locationInfoAltitude = _aLocationInfoAltitude; 328 } 329 330 void setLocationInfoName(PVA_FF_UNICODE_HEAP_STRING aLocationInfoName) 331 { 332 _locationInfoName = aLocationInfoName; 333 recomputeSize(); 334 } 335 336 void setLocationInfoAstrBody(PVA_FF_UNICODE_HEAP_STRING aLocationInfoAstrBody) 337 { 338 _locationInfoAstrBody = aLocationInfoAstrBody; 339 recomputeSize(); 340 } 341 342 void setLocationInfoAddNotes(PVA_FF_UNICODE_HEAP_STRING aLocationInfoAddNotes) 343 { 344 _locationInfoAddNotes = aLocationInfoAddNotes; 345 recomputeSize(); 346 } 347 virtual void recomputeSize(); 348 private: 349 uint16 _langCode; 350 uint8 _locationInfoRole; 351 352 uint32 _locationInfoLongitude; 353 uint32 _locationInfoLatitude; 354 uint32 _locationInfoAltitude; 355 356 PVA_FF_UNICODE_HEAP_STRING _locationInfoName; 357 PVA_FF_UNICODE_HEAP_STRING _locationInfoAstrBody; 358 PVA_FF_UNICODE_HEAP_STRING _locationInfoAddNotes; 359 uint16 _byteOrderMask; 360 361 }; 362 363 class PVA_FF_AssetInfoAlbumAtom : public PVA_FF_FullAtom 364 { 365 public: 366 PVA_FF_AssetInfoAlbumAtom(); 367 virtual ~PVA_FF_AssetInfoAlbumAtom() {}; 368 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 369 370 // Member gets 371 void setAlbumLangCode(uint16 aLangCode) 372 { 373 _langCode = aLangCode; 374 } 375 void setAlbumInfo(PVA_FF_UNICODE_HEAP_STRING aAlbumTitle) 376 { 377 _albumTitle = aAlbumTitle; 378 recomputeSize(); 379 } 380 void setAlbumTrackNumber(uint8 trackNumber) 381 { 382 _trackNumber = trackNumber; 383 } 384 virtual void recomputeSize(); 385 private: 386 uint16 _langCode; 387 uint16 _byteOrderMask; 388 uint8 _trackNumber; 389 PVA_FF_UNICODE_HEAP_STRING _albumTitle; 390 }; 391 392 class PVA_FF_AssetInfoRecordingYearAtom : public PVA_FF_FullAtom 393 { 394 public: 395 PVA_FF_AssetInfoRecordingYearAtom(); 396 virtual ~PVA_FF_AssetInfoRecordingYearAtom() {}; 397 virtual bool renderToFileStream(MP4_AUTHOR_FF_FILE_IO_WRAP *fp); 398 399 // Member gets 400 void setRecordingYear(uint16 aRecordingYear) 401 { 402 _recordingYear = aRecordingYear; 403 recomputeSize(); 404 } 405 virtual void recomputeSize(); 406 private: 407 uint16 _recordingYear; 408 }; 409 410 #endif // ASSETINFOATOMS_H_INCLUDED 411