1 /*************************************************************************** 2 copyright : (C) 2006 by Lukáš Lalinský 3 email : lalinsky@gmail.com 4 5 copyright : (C) 2002 - 2008 by Scott Wheeler 6 email : wheeler@kde.org 7 (original Vorbis implementation) 8 ***************************************************************************/ 9 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. * 14 * * 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. * 19 * * 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., 51 Franklin Street, Fifth Floor, Boston, MA * 23 * 02110-1301 USA * 24 * * 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 ***************************************************************************/ 29 30 #ifndef TAGLIB_SPEEXPROPERTIES_H 31 #define TAGLIB_SPEEXPROPERTIES_H 32 33 #include "audioproperties.h" 34 35 namespace TagLib { 36 37 namespace Ogg { 38 39 namespace Speex { 40 41 class File; 42 43 //! An implementation of audio property reading for Ogg Speex 44 45 /*! 46 * This reads the data from an Ogg Speex stream found in the AudioProperties 47 * API. 48 */ 49 50 class TAGLIB_EXPORT Properties : public AudioProperties 51 { 52 public: 53 /*! 54 * Create an instance of Speex::Properties with the data read from the 55 * Speex::File \a file. 56 */ 57 Properties(File *file, ReadStyle style = Average); 58 59 /*! 60 * Destroys this Speex::Properties instance. 61 */ 62 virtual ~Properties(); 63 64 /*! 65 * Returns the length of the file in seconds. The length is rounded down to 66 * the nearest whole second. 67 * 68 * \note This method is just an alias of lengthInSeconds(). 69 * 70 * \deprecated 71 */ 72 virtual int length() const; 73 74 /*! 75 * Returns the length of the file in seconds. The length is rounded down to 76 * the nearest whole second. 77 * 78 * \see lengthInMilliseconds() 79 */ 80 // BIC: make virtual 81 int lengthInSeconds() const; 82 83 /*! 84 * Returns the length of the file in milliseconds. 85 * 86 * \see lengthInSeconds() 87 */ 88 // BIC: make virtual 89 int lengthInMilliseconds() const; 90 91 /*! 92 * Returns the average bit rate of the file in kb/s. 93 */ 94 virtual int bitrate() const; 95 96 /*! 97 * Returns the nominal bit rate as read from the Speex header in kb/s. 98 */ 99 int bitrateNominal() const; 100 101 /*! 102 * Returns the sample rate in Hz. 103 */ 104 virtual int sampleRate() const; 105 106 /*! 107 * Returns the number of audio channels. 108 */ 109 virtual int channels() const; 110 111 /*! 112 * Returns the Speex version, currently "0" (as specified by the spec). 113 */ 114 int speexVersion() const; 115 116 private: 117 Properties(const Properties &); 118 Properties &operator=(const Properties &); 119 120 void read(File *file); 121 122 class PropertiesPrivate; 123 PropertiesPrivate *d; 124 }; 125 } 126 } 127 } 128 129 #endif 130