mpeg/id3v2/frames/urllinkframe.h
mpeg/id3v2/frames/chapterframe.h
mpeg/id3v2/frames/tableofcontentsframe.h
+ mpeg/id3v2/frames/podcastframe.h
ogg/oggfile.h
ogg/oggpage.h
ogg/oggpageheader.h
mpeg/id3v2/frames/urllinkframe.cpp
mpeg/id3v2/frames/chapterframe.cpp
mpeg/id3v2/frames/tableofcontentsframe.cpp
+ mpeg/id3v2/frames/podcastframe.cpp
)
set(ogg_SRCS
--- /dev/null
+/***************************************************************************
+ copyright : (C) 2015 by Urs Fleisch
+ email : ufleisch@users.sourceforge.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * 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 *
+ * *
+ * Alternatively, this file is available under the Mozilla Public *
+ * License Version 1.1. You may obtain a copy of the License at *
+ * http://www.mozilla.org/MPL/ *
+ ***************************************************************************/
+
+#include "podcastframe.h"
+
+using namespace TagLib;
+using namespace ID3v2;
+
+class PodcastFrame::PodcastFramePrivate
+{
+public:
+ ByteVector fieldData;
+};
+
+////////////////////////////////////////////////////////////////////////////////
+// public members
+////////////////////////////////////////////////////////////////////////////////
+
+PodcastFrame::PodcastFrame() : Frame("PCST")
+{
+ d = new PodcastFramePrivate;
+ d->fieldData = ByteVector(4, '\0');
+}
+
+PodcastFrame::~PodcastFrame()
+{
+ delete d;
+}
+
+String PodcastFrame::toString() const
+{
+ return String();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// protected members
+////////////////////////////////////////////////////////////////////////////////
+
+void PodcastFrame::parseFields(const ByteVector &data)
+{
+ d->fieldData = data;
+}
+
+ByteVector PodcastFrame::renderFields() const
+{
+ return d->fieldData;
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// private members
+////////////////////////////////////////////////////////////////////////////////
+
+PodcastFrame::PodcastFrame(const ByteVector &data, Header *h) : Frame(h)
+{
+ d = new PodcastFramePrivate;
+ parseFields(fieldData(data));
+}
--- /dev/null
+/***************************************************************************
+ copyright : (C) 2015 by Urs Fleisch
+ email : ufleisch@users.sourceforge.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * 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 *
+ * *
+ * Alternatively, this file is available under the Mozilla Public *
+ * License Version 1.1. You may obtain a copy of the License at *
+ * http://www.mozilla.org/MPL/ *
+ ***************************************************************************/
+
+#ifndef TAGLIB_PODCASTFRAME_H
+#define TAGLIB_PODCASTFRAME_H
+
+#include "id3v2frame.h"
+#include "taglib_export.h"
+
+namespace TagLib {
+
+ namespace ID3v2 {
+
+ //! ID3v2 podcast frame
+ /*!
+ * An implementation of ID3v2 podcast flag, a frame with four zero bytes.
+ */
+ class TAGLIB_EXPORT PodcastFrame : public Frame
+ {
+ friend class FrameFactory;
+
+ public:
+ /*!
+ * Construct a podcast frame.
+ */
+ PodcastFrame();
+
+ /*!
+ * Destroys this PodcastFrame instance.
+ */
+ virtual ~PodcastFrame();
+
+ /*!
+ * Returns a null string.
+ */
+ virtual String toString() const;
+
+ protected:
+ // Reimplementations.
+
+ virtual void parseFields(const ByteVector &data);
+ virtual ByteVector renderFields() const;
+
+ private:
+ /*!
+ * The constructor used by the FrameFactory.
+ */
+ PodcastFrame(const ByteVector &data, Header *h);
+ PodcastFrame(const PodcastFrame &);
+ PodcastFrame &operator=(const PodcastFrame &);
+
+ class PodcastFramePrivate;
+ PodcastFramePrivate *d;
+ };
+
+ }
+}
+#endif
#include "frames/eventtimingcodesframe.h"
#include "frames/chapterframe.h"
#include "frames/tableofcontentsframe.h"
+#include "frames/podcastframe.h"
using namespace TagLib;
using namespace ID3v2;
if(frameID == "CTOC")
return new TableOfContentsFrame(tagHeader, data, header);
+ // Apple proprietary PCST (Podcast)
+
+ if(frameID == "PCST")
+ return new PodcastFrame(data, header);
+
return new UnknownFrame(data, header);
}