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 ITUNESILSTATOM_H_INCLUDED 19 #define ITUNESILSTATOM_H_INCLUDED 20 21 #include "atom.h" 22 #include "fullatom.h" 23 #include "pvmi_kvp.h" 24 #include "atomdefs.h" 25 26 #define MAX_CD_IDENTIFIER_FREE_DATA_ATOM 16 27 #define ITUNES_MAX_COVER_IMAGE_SIZE (1024*1024) //1 meg 28 #define PREFIX_SIZE 16 29 30 //************************************MeaningAtom Class Starts ********************************** 31 class ItunesMeaningAtom : public FullAtom 32 { 33 public: 34 ItunesMeaningAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 35 virtual ~ItunesMeaningAtom(); 36 //API to retrieve the Meaning String getMeaningString()37 OSCL_wHeapString<OsclMemAllocator> getMeaningString() const 38 { 39 return _meaningString; 40 } 41 42 private: 43 44 OSCL_wHeapString<OsclMemAllocator> _meaningString; 45 46 47 }; 48 49 //************************************NameAtom Class Starts ********************************** 50 51 class ItunesNameAtom : public FullAtom 52 { 53 public: 54 ItunesNameAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 55 virtual ~ItunesNameAtom(); 56 //API to retrieve the Name String getNameString()57 OSCL_wHeapString<OsclMemAllocator> getNameString() const 58 { 59 return _nameString; 60 } 61 62 private: 63 64 OSCL_wHeapString<OsclMemAllocator> _nameString; 65 66 67 }; 68 69 //************************************BaseTypes for the MetaData ********************************** 70 class ITunesMetaDataAtom: public Atom 71 { 72 public: 73 ITunesMetaDataAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 74 virtual ~ITunesMetaDataAtom(); 75 76 protected: 77 uint64 _prefix; 78 uint64 INTEGER_PREFIX; 79 uint64 STRING_PREFIX; 80 uint64 IMAGE_PREFIX_PNG; 81 uint64 IMAGE_PREFIX_JFIF; 82 uint64 OTHER_PREFIX; 83 PVLogger *iLogger; 84 }; 85 86 87 //************************************Title(Name) Class Starts ********************************** 88 class ITunesTitleAtom: public ITunesMetaDataAtom 89 { 90 public: 91 ITunesTitleAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 92 ~ITunesTitleAtom(); 93 getTitle()94 OSCL_wHeapString<OsclMemAllocator> getTitle() const 95 { 96 return _name; 97 } 98 99 private: 100 // Title of Song 101 OSCL_wHeapString<OsclMemAllocator> _name; 102 }; 103 104 //************************************ Track's Subtitle Class Starts ********************************** 105 106 class ITunesTrackSubTitleAtom: public ITunesMetaDataAtom 107 { 108 public: 109 ITunesTrackSubTitleAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 110 ~ITunesTrackSubTitleAtom(); 111 getTrackSubTitle()112 OSCL_wHeapString<OsclMemAllocator> getTrackSubTitle() const 113 { 114 return _trackTitle; 115 } 116 117 private: 118 //SubTitle of the track 119 OSCL_wHeapString<OsclMemAllocator> _trackTitle; 120 }; 121 122 123 //************************************ Artist / Performer Class Starts ********************************** 124 class ITunesArtistAtom: public ITunesMetaDataAtom 125 { 126 public: 127 ITunesArtistAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 128 ~ITunesArtistAtom(); 129 getArtist()130 OSCL_wHeapString<OsclMemAllocator> getArtist() const 131 { 132 return _artist; 133 } 134 135 private: 136 // Artist / Performer of Song 137 OSCL_wHeapString<OsclMemAllocator> _artist; 138 }; 139 140 //************************************AlbumArtist Class Starts ********************************** 141 class ITunesAlbumArtistAtom: public ITunesMetaDataAtom 142 { 143 public: 144 ITunesAlbumArtistAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 145 ~ITunesAlbumArtistAtom(); 146 getAlbumArtist()147 OSCL_wHeapString<OsclMemAllocator> getAlbumArtist() const 148 { 149 return _albumArtist; 150 } 151 152 private: 153 // AlbumArtist 154 OSCL_wHeapString<OsclMemAllocator> _albumArtist; 155 }; 156 157 //************************************ Album Class Starts ********************************** 158 class ITunesAlbumAtom: public ITunesMetaDataAtom 159 { 160 public: 161 ITunesAlbumAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 162 ~ITunesAlbumAtom(); 163 getAlbum()164 OSCL_wHeapString<OsclMemAllocator> getAlbum() const 165 { 166 return _album; 167 } 168 169 private: 170 // Album of Song 171 OSCL_wHeapString<OsclMemAllocator> _album; 172 }; 173 174 //************************************ Genre Class Starts ********************************** 175 class ITunesGenreAtom: public ITunesMetaDataAtom 176 { 177 public: 178 ITunesGenreAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 179 ~ITunesGenreAtom(); 180 getGnreID()181 uint16 getGnreID() const 182 { 183 return _gnreID; 184 } 185 getGnreString()186 OSCL_wHeapString<OsclMemAllocator> getGnreString() const 187 { 188 return _gnreString; 189 } 190 191 //This function will tell the type of Genre-- TRUE- If it is Integer, FALSE- if it is String getGnreVersion()192 GnreVersion getGnreVersion() const 193 { 194 return _gnreVersion; 195 } 196 197 198 private: 199 // Genre of Song 200 OSCL_wHeapString<OsclMemAllocator> _gnreString; // Customized String of Genre 201 uint16 _gnreID; // Genre ID 202 GnreVersion _gnreVersion; // Whether gnre is String or Integer ID Number*/ 203 }; 204 205 //************************************ Day Class Starts ********************************** 206 class ITunesYearAtom: public ITunesMetaDataAtom 207 { 208 public: 209 ITunesYearAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 210 ~ITunesYearAtom(); 211 getYear()212 OSCL_wHeapString<OsclMemAllocator> getYear() const 213 { 214 return _day; 215 } 216 217 private: 218 // The 4-Digit Year when Song was recorded 219 OSCL_wHeapString<OsclMemAllocator> _day; 220 }; 221 222 //************************************ Tool Class Starts ********************************** 223 class ITunesToolAtom: public ITunesMetaDataAtom 224 { 225 public: 226 ITunesToolAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 227 ~ITunesToolAtom(); 228 getTool()229 OSCL_wHeapString<OsclMemAllocator> getTool() const 230 { 231 return _tool; 232 } 233 234 private: 235 // Tool/Encoder of Song 236 OSCL_wHeapString<OsclMemAllocator> _tool; 237 }; 238 239 //************************************EncodedBy(Company/Person) Class Starts ********************************** 240 class ITunesEncodedByAtom: public ITunesMetaDataAtom 241 { 242 public: 243 ITunesEncodedByAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 244 ~ITunesEncodedByAtom(); 245 getEncodedBy()246 OSCL_wHeapString<OsclMemAllocator> getEncodedBy() const 247 { 248 return _encodedBy; 249 } 250 251 private: 252 // Person or company that encoded the recording 253 OSCL_wHeapString<OsclMemAllocator> _encodedBy; 254 }; 255 256 257 //************************************ Writer Class Starts ********************************** 258 class ITunesWriterAtom: public ITunesMetaDataAtom 259 { 260 public: 261 ITunesWriterAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 262 ~ITunesWriterAtom(); 263 getWriter()264 OSCL_wHeapString<OsclMemAllocator> getWriter() const 265 { 266 return _writer; 267 } 268 269 private: 270 // Writer of Song 271 OSCL_wHeapString<OsclMemAllocator> _writer; 272 }; 273 274 //************************************ Group Class Starts ********************************** 275 class ITunesGroupAtom: public ITunesMetaDataAtom 276 { 277 public: 278 ITunesGroupAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 279 ~ITunesGroupAtom(); 280 getGroup()281 OSCL_wHeapString<OsclMemAllocator> getGroup() const 282 { 283 return _group; 284 } 285 286 private: 287 // Grouping data of Song 288 OSCL_wHeapString<OsclMemAllocator> _group; 289 }; 290 291 //************************************ Comment Class Starts ********************************** 292 class ITunesCommentAtom: public ITunesMetaDataAtom 293 { 294 public: 295 ITunesCommentAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 296 ~ITunesCommentAtom(); 297 getComment()298 OSCL_wHeapString<OsclMemAllocator> getComment() const 299 { 300 return _comment; 301 } 302 303 private: 304 // Comment data of Song 305 OSCL_wHeapString<OsclMemAllocator> _comment; 306 }; 307 308 //************************************ Track Class Starts ********************************** 309 class ITunesTracktAtom: public ITunesMetaDataAtom 310 { 311 public: 312 ITunesTracktAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 313 ~ITunesTracktAtom(); 314 getThisTrackNo()315 uint16 getThisTrackNo() const 316 { 317 return _thisTrackNo; 318 } 319 getTotalTracks()320 uint16 getTotalTracks() const 321 { 322 return _totalTracks; 323 } 324 325 private: 326 // Track data of Song 327 uint16 _thisTrackNo; 328 uint16 _totalTracks; 329 }; 330 331 //********************************* Compilation Part Class Starts ******************************** 332 class ITunesCompileAtom: public ITunesMetaDataAtom 333 { 334 public: 335 ITunesCompileAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 336 ~ITunesCompileAtom(); 337 IsCompilationPart()338 bool IsCompilationPart() const 339 { 340 return _compilationPart; 341 } 342 343 private: 344 // Whether this song is the part of Compilation or not. 345 bool _compilationPart; 346 }; 347 348 //********************************* Content Rating Class Starts ******************************** 349 class ITunesContentRatingAtom: public ITunesMetaDataAtom 350 { 351 public: 352 ITunesContentRatingAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 353 ~ITunesContentRatingAtom(); 354 IsContentRating()355 bool IsContentRating() const 356 { 357 return _contentRating; 358 } 359 360 private: 361 // Does song have explicit content? 362 bool _contentRating; 363 }; 364 365 //************************************ Tempo Class Starts ********************************** 366 class ITunesTempoAtom: public ITunesMetaDataAtom 367 { 368 public: 369 ITunesTempoAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 370 ~ITunesTempoAtom(); 371 getBeatsPerMinute()372 uint16 getBeatsPerMinute() const 373 { 374 return _beatsPerMin; 375 } 376 377 private: 378 // Beats Per Minute in the Song. 379 uint16 _beatsPerMin; 380 }; 381 382 //************************************ Copyright Class Starts ********************************** 383 class ITunesCopyrightAtom: public ITunesMetaDataAtom 384 { 385 public: 386 ITunesCopyrightAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 387 ~ITunesCopyrightAtom(); 388 getITunesCopyright()389 OSCL_wHeapString<OsclMemAllocator> getITunesCopyright() const 390 { 391 return _cprt; 392 } 393 394 private: 395 OSCL_wHeapString<OsclMemAllocator> _cprt; 396 }; 397 398 //************************************ Description Class Starts ********************************** 399 class ITunesDescriptionAtom: public ITunesMetaDataAtom 400 { 401 public: 402 ITunesDescriptionAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 403 ~ITunesDescriptionAtom(); 404 getITunesDescription()405 OSCL_wHeapString<OsclMemAllocator> getITunesDescription() const 406 { 407 return _desc; 408 } 409 410 private: 411 412 OSCL_wHeapString<OsclMemAllocator> _desc; 413 }; 414 415 416 //************************************ Disk Data Class Starts ********************************** 417 class ITunesDiskDatatAtom: public ITunesMetaDataAtom 418 { 419 public: 420 ITunesDiskDatatAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 421 ~ITunesDiskDatatAtom(); 422 getThisDiskNo()423 uint16 getThisDiskNo() const 424 { 425 return _thisDiskNo; 426 } 427 getTotalDisks()428 uint16 getTotalDisks() const 429 { 430 return _totalDisks; 431 } 432 433 private: 434 // Disk data of Song 435 uint16 _thisDiskNo; 436 uint16 _totalDisks; 437 }; 438 439 //********************************* Free Form Data Class Starts ********************************** 440 class ITunesFreeFormDataAtom: public ITunesMetaDataAtom 441 { 442 public: 443 ITunesFreeFormDataAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 444 ~ITunesFreeFormDataAtom(); 445 getString()446 OSCL_wHeapString<OsclMemAllocator> getString() 447 { 448 return _StringData; 449 } 450 private: 451 OSCL_wHeapString<OsclMemAllocator> _StringData; 452 }; 453 454 //************************************ Lyrics Class Starts ********************************** 455 class ITunesLyricsAtom: public ITunesMetaDataAtom 456 { 457 public: 458 ITunesLyricsAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 459 ~ITunesLyricsAtom(); 460 getLyrics()461 OSCL_wHeapString<OsclMemAllocator> getLyrics() const 462 { 463 return _lyrics; 464 } 465 466 private: 467 // Lyrics of Song 468 OSCL_wHeapString<OsclMemAllocator> _lyrics; 469 }; 470 471 //************************************ Cover/Artwork Class Starts ********************************** 472 class ITunesCoverImageAtom: public ITunesMetaDataAtom 473 { 474 public: 475 ITunesCoverImageAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 476 ~ITunesCoverImageAtom(); 477 getImageData()478 PvmfApicStruct* getImageData() const 479 { 480 if (_ImageData) 481 return(_ImageData); 482 else 483 return(NULL); 484 } 485 486 private: 487 // Artwork/Image of Song 488 PvmfApicStruct* _ImageData; 489 }; 490 491 //***************************** ILST Atom Class Starts ************************** 492 class ITunesILSTAtom : public Atom 493 { 494 public: 495 ITunesILSTAtom(MP4_FF_FILE *fp, uint32 size, uint32 type); 496 ~ITunesILSTAtom(); 497 getTitle()498 OSCL_wHeapString<OsclMemAllocator> getTitle() const 499 { 500 OSCL_wHeapString<OsclMemAllocator> temp; 501 if (_pITunesTitleAtom) 502 return _pITunesTitleAtom->getTitle(); 503 else 504 return temp; 505 } 506 getTrackSubTitle()507 OSCL_wHeapString<OsclMemAllocator> getTrackSubTitle() const 508 { 509 OSCL_wHeapString<OsclMemAllocator> temp; 510 if (_pITunesTrackSubTitleAtom) 511 return _pITunesTrackSubTitleAtom->getTrackSubTitle(); 512 else 513 return temp; 514 } 515 getArtist()516 OSCL_wHeapString<OsclMemAllocator> getArtist() const 517 { 518 OSCL_wHeapString<OsclMemAllocator> temp; 519 if (_pITunesArtistAtom) 520 return _pITunesArtistAtom->getArtist(); 521 else 522 return temp; 523 } 524 getAlbumArtist()525 OSCL_wHeapString<OsclMemAllocator> getAlbumArtist() const 526 { 527 OSCL_wHeapString<OsclMemAllocator> temp; 528 if (_pITunesAlbumArtistAtom) 529 return _pITunesAlbumArtistAtom->getAlbumArtist(); 530 else 531 return temp; 532 } 533 getAlbum()534 OSCL_wHeapString<OsclMemAllocator> getAlbum() const 535 { 536 OSCL_wHeapString<OsclMemAllocator> temp; 537 if (_pITunesAlbumAtom) 538 return _pITunesAlbumAtom->getAlbum(); 539 else 540 return temp; 541 } 542 543 // Gnre ** Starts ** getGnreID()544 uint16 getGnreID() const 545 { 546 if (_pITunesGenreAtom) 547 { 548 if (_pITunesGenreAtom->getGnreVersion() == INTEGER_GENRE) 549 { 550 return _pITunesGenreAtom->getGnreID(); 551 } 552 else 553 return 0; 554 } 555 else 556 return 0; 557 } 558 559 getGnreString()560 OSCL_wHeapString<OsclMemAllocator> getGnreString() const 561 { 562 OSCL_wHeapString<OsclMemAllocator> temp; 563 if (_pITunesGenreAtom) 564 { 565 if (_pITunesGenreAtom->getGnreVersion() == STRING_GENRE) 566 { 567 return _pITunesGenreAtom->getGnreString(); 568 } 569 else 570 return temp; 571 } 572 else 573 return temp; 574 } 575 576 //This function will tell the type of Genre-- getGnreVersion()577 GnreVersion getGnreVersion() const 578 { 579 if (_pITunesGenreAtom) 580 { 581 return _pITunesGenreAtom->getGnreVersion(); 582 } 583 else 584 // By-default return INTEGER_GENRE 585 return INTEGER_GENRE; 586 } 587 // Gnre ** Ends ** 588 589 590 // Returns the 4-byte YEAR when the song was recorded getYear()591 OSCL_wHeapString<OsclMemAllocator> getYear() const 592 { 593 OSCL_wHeapString<OsclMemAllocator> temp; 594 if (_pITunesYearAtom) 595 return _pITunesYearAtom->getYear(); 596 else 597 return temp; 598 } 599 600 getTool()601 OSCL_wHeapString<OsclMemAllocator> getTool() const 602 { 603 OSCL_wHeapString<OsclMemAllocator> temp; 604 if (_pITunesToolAtom) 605 { 606 return _pITunesToolAtom->getTool(); 607 } 608 else 609 return temp; 610 } 611 getEncodedBy()612 OSCL_wHeapString<OsclMemAllocator> getEncodedBy() const 613 { 614 OSCL_wHeapString<OsclMemAllocator> temp; 615 if (_pITunesEncodedByAtom) 616 { 617 return _pITunesEncodedByAtom->getEncodedBy(); 618 } 619 else 620 return temp; 621 } 622 getWriter()623 OSCL_wHeapString<OsclMemAllocator> getWriter() const 624 { 625 OSCL_wHeapString<OsclMemAllocator> temp; 626 if (_pITunesWriterAtom) 627 return _pITunesWriterAtom->getWriter(); 628 else 629 return temp; 630 } 631 getGroup()632 OSCL_wHeapString<OsclMemAllocator> getGroup() const 633 { 634 OSCL_wHeapString<OsclMemAllocator> temp; 635 if (_pITunesGroupAtom) 636 return _pITunesGroupAtom->getGroup(); 637 else 638 return temp; 639 } 640 getComment()641 OSCL_wHeapString<OsclMemAllocator> getComment() const 642 { 643 OSCL_wHeapString<OsclMemAllocator> temp; 644 if (_pITunesCommentAtom) 645 return _pITunesCommentAtom->getComment(); 646 else 647 return temp; 648 } 649 getThisTrackNo()650 uint16 getThisTrackNo() const 651 { 652 if (_pITunesTracktAtom) 653 return _pITunesTracktAtom->getThisTrackNo(); 654 else 655 return 0; 656 } 657 getTotalTracks()658 uint16 getTotalTracks() const 659 { 660 if (_pITunesTracktAtom) 661 return _pITunesTracktAtom->getTotalTracks(); 662 else 663 return 0; 664 } 665 IsCompilationPart()666 bool IsCompilationPart() const 667 { 668 if (_pITunesCompileAtom) 669 return _pITunesCompileAtom->IsCompilationPart(); 670 else 671 return false; 672 } 673 IsContentRating()674 bool IsContentRating() const 675 { 676 if (_pITunesContentRatingAtom) 677 return _pITunesContentRatingAtom->IsContentRating(); 678 else 679 return false; 680 } 681 getBeatsPerMinute()682 uint16 getBeatsPerMinute() const 683 { 684 if (_pITunesTempoAtom) 685 return _pITunesTempoAtom->getBeatsPerMinute(); 686 else 687 return 0; 688 } 689 getITunesCopyright()690 OSCL_wHeapString<OsclMemAllocator> getITunesCopyright() const 691 { 692 OSCL_wHeapString<OsclMemAllocator> temp; 693 if (_pITunesCopyrightAtom) 694 return _pITunesCopyrightAtom->getITunesCopyright(); 695 else 696 return temp; 697 } 698 getITunesDescription()699 OSCL_wHeapString<OsclMemAllocator> getITunesDescription() const 700 { 701 OSCL_wHeapString<OsclMemAllocator> temp; 702 if (_pITunesDescriptionAtom) 703 return _pITunesDescriptionAtom->getITunesDescription(); 704 else 705 return temp; 706 } 707 708 getImageData()709 PvmfApicStruct* getImageData() const 710 { 711 if (_pITunesCoverImageAtom) 712 return _pITunesCoverImageAtom->getImageData(); 713 else 714 return NULL; 715 } 716 getThisDiskNo()717 uint16 getThisDiskNo() const 718 { 719 if (_pITunesDiskDatatAtom) 720 return _pITunesDiskDatatAtom->getThisDiskNo(); 721 else 722 return 0; 723 } 724 getTotalDisks()725 uint16 getTotalDisks() const 726 { 727 if (_pITunesDiskDatatAtom) 728 return _pITunesDiskDatatAtom->getTotalDisks(); 729 else 730 return 0; 731 } 732 733 734 getNormalizationData()735 OSCL_wHeapString<OsclMemAllocator> getNormalizationData() const 736 { 737 OSCL_wHeapString<OsclMemAllocator> temp; 738 if (_pITunesNormalizationFreeFormDataAtom) 739 return _pITunesNormalizationFreeFormDataAtom->getString(); 740 else 741 return temp; 742 } 743 744 getCDIdentifierData(uint8 index)745 OSCL_wHeapString<OsclMemAllocator> getCDIdentifierData(uint8 index) const 746 { 747 OSCL_wHeapString<OsclMemAllocator> temp; 748 if ((index >= _iITunesCDIdentifierFreeFormDataAtomNum) || (index > MAX_CD_IDENTIFIER_FREE_DATA_ATOM)) 749 return temp; 750 751 if (_pITunesCDIdentifierFreeFormDataAtom[index]) 752 return _pITunesCDIdentifierFreeFormDataAtom[index]->getString(); 753 else 754 return temp; 755 } 756 getTotalCDIdentifierData()757 uint8 getTotalCDIdentifierData() const 758 { 759 760 return _iITunesCDIdentifierFreeFormDataAtomNum; 761 762 } 763 getCDTrackNumberData()764 OSCL_wHeapString<OsclMemAllocator> getCDTrackNumberData() const 765 { 766 OSCL_wHeapString<OsclMemAllocator> temp; 767 if (_pITunesCDTrackNumberFreeFormDataAtom) 768 return _pITunesCDTrackNumberFreeFormDataAtom->getString(); 769 else 770 return temp; 771 } 772 getCDDB1Data()773 OSCL_wHeapString<OsclMemAllocator> getCDDB1Data() const 774 { 775 OSCL_wHeapString<OsclMemAllocator> temp; 776 if (_pITunesCDDB1FreeFormDataAtom) 777 return _pITunesCDDB1FreeFormDataAtom->getString(); 778 else 779 return temp; 780 } 781 getLyrics()782 OSCL_wHeapString<OsclMemAllocator> getLyrics() const 783 { 784 OSCL_wHeapString<OsclMemAllocator> temp; 785 if (_pITunesLyricsAtom) 786 return _pITunesLyricsAtom->getLyrics(); 787 else 788 return temp; 789 } 790 791 private: 792 793 //Meaning String 794 ItunesMeaningAtom *_pITunesMeaningAtom; 795 Oscl_Vector<ItunesMeaningAtom*, OsclMemAllocator> *_pMeaningAtomVec; 796 //Name String 797 ItunesNameAtom *_pITunesNameAtom; 798 Oscl_Vector<ItunesNameAtom*, OsclMemAllocator> *_pNameAtomVec; 799 // Title/Name Atom 800 ITunesTitleAtom *_pITunesTitleAtom; 801 802 //Track's subtitle 803 ITunesTrackSubTitleAtom *_pITunesTrackSubTitleAtom; 804 805 // Artist/Performer of the Song 806 ITunesArtistAtom *_pITunesArtistAtom; 807 808 //Artist for the whole album (if different than the individual tracks) 809 ITunesAlbumArtistAtom *_pITunesAlbumArtistAtom; 810 811 // Album of Song 812 ITunesAlbumAtom *_pITunesAlbumAtom; 813 814 // Genre 815 ITunesGenreAtom *_pITunesGenreAtom; 816 817 // 4 byte String representing Year, when song was recorded. 818 ITunesYearAtom *_pITunesYearAtom; 819 820 // Tool/Encoder used for creation of this file. 821 ITunesToolAtom *_pITunesToolAtom; 822 823 //Person or company that encoded the recording 824 ITunesEncodedByAtom *_pITunesEncodedByAtom; 825 826 // Writer of the Song 827 ITunesWriterAtom *_pITunesWriterAtom; 828 829 // Group data. 830 ITunesGroupAtom *_pITunesGroupAtom; 831 832 // Comment 833 ITunesCommentAtom *_pITunesCommentAtom; 834 835 // Track Number 836 ITunesTracktAtom *_pITunesTracktAtom; 837 838 // Whether this file is the Part of Compilation or not. 839 ITunesCompileAtom *_pITunesCompileAtom; 840 841 // Does song have explicit content? 842 ITunesContentRatingAtom *_pITunesContentRatingAtom; 843 844 // Number of Beats per Minute 845 ITunesTempoAtom *_pITunesTempoAtom; 846 847 ITunesCopyrightAtom *_pITunesCopyrightAtom; 848 849 ITunesDescriptionAtom *_pITunesDescriptionAtom; 850 851 852 // Album Art Data- PNG Image data 853 //PvmfApicStruct _PNGimageData; 854 ITunesCoverImageAtom *_pITunesCoverImageAtom; 855 856 // Disk Number 857 ITunesDiskDatatAtom *_pITunesDiskDatatAtom; 858 859 // Normalization Free Form Data 860 ITunesFreeFormDataAtom *_pITunesNormalizationFreeFormDataAtom; 861 862 // Normalization Free Form Tool Data 863 ITunesFreeFormDataAtom *_pITunesNormalizationFreeFormDataToolAtom; 864 865 // CD Identifier Free Form Data 866 uint8 _iITunesCDIdentifierFreeFormDataAtomNum; 867 ITunesFreeFormDataAtom *_pITunesCDIdentifierFreeFormDataAtom[MAX_CD_IDENTIFIER_FREE_DATA_ATOM]; 868 869 //CD Track Number Free Form Data 870 ITunesFreeFormDataAtom *_pITunesCDTrackNumberFreeFormDataAtom; 871 872 // CD Identifier Free Form Data 873 ITunesFreeFormDataAtom *_pITunesCDDB1FreeFormDataAtom; 874 875 // Lyrics of the Song 876 ITunesLyricsAtom *_pITunesLyricsAtom; 877 878 PVLogger *iLogger; 879 }; 880 881 882 #endif //ITUNESILSTATOM_H_INCLUDED 883