1 /*************************************************************************** 2 copyright : (C) 2003 by Allan Sandfeld Jensen 3 email : kde@carewolf.org 4 ***************************************************************************/ 5 6 /*************************************************************************** 7 * This library is free software; you can redistribute it and/or modify * 8 * it under the terms of the GNU Lesser General Public License version * 9 * 2.1 as published by the Free Software Foundation. * 10 * * 11 * This library is distributed in the hope that it will be useful, but * 12 * WITHOUT ANY WARRANTY; without even the implied warranty of * 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * 14 * Lesser General Public License for more details. * 15 * * 16 * You should have received a copy of the GNU Lesser General Public * 17 * License along with this library; if not, write to the Free Software * 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 19 * 02110-1301 USA * 20 * * 21 * Alternatively, this file is available under the Mozilla Public * 22 * License Version 1.1. You may obtain a copy of the License at * 23 * http://www.mozilla.org/MPL/ * 24 ***************************************************************************/ 25 26 #ifndef TAGLIB_FLACPROPERTIES_H 27 #define TAGLIB_FLACPROPERTIES_H 28 29 #include "taglib_export.h" 30 #include "audioproperties.h" 31 32 namespace TagLib { 33 34 namespace FLAC { 35 36 class File; 37 38 //! An implementation of audio property reading for FLAC 39 40 /*! 41 * This reads the data from an FLAC stream found in the AudioProperties 42 * API. 43 */ 44 45 class TAGLIB_EXPORT Properties : public AudioProperties 46 { 47 public: 48 /*! 49 * Create an instance of FLAC::Properties with the data read from the 50 * ByteVector \a data. 51 */ 52 // BIC: switch to const reference 53 Properties(ByteVector data, long streamLength, ReadStyle style = Average); 54 55 /*! 56 * Create an instance of FLAC::Properties with the data read from the 57 * FLAC::File \a file. 58 */ 59 // BIC: remove 60 Properties(File *file, ReadStyle style = Average); 61 62 /*! 63 * Destroys this FLAC::Properties instance. 64 */ 65 virtual ~Properties(); 66 67 /*! 68 * Returns the length of the file in seconds. The length is rounded down to 69 * the nearest whole second. 70 * 71 * \note This method is just an alias of lengthInSeconds(). 72 * 73 * \deprecated 74 */ 75 virtual int length() const; 76 77 /*! 78 * Returns the length of the file in seconds. The length is rounded down to 79 * the nearest whole second. 80 * 81 * \see lengthInMilliseconds() 82 */ 83 // BIC: make virtual 84 int lengthInSeconds() const; 85 86 /*! 87 * Returns the length of the file in milliseconds. 88 * 89 * \see lengthInSeconds() 90 */ 91 // BIC: make virtual 92 int lengthInMilliseconds() const; 93 94 /*! 95 * Returns the average bit rate of the file in kb/s. 96 */ 97 virtual int bitrate() const; 98 99 /*! 100 * Returns the sample rate in Hz. 101 */ 102 virtual int sampleRate() const; 103 104 /*! 105 * Returns the number of audio channels. 106 */ 107 virtual int channels() const; 108 109 /*! 110 * Returns the number of bits per audio sample as read from the FLAC 111 * identification header. 112 */ 113 int bitsPerSample() const; 114 115 /*! 116 * Returns the sample width as read from the FLAC identification 117 * header. 118 * 119 * \note This method is just an alias of bitsPerSample(). 120 * 121 * \deprecated 122 */ 123 int sampleWidth() const; 124 125 /*! 126 * Return the number of sample frames. 127 */ 128 unsigned long long sampleFrames() const; 129 130 /*! 131 * Returns the MD5 signature of the uncompressed audio stream as read 132 * from the stream info header. 133 */ 134 ByteVector signature() const; 135 136 private: 137 Properties(const Properties &); 138 Properties &operator=(const Properties &); 139 140 void read(const ByteVector &data, long streamLength); 141 142 class PropertiesPrivate; 143 PropertiesPrivate *d; 144 }; 145 } 146 } 147 148 #endif 149