Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Commit missing files

  • Loading branch information...
commit 6df1371963025582282c76d5edbb150c275ee087 1 parent 187adb6
@paulcbetts authored
Showing with 5,439 additions and 0 deletions.
  1. +37 −0 ext/taglib/taglib/aac/aacfiletyperesolver.h
  2. +83 −0 ext/taglib/taglib/audible/audibleproperties.h
  3. +183 −0 ext/taglib/taglib/audible/audibletag.h
  4. +93 −0 ext/taglib/taglib/audible/taglib_audiblefile.h
  5. +37 −0 ext/taglib/taglib/audible/taglib_audiblefiletyperesolver.h
  6. +45 −0 ext/taglib/taglib/m4a/boxfactory.h
  7. +50 −0 ext/taglib/taglib/m4a/itunesalbbox.h
  8. +50 −0 ext/taglib/taglib/m4a/itunesartbox.h
  9. +50 −0 ext/taglib/taglib/m4a/itunescmtbox.h
  10. +50 −0 ext/taglib/taglib/m4a/itunescvrbox.h
  11. +53 −0 ext/taglib/taglib/m4a/itunesdatabox.h
  12. +50 −0 ext/taglib/taglib/m4a/itunesdaybox.h
  13. +50 −0 ext/taglib/taglib/m4a/itunesdiskbox.h
  14. +50 −0 ext/taglib/taglib/m4a/itunesgenbox.h
  15. +50 −0 ext/taglib/taglib/m4a/itunesgrpbox.h
  16. +50 −0 ext/taglib/taglib/m4a/itunesnambox.h
  17. +50 −0 ext/taglib/taglib/m4a/itunestmpobox.h
  18. +50 −0 ext/taglib/taglib/m4a/itunestrknbox.h
  19. +50 −0 ext/taglib/taglib/m4a/ituneswrtbox.h
  20. +73 −0 ext/taglib/taglib/m4a/mp4audioproperties.h
  21. +57 −0 ext/taglib/taglib/m4a/mp4audiosampleentry.h
  22. +168 −0 ext/taglib/taglib/m4a/mp4file.h
  23. +63 −0 ext/taglib/taglib/m4a/mp4fourcc.h
  24. +53 −0 ext/taglib/taglib/m4a/mp4hdlrbox.h
  25. +49 −0 ext/taglib/taglib/m4a/mp4ilstbox.h
  26. +67 −0 ext/taglib/taglib/m4a/mp4isobox.h
  27. +57 −0 ext/taglib/taglib/m4a/mp4isofullbox.h
  28. +95 −0 ext/taglib/taglib/m4a/mp4itunestag.h
  29. +49 −0 ext/taglib/taglib/m4a/mp4mdiabox.h
  30. +49 −0 ext/taglib/taglib/m4a/mp4metabox.h
  31. +51 −0 ext/taglib/taglib/m4a/mp4minfbox.h
  32. +49 −0 ext/taglib/taglib/m4a/mp4moovbox.h
  33. +65 −0 ext/taglib/taglib/m4a/mp4mvhdbox.h
  34. +65 −0 ext/taglib/taglib/m4a/mp4propsproxy.h
  35. +54 −0 ext/taglib/taglib/m4a/mp4sampleentry.h
  36. +50 −0 ext/taglib/taglib/m4a/mp4skipbox.h
  37. +51 −0 ext/taglib/taglib/m4a/mp4stblbox.h
  38. +51 −0 ext/taglib/taglib/m4a/mp4stsdbox.h
  39. +99 −0 ext/taglib/taglib/m4a/mp4tagsproxy.h
  40. +49 −0 ext/taglib/taglib/m4a/mp4trakbox.h
  41. +49 −0 ext/taglib/taglib/m4a/mp4udtabox.h
  42. +37 −0 ext/taglib/taglib/m4a/taglib_mp4filetyperesolver.h
  43. +86 −0 ext/taglib/taglib/mp4/mp4file.h
  44. +86 −0 ext/taglib/taglib/mp4/mp4properties.h
  45. +228 −0 ext/taglib/taglib/mp4/mp4tag.h
  46. +39 −0 ext/taglib/taglib/mp4/taglib_mp4filetyperesolver.h
  47. +346 −0 ext/taglib/taglib/rmff/rmff.h
  48. +132 −0 ext/taglib/taglib/rmff/taglib_realmediafile.h
  49. +40 −0 ext/taglib/taglib/rmff/taglib_realmediafiletyperesolver.h
  50. +93 −0 ext/taglib/taglib/speex/speexfile.h
  51. +83 −0 ext/taglib/taglib/speex/speexproperties.h
  52. +37 −0 ext/taglib/taglib/speex/taglib_speexfiletyperesolver.h
  53. +28 −0 ext/taglib/taglib/tplugins.h
  54. +171 −0 ext/taglib/taglib/trueaudio/combinedtag.h
  55. +37 −0 ext/taglib/taglib/trueaudio/taglib_trueaudiofiletyperesolver.h
  56. +178 −0 ext/taglib/taglib/trueaudio/ttafile.h
  57. +85 −0 ext/taglib/taglib/trueaudio/ttaproperties.h
  58. +92 −0 ext/taglib/taglib/wav/wavfile.h
  59. +37 −0 ext/taglib/taglib/wav/wavfiletyperesolver.h
  60. +83 −0 ext/taglib/taglib/wav/wavproperties.h
  61. +171 −0 ext/taglib/taglib/wavpack/combinedtag.h
  62. +37 −0 ext/taglib/taglib/wavpack/taglib_wavpackfiletyperesolver.h
  63. +160 −0 ext/taglib/taglib/wavpack/wvfile.h
  64. +85 −0 ext/taglib/taglib/wavpack/wvproperties.h
  65. +40 −0 ext/taglib/taglib/wma/taglib_wmafiletyperesolver.h
  66. +125 −0 ext/taglib/taglib/wma/wmaattribute.h
  67. +100 −0 ext/taglib/taglib/wma/wmafile.h
  68. +71 −0 ext/taglib/taglib/wma/wmaproperties.h
  69. +188 −0 ext/taglib/taglib/wma/wmatag.h
