• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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