1 /***************************************************************************
2 copyright : (C) 2006 by Lukáš Lalinský
3 email : lalinsky@gmail.com
5 copyright : (C) 2002 - 2008 by Scott Wheeler
6 email : wheeler@kde.org
7 (original Vorbis implementation)
8 ***************************************************************************/
10 /***************************************************************************
11 * This library is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU Lesser General Public License version *
13 * 2.1 as published by the Free Software Foundation. *
15 * This library is distributed in the hope that it will be useful, but *
16 * WITHOUT ANY WARRANTY; without even the implied warranty of *
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *
18 * Lesser General Public License for more details. *
20 * You should have received a copy of the GNU Lesser General Public *
21 * License along with this library; if not, write to the Free Software *
22 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 *
25 * Alternatively, this file is available under the Mozilla Public *
26 * License Version 1.1. You may obtain a copy of the License at *
27 * http://www.mozilla.org/MPL/ *
28 ***************************************************************************/
35 #include "speexfile.h"
37 using namespace TagLib;
38 using namespace TagLib::Ogg;
40 class Speex::File::FilePrivate
53 Ogg::XiphComment *comment;
54 Properties *properties;
57 ////////////////////////////////////////////////////////////////////////////////
59 ////////////////////////////////////////////////////////////////////////////////
61 Speex::File::File(FileName file, bool readProperties,
62 Properties::ReadStyle propertiesStyle) : Ogg::File(file)
65 read(readProperties, propertiesStyle);
73 Ogg::XiphComment *Speex::File::tag() const
78 Speex::Properties *Speex::File::audioProperties() const
83 bool Speex::File::save()
86 d->comment = new Ogg::XiphComment;
88 setPacket(1, d->comment->render());
90 return Ogg::File::save();
93 ////////////////////////////////////////////////////////////////////////////////
95 ////////////////////////////////////////////////////////////////////////////////
97 void Speex::File::read(bool readProperties, Properties::ReadStyle propertiesStyle)
99 ByteVector speexHeaderData = packet(0);
101 if(!speexHeaderData.startsWith("Speex ")) {
102 debug("Speex::File::read() -- invalid Speex identification header");
106 ByteVector commentHeaderData = packet(1);
108 d->comment = new Ogg::XiphComment(commentHeaderData);
111 d->properties = new Properties(this, propertiesStyle);