Added TagLib (with AUTORS and COPYING files)
[someplayer] / src / taglib / mpeg / id3v2 / id3v2synchdata.h
1 /***************************************************************************
2     copyright            : (C) 2002 - 2008 by Scott Wheeler
3     email                : wheeler@kde.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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  *
19  *   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_ID3V2SYNCHDATA_H
27 #define TAGLIB_ID3V2SYNCHDATA_H
28
29 #include "tbytevector.h"
30 #include "taglib.h"
31
32 namespace TagLib {
33
34   namespace ID3v2 {
35
36     //! A few functions for ID3v2 synch safe integer conversion
37
38     /*!
39      * In the ID3v2.4 standard most integer values are encoded as "synch safe"
40      * integers which are encoded in such a way that they will not give false
41      * MPEG syncs and confuse MPEG decoders.  This namespace provides some
42      * methods for converting to and from these values to ByteVectors for
43      * things rendering and parsing ID3v2 data.
44      */
45
46     namespace SynchData
47     {
48       /*!
49        * This returns the unsigned integer value of \a data where \a data is a
50        * ByteVector that contains a \e synchsafe integer (Structure,
51        * <a href="id3v2-structure.html#6.2">6.2</a>).  The default \a length of
52        * 4 is used if another value is not specified.
53        */
54       TAGLIB_EXPORT uint toUInt(const ByteVector &data);
55
56       /*!
57        * Returns a 4 byte (32 bit) synchsafe integer based on \a value.
58        */
59       TAGLIB_EXPORT ByteVector fromUInt(uint value);
60
61       /*!
62        * Convert the data from unsynchronized data to its original format.
63        */
64       TAGLIB_EXPORT ByteVector decode(const ByteVector &input);
65     }
66
67   }
68 }
69
70 #endif