View
37 ext/taglib/taglib/aac/aacfiletyperesolver.h
@@ -0,0 +1,37 @@
+/***************************************************************************
+ copyright : (C) 2006 by Martin Aumueller
+ email : aumuell@reserv.at
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef TAGLIB_AACFILETYPERESOLVER_H
+#define TAGLIB_AACFILETYPERESOLVER_H
+
+#include <tfile.h>
+#include <fileref.h>
+
+
+class AACFileTypeResolver : public TagLib::FileRef::FileTypeResolver
+{
+ TagLib::File *createFile(const char *fileName,
+ bool readAudioProperties,
+ TagLib::AudioProperties::ReadStyle audioPropertiesStyle) const;
+ ~AACFileTypeResolver() {}
+};
+
+#endif
View
83 ext/taglib/taglib/audible/audibleproperties.h
@@ -0,0 +1,83 @@
+/***************************************************************************
+ copyright : (C) 2005 by Martin Aumueller
+ email : aumuell@reserv.at
+
+ copyright : (C) 2005 by Andy Leadbetter
+ email : andrew.leadbetter@gmail.com
+ (original mp4 implementation)
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef TAGLIB_AUDIBLEPROPERTIES_H
+#define TAGLIB_AUDIBLEPROPERTIES_H
+
+#include <audioproperties.h>
+#include <tstring.h>
+
+namespace TagLib {
+
+ namespace Audible {
+
+ class File;
+
+ /*!
+ * This reads the data from a Audible stream to support the
+ * AudioProperties API.
+ */
+
+ class Properties : public AudioProperties
+ {
+ public:
+ /*!
+ * Initialize this structure
+ */
+ Properties(Properties::ReadStyle style);
+
+ /*!
+ * Destroys this Audible Properties instance.
+ */
+ virtual ~Properties();
+
+ // Reimplementations.
+
+ virtual int length() const;
+ virtual int bitrate() const;
+ virtual int sampleRate() const;
+ virtual int channels() const;
+
+ void readAudibleProperties(FILE *file, int off);
+
+
+ private:
+ void readAudioTrackProperties(FILE *file);
+ friend class Audible::File;
+
+ int m_length;
+ int m_bitrate;
+ int m_sampleRate;
+ int m_channels;
+
+ Properties(const Properties &);
+ Properties &operator=(const Properties &);
+
+ void read();
+ };
+ }
+}
+
+#endif
View
183 ext/taglib/taglib/audible/audibletag.h
@@ -0,0 +1,183 @@
+/***************************************************************************
+ copyright : (C) 2005 by Martin Aumueller
+ email : aumuell@reserv.at
+
+ copyright : (C) 2005 by Andy Leadbetter
+ email : andrew.leadbetter@gmail.com
+ (original mp4 implementation)
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef TAGLIB_AUDIBLETAG_H
+#define TAGLIB_AUDIBLETAG_H
+
+#include <tag.h>
+#include "taglib_audiblefile.h"
+
+namespace TagLib {
+
+ namespace Audible {
+ /*!
+ * This implements the generic TagLib::Tag API
+ */
+ class Tag : public TagLib::Tag
+ {
+ public:
+ Tag();
+
+ /*!
+ * read tags from the aa file.
+ */
+ void readTags( FILE *file );
+
+ /*!
+ * Destroys this AudibleTag instance.
+ */
+ virtual ~Tag();
+
+ /*!
+ * Returns the track name; if no track name is present in the tag
+ * String::null will be returned.
+ */
+ virtual String title() const { return m_title; }
+
+ /*!
+ * Returns the artist name; if no artist name is present in the tag
+ * String::null will be returned.
+ */
+ virtual String artist() const { return m_artist; }
+
+ /*!
+ * Returns the album name; if no album name is present in the tag
+ * String::null will be returned.
+ */
+ virtual String album() const { return m_album; }
+
+ /*!
+ * Returns the track comment; if no comment is present in the tag
+ * String::null will be returned.
+ */
+ virtual String comment() const { return m_comment; }
+
+ /*!
+ * Returns the genre name; if no genre is present in the tag String::null
+ * will be returned.
+ */
+ virtual String genre() const { return m_genre; }
+
+ /*!
+ * Returns the year; if there is no year set, this will return 0.
+ */
+ virtual TagLib::uint year() const { return m_year; }
+
+ /*!
+ * Returns the track number; if there is no track number set, this will
+ * return 0.
+ */
+ virtual TagLib::uint track() const { return m_track; }
+
+ /*!
+ * Returns the user id for this file.
+ */
+ virtual TagLib::uint userID() const { return m_userID; }
+
+ /*!
+ * Sets the title to \a s. If \a s is String::null then this value will be
+ * cleared.
+ */
+ virtual void setTitle(const String &s) { m_title = s; }
+
+ /*!
+ * Sets the artist to \a s. If \a s is String::null then this value will be
+ * cleared.
+ */
+ virtual void setArtist(const String &s) { m_artist = s; }
+
+ /*!
+ * Sets the album to \a s. If \a s is String::null then this value will be
+ * cleared.
+ */
+ virtual void setAlbum(const String &s) { m_album = s; }
+
+ /*!
+ * Sets the album to \a s. If \a s is String::null then this value will be
+ * cleared.
+ */
+ virtual void setComment(const String &s) { m_comment = s; }
+
+ /*!
+ * Sets the genre to \a s. If \a s is String::null then this value will be
+ * cleared. For tag formats that use a fixed set of genres, the appropriate
+ * value will be selected based on a string comparison. A list of available
+ * genres for those formats should be available in that type's
+ * implementation.
+ */
+ virtual void setGenre(const String &s) { m_genre = s; }
+
+ /*!
+ * Sets the year to \a i. If \a s is 0 then this value will be cleared.
+ */
+ virtual void setYear(uint i) { m_year = i; }
+
+ /*!
+ * Sets the track to \a i. If \a s is 0 then this value will be cleared.
+ */
+ virtual void setTrack(uint i) { m_track = i; }
+
+ /*!
+ * Returns true if the tag does not contain any data. This should be
+ * reimplemented in subclasses that provide more than the basic tagging
+ * abilities in this class.
+ */
+ virtual bool isEmpty() const;
+
+ /*!
+ * Copies the generic data from one tag to another.
+ *
+ * \note This will not affect any of the lower level details of the tag. For
+ * instance if any of the tag type specific data (maybe a URL for a band) is
+ * set, this will not modify or copy that. This just copies using the API
+ * in this class.
+ *
+ * If \a overwrite is true then the values will be unconditionally copied.
+ * If false only empty values will be overwritten.
+ */
+ static void duplicate(const Tag *source, Tag *target, bool overwrite = true);
+
+ virtual void setUserID(uint id) { m_userID = id; }
+
+ int getTagsEndOffset();
+
+
+
+ protected:
+ String m_title;
+ String m_artist;
+ String m_album;
+ String m_comment;
+ String m_genre;
+ TagLib::uint m_year;
+ TagLib::uint m_track;
+ TagLib::uint m_userID;
+ bool readTag( FILE *fp, char **name, char **value);
+ int m_tagsEndOffset;
+ };
+ }
+}
+
+#endif
View
93 ext/taglib/taglib/audible/taglib_audiblefile.h
@@ -0,0 +1,93 @@
+/***************************************************************************
+ copyright : (C) 2005 by Martin Aumueller
+ email : aumuell@reserv.at
+
+ copyright : (C) 2005 by Andy Leadbetter
+ email : andrew.leadbetter@gmail.com
+ (original mp4 implementation)
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef TAGLIB_AUDIBLEFILE_H
+#define TAGLIB_AUDIBLEFILE_H
+
+#include <tfile.h>
+#include "audibleproperties.h"
+#include "audibletag.h"
+
+namespace TagLib {
+
+ namespace Audible {
+
+ class Tag;
+
+ class File : public TagLib::File
+ {
+ public:
+ /*!
+ * Contructs a Audible file from \a file. If \a readProperties is true the
+ * file's audio properties will also be read using \a propertiesStyle. If
+ * false, \a propertiesStyle is ignored.
+ */
+ explicit File(const char *file, bool readProperties = true,
+ Properties::ReadStyle propertiesStyle = Properties::Average,
+ FILE *fp=NULL);
+
+ /*!
+ * Destroys this instance of the File.
+ */
+ virtual ~File();
+
+
+ virtual TagLib::Tag *tag() const;
+
+ /*!
+ * Returns the Audible::Properties for this file. If no audio properties
+ * were read then this will return a null pointer.
+ */
+ virtual Audible::Properties *audioProperties() const;
+
+ /*!
+ * Save the file.
+ * This is the same as calling save(AllTags);
+ *
+ * \note As of now, saving Audible tags is not supported.
+ */
+ virtual bool save();
+
+ void read(bool readProperties, Properties::ReadStyle propertiesStyle);
+
+ Audible::Tag *getAudibleTag() const;
+
+ bool isAudibleFile() const;
+
+ protected:
+ File(const File &);
+ File &operator=(const File &);
+ bool isOpen();
+
+
+ Audible::Tag *audibletag;
+ Audible::Properties *properties;
+
+ FILE *audiblefile;
+ };
+ }
+}
+
+#endif
View
37 ext/taglib/taglib/audible/taglib_audiblefiletyperesolver.h
@@ -0,0 +1,37 @@
+/***************************************************************************
+ copyright : (C) 2005 by Martin Aumueller
+ email : aumuell@reserv.at
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef TAGLIB_AUDIBLEFILETYPERESOLVER_H
+#define TAGLIB_AUDIBLEFILETYPERESOLVER_H
+
+#include <tfile.h>
+#include <fileref.h>
+
+
+class AudibleFileTypeResolver : public TagLib::FileRef::FileTypeResolver
+{
+ TagLib::File *createFile(const char *fileName,
+ bool readAudioProperties,
+ TagLib::AudioProperties::ReadStyle audioPropertiesStyle) const;
+ ~AudibleFileTypeResolver() {}
+};
+
+#endif
View
45 ext/taglib/taglib/m4a/boxfactory.h
@@ -0,0 +1,45 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef BOXFACTORY_H
+#define BOXFACTORY_H
+
+#include "taglib.h"
+#include "mp4isobox.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class BoxFactory
+ {
+ public:
+ BoxFactory();
+ ~BoxFactory();
+
+ //! factory function
+ Mp4IsoBox* createInstance( TagLib::File* anyfile, MP4::Fourcc fourcc, TagLib::uint size, long offset ) const;
+ }; // class BoxFactory
+
+ } // namepace MP4
+} // namepace TagLib
+
+#endif // BOXFACTORY_H
View
50 ext/taglib/taglib/m4a/itunesalbbox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESALBBOX_H
+#define ITUNESALBBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesAlbBox: public Mp4IsoBox
+ {
+ public:
+ ITunesAlbBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesAlbBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesAlbBoxPrivate;
+ ITunesAlbBoxPrivate* d;
+ }; // class ITunesAlbBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESALBBOX_H
View
50 ext/taglib/taglib/m4a/itunesartbox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESARTBOX_H
+#define ITUNESARTBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesArtBox: public Mp4IsoBox
+ {
+ public:
+ ITunesArtBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesArtBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesArtBoxPrivate;
+ ITunesArtBoxPrivate* d;
+ }; // class ITunesArtBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESARTBOX_H
View
50 ext/taglib/taglib/m4a/itunescmtbox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESCMTBOX_H
+#define ITUNESCMTBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesCmtBox: public Mp4IsoBox
+ {
+ public:
+ ITunesCmtBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesCmtBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesCmtBoxPrivate;
+ ITunesCmtBoxPrivate* d;
+ }; // class ITunesCmtBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESCMTBOX_H
View
50 ext/taglib/taglib/m4a/itunescvrbox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESCVRBOX_H
+#define ITUNESCVRBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesCvrBox: public Mp4IsoBox
+ {
+ public:
+ ITunesCvrBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesCvrBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesCvrBoxPrivate;
+ ITunesCvrBoxPrivate* d;
+ }; // class ITunesCvrBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESCVRBOX_H
View
53 ext/taglib/taglib/m4a/itunesdatabox.h
@@ -0,0 +1,53 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESDATABOX_H
+#define ITUNESDATABOX_H
+
+#include "mp4isofullbox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesDataBox: public Mp4IsoFullBox
+ {
+ public:
+ ITunesDataBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesDataBox();
+
+ //! get the internal data, which can be txt or binary data as well
+ ByteVector data() const;
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesDataBoxPrivate;
+ ITunesDataBoxPrivate* d;
+ }; // class ITunesDataBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESDATABOX_H
View
50 ext/taglib/taglib/m4a/itunesdaybox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESDAYBOX_H
+#define ITUNESDAYBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesDayBox: public Mp4IsoBox
+ {
+ public:
+ ITunesDayBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesDayBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesDayBoxPrivate;
+ ITunesDayBoxPrivate* d;
+ }; // class ITunesDayBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESDAYBOX_H
View
50 ext/taglib/taglib/m4a/itunesdiskbox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESDISKBOX_H
+#define ITUNESDISKBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesDiskBox: public Mp4IsoBox
+ {
+ public:
+ ITunesDiskBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesDiskBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesDiskBoxPrivate;
+ ITunesDiskBoxPrivate* d;
+ }; // class ITunesDiskBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESDISKBOX_H
View
50 ext/taglib/taglib/m4a/itunesgenbox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESGENBOX_H
+#define ITUNESGENBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesGenBox: public Mp4IsoBox
+ {
+ public:
+ ITunesGenBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesGenBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesGenBoxPrivate;
+ ITunesGenBoxPrivate* d;
+ }; // class ITunesGenBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESGENBOX_H
View
50 ext/taglib/taglib/m4a/itunesgrpbox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESGRPBOX_H
+#define ITUNESGRPBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesGrpBox: public Mp4IsoBox
+ {
+ public:
+ ITunesGrpBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesGrpBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesGrpBoxPrivate;
+ ITunesGrpBoxPrivate* d;
+ }; // class ITunesGrpBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESGRPBOX_H
View
50 ext/taglib/taglib/m4a/itunesnambox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESNAMBOX_H
+#define ITUNESNAMBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesNamBox: public Mp4IsoBox
+ {
+ public:
+ ITunesNamBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesNamBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesNamBoxPrivate;
+ ITunesNamBoxPrivate* d;
+ }; // class ITunesNamBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESNAMBOX_H
View
50 ext/taglib/taglib/m4a/itunestmpobox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESTMPOBOX_H
+#define ITUNESTMPOBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesTmpoBox: public Mp4IsoBox
+ {
+ public:
+ ITunesTmpoBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesTmpoBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesTmpoBoxPrivate;
+ ITunesTmpoBoxPrivate* d;
+ }; // class ITunesTmpoBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESTMPOBOX_H
View
50 ext/taglib/taglib/m4a/itunestrknbox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESTRKNBOX_H
+#define ITUNESTRKNBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesTrknBox: public Mp4IsoBox
+ {
+ public:
+ ITunesTrknBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesTrknBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesTrknBoxPrivate;
+ ITunesTrknBoxPrivate* d;
+ }; // class ITunesTrknBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESTRKNBOX_H
View
50 ext/taglib/taglib/m4a/ituneswrtbox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef ITUNESWRTBOX_H
+#define ITUNESWRTBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class ITunesWrtBox: public Mp4IsoBox
+ {
+ public:
+ ITunesWrtBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~ITunesWrtBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class ITunesWrtBoxPrivate;
+ ITunesWrtBoxPrivate* d;
+ }; // class ITunesWrtBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // ITUNESWRTBOX_H
View
73 ext/taglib/taglib/m4a/mp4audioproperties.h
@@ -0,0 +1,73 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4AUDIOPROPERTIES_H
+#define MP4AUDIOPROPERTIES_H MP4AUDIOPROPERTIES_H
+
+#include "audioproperties.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4PropsProxy;
+
+ class AudioProperties : public TagLib::AudioProperties
+ {
+ public:
+ //! constructor
+ AudioProperties();
+ //! destructor
+ ~AudioProperties();
+
+ //! function to set the proxy
+ void setProxy( Mp4PropsProxy* proxy );
+
+ /*!
+ * Returns the length of the file in seconds.
+ */
+ int length() const;
+
+ /*!
+ * Returns the most appropriate bit rate for the file in kb/s. For constant
+ * bitrate formats this is simply the bitrate of the file. For variable
+ * bitrate formats this is either the average or nominal bitrate.
+ */
+ int bitrate() const;
+
+ /*!
+ * Returns the sample rate in Hz.
+ */
+ int sampleRate() const;
+
+ /*!
+ * Returns the number of audio channels.
+ */
+ int channels() const;
+
+ private:
+ class AudioPropertiesPrivate;
+ AudioPropertiesPrivate* d;
+ };
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4AUDIOPROPERTIES_H
View
57 ext/taglib/taglib/m4a/mp4audiosampleentry.h
@@ -0,0 +1,57 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4AUDIOSAMPLEENTRY_H
+#define MP4AUDIOSAMPLEENTRY_H
+
+#include "mp4sampleentry.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4AudioSampleEntry: public Mp4SampleEntry
+ {
+ public:
+ Mp4AudioSampleEntry( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4AudioSampleEntry();
+
+ //! function to get the number of channels
+ TagLib::uint channels() const;
+ //! function to get the sample rate
+ TagLib::uint samplerate() const;
+ //! function to get the average bitrate of the audio stream
+ TagLib::uint bitrate() const;
+
+ private:
+ //! parse the content of the box
+ void parseEntry();
+
+ protected:
+ class Mp4AudioSampleEntryPrivate;
+ Mp4AudioSampleEntryPrivate* d;
+ }; // class Mp4AudioSampleEntry
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4AUDIOSAMPLEENTRY_H
View
168 ext/taglib/taglib/m4a/mp4file.h
@@ -0,0 +1,168 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+/***************************************************************************
+ copyright : (C) 2002, 2003 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02110-1301 *
+ * USA *
+ ***************************************************************************/
+
+#ifndef TAGLIB_MP4FILE_H
+#define TAGLIB_MP4FILE_H
+
+#include <tfile.h>
+#include <audioproperties.h>
+#include "mp4fourcc.h"
+
+namespace TagLib {
+
+ typedef unsigned long long ulonglong;
+
+ class Tag;
+
+ namespace MP4
+ {
+ class Mp4TagsProxy;
+ class Mp4PropsProxy;
+
+ //! An implementation of TagLib::File with mp4 itunes specific methods
+
+ /*!
+ * This implements and provides an interface for mp4 itunes files to the
+ * TagLib::Tag and TagLib::AudioProperties interfaces by way of implementing
+ * the abstract TagLib::File API as well as providing some additional
+ * information specific to mp4 itunes files. (TODO)
+ */
+
+ class File : public TagLib::File
+ {
+ public:
+ /*!
+ * Contructs an mp4 itunes file from \a file. If \a readProperties is true the
+ * file's audio properties will also be read using \a propertiesStyle. If
+ * false, \a propertiesStyle is ignored.
+ */
+ explicit File(const char *file, bool readProperties = true,
+ TagLib::AudioProperties::ReadStyle propertiesStyle = TagLib::AudioProperties::Average);
+
+ /*!
+ * Destroys this instance of the File.
+ */
+ virtual ~File();
+
+ /*!
+ * Returns the Tag for this file. This will be an APE tag, an ID3v1 tag
+ * or a combination of the two.
+ */
+ virtual TagLib::Tag *tag() const;
+
+ /*!
+ * Returns the mp4 itunes::Properties for this file. If no audio properties
+ * were read then this will return a null pointer.
+ */
+ virtual AudioProperties *audioProperties() const;
+
+ /*!
+ * Saves the file.
+ */
+ virtual bool save();
+
+ /*!
+ * This will remove all tags.
+ *
+ * \note This will also invalidate pointers to the tags
+ * as their memory will be freed.
+ * \note In order to make the removal permanent save() still needs to be called
+ */
+ void remove();
+
+ /*!
+ * Helper function for parsing the MP4 file - reads the size and type of the next box.
+ * Returns true if read succeeded - not at EOF
+ */
+ bool readSizeAndType( TagLib::uint& size, MP4::Fourcc& fourcc );
+
+ /*!
+ * Helper function to read the length of an descriptor in systems manner
+ */
+ TagLib::uint readSystemsLen();
+
+ /*!
+ * Helper function for reading an unsigned int out of the file (big endian method)
+ */
+ bool readInt( TagLib::uint& toRead );
+
+ /*!
+ * Helper function for reading an unsigned short out of the file (big endian method)
+ */
+ bool readShort( TagLib::uint& toRead );
+
+ /*!
+ * Helper function for reading an unsigned long long (64bit) out of the file (big endian method)
+ */
+ bool readLongLong( TagLib::ulonglong& toRead );
+
+ /*!
+ * Helper function to read a fourcc code
+ */
+ bool readFourcc( TagLib::MP4::Fourcc& fourcc );
+
+ /*!
+ * Function to get the tags proxy for registration of the tags boxes.
+ * The proxy provides direct access to the data boxes of the certain tags - normally
+ * covered by several levels of subboxes
+ */
+ Mp4TagsProxy* tagProxy() const;
+
+ /*!
+ * Function to get the properties proxy for registration of the properties boxes.
+ * The proxy provides direct access to the needed boxes describing audio properties.
+ */
+ Mp4PropsProxy* propProxy() const;
+
+ private:
+ File(const File &);
+ File &operator=(const File &);
+
+ class FilePrivate;
+ FilePrivate * const d;
+ };
+
+ } // namespace MP4
+
+} // namespace TagLib
+
+#endif // TAGLIB_MP4FILE_H
View
63 ext/taglib/taglib/m4a/mp4fourcc.h
@@ -0,0 +1,63 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4FOURCC_H
+#define MP4FOURCC_H
+
+#include "tstring.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ /*! union for easy fourcc / type handling */
+ class Fourcc
+ {
+ public:
+ //! std constructor
+ Fourcc();
+ //! string constructor
+ Fourcc(TagLib::String fourcc);
+
+ //! destructor
+ ~Fourcc();
+
+ //! function to get a string version of the fourcc
+ TagLib::String toString() const;
+ //! cast operator to unsigned int
+ operator unsigned int() const;
+ //! comparison operator
+ bool operator == (unsigned int fourccB ) const;
+ //! comparison operator
+ bool operator != (unsigned int fourccB ) const;
+ //! assigment operator for unsigned int
+ Fourcc& operator = (unsigned int fourcc );
+ //! assigment operator for character string
+ Fourcc& operator = (char fourcc[4]);
+
+ private:
+ TagLib::uint m_fourcc; /*!< integer code of the fourcc */
+ };
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4FOURCC_H
View
53 ext/taglib/taglib/m4a/mp4hdlrbox.h
@@ -0,0 +1,53 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4HDLRBOX_H
+#define MP4HDLRBOX_H
+
+#include "mp4isofullbox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4HdlrBox: public Mp4IsoFullBox
+ {
+ public:
+ Mp4HdlrBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4HdlrBox();
+
+ //! parse hdlr contents
+ void parse();
+ //! get the handler type
+ MP4::Fourcc hdlr_type() const;
+ //! get the hdlr string
+ TagLib::String hdlr_string() const;
+
+ private:
+ class Mp4HdlrBoxPrivate;
+ Mp4HdlrBoxPrivate* d;
+ }; // Mp4HdlrBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4HDLRBOX_H
View
49 ext/taglib/taglib/m4a/mp4ilstbox.h
@@ -0,0 +1,49 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4ILSTBOX_H
+#define MP4ILSTBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4IlstBox: public Mp4IsoBox
+ {
+ public:
+ Mp4IlstBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4IlstBox();
+
+ //! parse ilst contents
+ void parse();
+
+ private:
+ class Mp4IlstBoxPrivate;
+ Mp4IlstBoxPrivate* d;
+ }; // Mp4IlstBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4ILSTBOX_H
View
67 ext/taglib/taglib/m4a/mp4isobox.h
@@ -0,0 +1,67 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4ISOBOX_H
+#define MP4ISOBOX_H
+
+#include "taglib.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ class File;
+
+ namespace MP4
+ {
+ class Mp4IsoBox
+ {
+ public:
+ //! constructor for base class
+ Mp4IsoBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ //! destructor - simply freeing private ptr
+ virtual ~Mp4IsoBox();
+
+ //! function to get the fourcc code
+ MP4::Fourcc fourcc() const;
+ //! function to get the size of tha atom/box
+ TagLib::uint size() const;
+ //! function to get the offset of the atom in the mp4 file
+ long offset() const;
+
+ //! parse wrapper to get common interface for both box and fullbox
+ virtual void parsebox();
+ //! pure virtual function for all subclasses to implement
+ virtual void parse() = 0;
+
+ protected:
+ //! function to get the file pointer
+ TagLib::File* file() const;
+
+ protected:
+ class Mp4IsoBoxPrivate;
+ Mp4IsoBoxPrivate* d;
+ };
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4ISOBOX_H
+
View
57 ext/taglib/taglib/m4a/mp4isofullbox.h
@@ -0,0 +1,57 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4ISOFULLBOX_H
+#define MP4ISOFULLBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4IsoFullBox : public Mp4IsoBox
+ {
+ public:
+ //! constructor for full box
+ Mp4IsoFullBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ //! destructor for mp4 iso full box
+ virtual ~Mp4IsoFullBox();
+
+ //! function to get the version of box
+ uchar version();
+ //! function to get the flag map
+ TagLib::uint flags();
+
+ //! parse wrapper to get common interface for both box and fullbox
+ virtual void parsebox();
+
+ protected:
+ class Mp4IsoFullBoxPrivate;
+ Mp4IsoFullBoxPrivate* d;
+ };
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4ISOFULLBOX_H
+
View
95 ext/taglib/taglib/m4a/mp4itunestag.h
@@ -0,0 +1,95 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4ITUNESTAG_H
+#define MP4ITUNESTAG_H
+
+#include "taglib.h"
+#include "tstring.h"
+#include "tag.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class File;
+
+ class Tag : public TagLib::Tag
+ {
+ public:
+ /*!
+ * Constructs an empty MP4 iTunes tag.
+ */
+ Tag( );
+
+ /*!
+ * Destroys this Tag instance.
+ */
+ virtual ~Tag();
+
+ // Reimplementations.
+
+ virtual String title() const;
+ virtual String artist() const;
+ virtual String album() const;
+ virtual String comment() const;
+ virtual String genre() const;
+ virtual TagLib::uint year() const;
+ virtual TagLib::uint track() const;
+
+ virtual void setTitle(const String &s);
+ virtual void setArtist(const String &s);
+ virtual void setAlbum(const String &s);
+ virtual void setComment(const String &s);
+ virtual void setGenre(const String &s);
+ virtual void setYear(const TagLib::uint i);
+ virtual void setTrack(const TagLib::uint i);
+
+ // MP4 specific fields
+
+ String grouping() const;
+ String composer() const;
+ TagLib::uint disk() const;
+ TagLib::uint bpm() const;
+ ByteVector cover() const;
+ int compilation() const { return -1; }
+
+ void setGrouping(const String &s);
+ void setComposer(const String &s);
+ void setDisk(const TagLib::uint i);
+ void setBpm(const TagLib::uint i);
+ void setCover( const ByteVector& cover );
+ void setCompilation( bool /*isCompilation*/ ) {}
+
+ virtual bool isEmpty() const;
+
+ private:
+ Tag(const Tag &);
+ Tag &operator=(const Tag &);
+
+ class TagPrivate;
+ TagPrivate * const d;
+ };
+ } // namespace MP4
+
+} // namespace TagLib
+
+#endif // MP4ITUNESTAG_H
View
49 ext/taglib/taglib/m4a/mp4mdiabox.h
@@ -0,0 +1,49 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4MDIABOX_H
+#define MP4MDIABOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4MdiaBox: public Mp4IsoBox
+ {
+ public:
+ Mp4MdiaBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4MdiaBox();
+
+ //! parse mdia contents
+ void parse();
+
+ private:
+ class Mp4MdiaBoxPrivate;
+ Mp4MdiaBoxPrivate* d;
+ }; // Mp4MdiaBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4MDIABOX_H
View
49 ext/taglib/taglib/m4a/mp4metabox.h
@@ -0,0 +1,49 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4METABOX_H
+#define MP4METABOX_H
+
+#include "mp4isofullbox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4MetaBox: public Mp4IsoFullBox
+ {
+ public:
+ Mp4MetaBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4MetaBox();
+
+ //! parse meta contents
+ void parse();
+
+ private:
+ class Mp4MetaBoxPrivate;
+ Mp4MetaBoxPrivate* d;
+ }; // Mp4MetaBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4METABOX_H
View
51 ext/taglib/taglib/m4a/mp4minfbox.h
@@ -0,0 +1,51 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4MINFBOX_H
+#define MP4MINFBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4MinfBox: public Mp4IsoBox
+ {
+ public:
+ Mp4MinfBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4MinfBox();
+
+ //! parse minf contents
+ void parse();
+ //! set the handler type - needed for stsd
+ void setHandlerType( MP4::Fourcc fourcc );
+
+ private:
+ class Mp4MinfBoxPrivate;
+ Mp4MinfBoxPrivate* d;
+ }; // Mp4MinfBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4MINFBOX_H
View
49 ext/taglib/taglib/m4a/mp4moovbox.h
@@ -0,0 +1,49 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4MOOVBOX_H
+#define MP4MOOVBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4MoovBox: public Mp4IsoBox
+ {
+ public:
+ Mp4MoovBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4MoovBox();
+
+ //! parse moov contents
+ void parse();
+
+ private:
+ class Mp4MoovBoxPrivate;
+ Mp4MoovBoxPrivate* d;
+ }; // Mp4MoovBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4MOOVBOX_H
View
65 ext/taglib/taglib/m4a/mp4mvhdbox.h
@@ -0,0 +1,65 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4MVHDBOX_H
+#define MP4MVHDBOX_H
+
+#include "mp4isofullbox.h"
+#include "mp4fourcc.h"
+#include "mp4file.h" // ulonglong
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4MvhdBox: public Mp4IsoFullBox
+ {
+ public:
+ Mp4MvhdBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4MvhdBox();
+
+ //! function to get the creation time of the mp4 file
+ ulonglong creationTime() const;
+ //! function to get the modification time of the mp4 file
+ ulonglong modificationTime() const;
+ //! function to get the timescale referenced by the above timestamps
+ TagLib::uint timescale() const;
+ //! function to get the presentation duration in the mp4 file
+ ulonglong duration() const;
+ //! function to get the rate (playout speed) - typically 1.0;
+ TagLib::uint rate() const;
+ //! function to get volume level for presentation - typically 1.0;
+ TagLib::uint volume() const;
+ //! function to get the track ID for adding new tracks - useless for this lib
+ TagLib::uint nextTrackID() const;
+
+ //! parse mvhd contents
+ void parse();
+
+ private:
+ class Mp4MvhdBoxPrivate;
+ Mp4MvhdBoxPrivate* d;
+ }; // Mp4MvhdBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4MVHDBOX_H
View
65 ext/taglib/taglib/m4a/mp4propsproxy.h
@@ -0,0 +1,65 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4PROPSPROXY_H
+#define MP4PROPSPROXY_H MP4PROPSPROXY_H
+#include "mp4mvhdbox.h"
+#include "mp4audiosampleentry.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ //! Mp4PropsProxy is used to access the stsd box and mvhd box directly
+ /*! this class works as a shortcut to avoid stepping through all parent boxes
+ * to access the boxes in question
+ */
+ class Mp4PropsProxy
+ {
+ public:
+ //! constructor for properties proxy
+ Mp4PropsProxy();
+ //! destructor
+ ~Mp4PropsProxy();
+
+ //! function to get length of media in seconds
+ TagLib::uint seconds() const;
+ //! function to get the nunmber of channels
+ TagLib::uint channels() const;
+ //! function to get the sample rate
+ TagLib::uint sampleRate() const;
+ //! function to get the bitrate rate
+ TagLib::uint bitRate() const;
+
+ //! function to register the movie header box - mvhd
+ void registerMvhd( MP4::Mp4MvhdBox* mvhdbox );
+ //! function to register the sample description box
+ void registerAudioSampleEntry( MP4::Mp4AudioSampleEntry* audiosampleentry );
+
+ private:
+ class Mp4PropsProxyPrivate;
+ Mp4PropsProxyPrivate* d;
+
+ }; // Mp4PropsProxy
+ } // MP4
+} // TagLib
+
+#endif // MP4PROPSPROXY_H
View
54 ext/taglib/taglib/m4a/mp4sampleentry.h
@@ -0,0 +1,54 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4SAMPLEENTRY_H
+#define MP4SAMPLEENTRY_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4SampleEntry: public Mp4IsoBox
+ {
+ public:
+ Mp4SampleEntry( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4SampleEntry();
+
+ public:
+ //! parse the content of the box
+ virtual void parse();
+
+ private:
+ //! function to be implemented in subclass
+ virtual void parseEntry() = 0;
+
+ protected:
+ class Mp4SampleEntryPrivate;
+ Mp4SampleEntryPrivate* d;
+ }; // class Mp4SampleEntry
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4SAMPLEENTRY_H
View
50 ext/taglib/taglib/m4a/mp4skipbox.h
@@ -0,0 +1,50 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4SKIPBOX_H
+#define MP4SKIPBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4SkipBox: public Mp4IsoBox
+ {
+ public:
+ Mp4SkipBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4SkipBox();
+
+ private:
+ //! parse the content of the box
+ virtual void parse();
+
+ protected:
+ class Mp4SkipBoxPrivate;
+ Mp4SkipBoxPrivate* d;
+ }; // class Mp4SkipBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4SKIPBOX_H
View
51 ext/taglib/taglib/m4a/mp4stblbox.h
@@ -0,0 +1,51 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4STBLBOX_H
+#define MP4STBLBOX_H
+
+#include "mp4isobox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4StblBox: public Mp4IsoBox
+ {
+ public:
+ Mp4StblBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4StblBox();
+
+ //! parse stbl contents
+ void parse();
+ //! set the handler type - needed for stsd
+ void setHandlerType( MP4::Fourcc fourcc );
+
+ private:
+ class Mp4StblBoxPrivate;
+ Mp4StblBoxPrivate* d;
+ }; // Mp4StblBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4STBLBOX_H
View
51 ext/taglib/taglib/m4a/mp4stsdbox.h
@@ -0,0 +1,51 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4STSDBOX_H
+#define MP4STSDBOX_H
+
+#include "mp4isofullbox.h"
+#include "mp4fourcc.h"
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ class Mp4StsdBox: public Mp4IsoFullBox
+ {
+ public:
+ Mp4StsdBox( TagLib::File* file, MP4::Fourcc fourcc, TagLib::uint size, long offset );
+ ~Mp4StsdBox();
+
+ //! parse stsd contents
+ void parse();
+ //! set the handler type - needed for stsd
+ void setHandlerType( MP4::Fourcc fourcc );
+
+ private:
+ class Mp4StsdBoxPrivate;
+ Mp4StsdBoxPrivate* d;
+ }; // Mp4StsdBox
+
+ } // namespace MP4
+} // namespace TagLib
+
+#endif // MP4STSDBOX_H
View
99 ext/taglib/taglib/m4a/mp4tagsproxy.h
@@ -0,0 +1,99 @@
+/***************************************************************************
+ copyright : (C) 2002, 2003, 2006 by Jochen Issing
+ email : jochen.issing@isign-softart.de
+ ***************************************************************************/
+
+/***************************************************************************
+ * This library is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License version *
+ * 2.1 as published by the Free Software Foundation. *
+ * *
+ * This library is distributed in the hope that it will be useful, but *
+ * WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
+ * Lesser General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public *
+ * License along with this library; if not, write to the Free Software *
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, *
+ * MA 02110-1301 USA *
+ ***************************************************************************/
+
+#ifndef MP4TAGSPROXY_H
+#define MP4TAGSPROXY_H
+
+namespace TagLib
+{
+ namespace MP4
+ {
+ // forward declaration(s)
+ class ITunesDataBox;
+ /*! proxy for mp4 itunes tag relevant boxes
+ *
+ * this class works as a proxy for the specific tag boxes
+ * in an mp4 itunes file. the boxes are mired in
+ * the mp4 file structure and stepping through all box layers
+ * is avoided by registration at the proxy object.
+ */
+ class Mp4TagsProxy
+ {
+ public:
+ /*! enum for all supported box types */
+ typedef enum
+ {
+ title = 0,
+ artist,
+ album,
+ cover,
+ genre,
+ year,
+ trackno,
+ comment,
+ grouping,
+ composer,
+ disk,
+ bpm
+ } EBoxType;
+
+ //! constructor
+ Mp4TagsProxy();
+ //! destructor
+ ~Mp4TagsProxy();
+
+ //! function to get the data box for the title
+ ITunesDataBox* titleData() const;
+ //! function to get the data box for the artist
+ ITunesDataBox* artistData() const;
+ //! function to get the data box for the album
+ ITunesDataBox* albumData() const;
+ //! function to get the data box for the genre
+ ITunesDataBox* genreData() const;
+ //! function to get the data box for the year
+ ITunesDataBox* yearData() const;
+ //! function to get the data box for the track number
+ ITunesDataBox* trknData() const;
+ //! function to get the data box for the comment
+ ITunesDataBox* commentData() const;
+ //! function to get the data box for the grouping
+ ITunesDataBox* groupingData() const;
+ //! function to get the data box for the composer
+ ITunesDataBox* composerData() const;
+ //! function to get the data box for the disk number
+ ITunesDataBox* diskData() const;
+ //! function to get the data box for the bpm
+ ITunesDataBox* bpmData() const;
+ //! function to get the data box for the cover
+ ITunesDataBox* coverData() const;
+
+ //! function to register a data box for a certain box type
+ void registerBox( EBoxType boxtype, ITunesDataBox* databox );
+
+ private:
+ class Mp4TagsProxyPrivate;
+ //! private data of tags proxy