Diffstat (limited to 'core/multimedia/opieplayer/libmpeg3/audio/mpeg3real.h') (more/less context) (ignore whitespace changes)
-rw-r--r-- | core/multimedia/opieplayer/libmpeg3/audio/mpeg3real.h | 232 |
1 files changed, 232 insertions, 0 deletions
diff --git a/core/multimedia/opieplayer/libmpeg3/audio/mpeg3real.h b/core/multimedia/opieplayer/libmpeg3/audio/mpeg3real.h new file mode 100644 index 0000000..cdcac3d --- a/dev/null +++ b/core/multimedia/opieplayer/libmpeg3/audio/mpeg3real.h @@ -0,0 +1,232 @@ +/********************************************************************** +** Copyright (C) 2000 Trolltech AS. All rights reserved. +** +** This file is part of Qtopia Environment. +** +** This file may be distributed and/or modified under the terms of the +** GNU General Public License version 2 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +** See http://www.trolltech.com/gpl/ for GPL licensing information. +** +** Contact info@trolltech.com if any conditions of this licensing are +** not clear to you. +** +**********************************************************************/ +#ifndef MPEG3REAL_H +#define MPEG3REAL_H + +#ifdef USE_FIXED_POINT + +#include <limits.h> +#include <stdio.h> + +#ifndef LONGLONG +#define LONGLONG long long +#endif + +//#define SC (1<<16) +#define SC (1<<15) + +class mpeg3_real_t { + long v; +public: + mpeg3_real_t() { } // Uninitialized, just like a float + mpeg3_real_t(double d) { v=long(d*SC); } + mpeg3_real_t(float f) { v=long(f*SC); } + mpeg3_real_t(int i) { v=long(i*SC); } + long fixedPoint() const { return v; } + operator float() const { return ((float)v)/SC; } + operator int() const { return (int)(v/SC); } + mpeg3_real_t operator+() const; + mpeg3_real_t operator-() const; + mpeg3_real_t& operator= (const mpeg3_real_t&); + mpeg3_real_t& operator+= (const mpeg3_real_t&); + mpeg3_real_t& operator-= (const mpeg3_real_t&); + mpeg3_real_t& operator*= (const mpeg3_real_t&); + mpeg3_real_t& operator/= (const mpeg3_real_t&); + friend mpeg3_real_t operator+ (const mpeg3_real_t&, const mpeg3_real_t&); + friend mpeg3_real_t operator- (const mpeg3_real_t&, const mpeg3_real_t&); + friend mpeg3_real_t operator* (const mpeg3_real_t&, const mpeg3_real_t&); + friend mpeg3_real_t operator/ (const mpeg3_real_t&, const mpeg3_real_t&); + friend mpeg3_real_t operator+ (const mpeg3_real_t&, const float&); + friend mpeg3_real_t operator- (const mpeg3_real_t&, const float&); + friend mpeg3_real_t operator* (const mpeg3_real_t&, const float&); + friend mpeg3_real_t operator/ (const mpeg3_real_t&, const float&); + friend mpeg3_real_t operator+ (const float&, const mpeg3_real_t&); + friend mpeg3_real_t operator- (const float&, const mpeg3_real_t&); + friend mpeg3_real_t operator* (const float&, const mpeg3_real_t&); + friend mpeg3_real_t operator/ (const float&, const mpeg3_real_t&); + friend mpeg3_real_t operator+ (const mpeg3_real_t&, const int&); + friend mpeg3_real_t operator- (const mpeg3_real_t&, const int&); + friend mpeg3_real_t operator* (const mpeg3_real_t&, const int&); + friend mpeg3_real_t operator/ (const mpeg3_real_t&, const int&); + friend mpeg3_real_t operator+ (const int&, const mpeg3_real_t&); + friend mpeg3_real_t operator- (const int&, const mpeg3_real_t&); + friend mpeg3_real_t operator* (const int&, const mpeg3_real_t&); + friend mpeg3_real_t operator/ (const int&, const mpeg3_real_t&); +}; + +inline mpeg3_real_t mpeg3_real_t::operator+() const +{ + return *this; +} + +inline mpeg3_real_t mpeg3_real_t::operator-() const +{ + mpeg3_real_t r; + r.v=-v; + return r; +} + +inline mpeg3_real_t& mpeg3_real_t::operator= (const mpeg3_real_t& o) +{ + v=o.v; + return *this; +} + +inline mpeg3_real_t& mpeg3_real_t::operator+= (const mpeg3_real_t& o) +{ + v += o.v; + return *this; +} + +inline mpeg3_real_t& mpeg3_real_t::operator-= (const mpeg3_real_t& o) +{ + v -= o.v; + return *this; +} + +inline mpeg3_real_t& mpeg3_real_t::operator*= (const mpeg3_real_t& o) +{ + *this = *this * o; + return *this; +} + +inline mpeg3_real_t& mpeg3_real_t::operator/= (const mpeg3_real_t& o) +{ + *this = *this / o; + return *this; +} + + +inline mpeg3_real_t operator+ (const mpeg3_real_t&a, const mpeg3_real_t&b) +{ + mpeg3_real_t r; + r.v=a.v+b.v; + return r; +} + +inline mpeg3_real_t operator- (const mpeg3_real_t&a, const mpeg3_real_t&b) +{ + mpeg3_real_t r; + r.v=a.v-b.v; + return r; +} + +inline mpeg3_real_t operator* (const mpeg3_real_t&a, const mpeg3_real_t&b) +{ + mpeg3_real_t r; + r.v = (LONGLONG)a.v * b.v / SC; + return r; +} + +inline mpeg3_real_t operator/ (const mpeg3_real_t&a, const mpeg3_real_t&b) +{ + mpeg3_real_t r; + r.v = (LONGLONG)a.v * SC / b.v; + return r; +} + +inline mpeg3_real_t operator+ (const mpeg3_real_t&a, const float&b) +{ + return a+mpeg3_real_t(b); +} + +inline mpeg3_real_t operator- (const mpeg3_real_t&a, const float&b) +{ + return a-mpeg3_real_t(b); +} + +inline mpeg3_real_t operator* (const mpeg3_real_t&a, const float&b) +{ + return a*mpeg3_real_t(b); +} + +inline mpeg3_real_t operator/ (const mpeg3_real_t&a, const float&b) +{ + return a/mpeg3_real_t(b); +} + + +inline mpeg3_real_t operator+ (const float&a, const mpeg3_real_t&b) +{ + return mpeg3_real_t(a)+b; +} + +inline mpeg3_real_t operator- (const float&a, const mpeg3_real_t&b) +{ + return mpeg3_real_t(a)-b; +} + +inline mpeg3_real_t operator* (const float&a, const mpeg3_real_t&b) +{ + return mpeg3_real_t(a)*b; +} + +inline mpeg3_real_t operator/ (const float&a, const mpeg3_real_t&b) +{ + return mpeg3_real_t(a)/b; +} + + +inline mpeg3_real_t operator+ (const mpeg3_real_t&a, const int&b) +{ + return a+mpeg3_real_t(b); +} + +inline mpeg3_real_t operator- (const mpeg3_real_t&a, const int&b) +{ + return a-mpeg3_real_t(b); +} + +inline mpeg3_real_t operator* (const mpeg3_real_t&a, const int&b) +{ + return a*mpeg3_real_t(b); +} + +inline mpeg3_real_t operator/ (const mpeg3_real_t&a, const int&b) +{ + return a/mpeg3_real_t(b); +} + + +inline mpeg3_real_t operator+ (const int&a, const mpeg3_real_t&b) +{ + return mpeg3_real_t(a)+b; +} + +inline mpeg3_real_t operator- (const int&a, const mpeg3_real_t&b) +{ + return mpeg3_real_t(a)-b; +} + +inline mpeg3_real_t operator* (const int&a, const mpeg3_real_t&b) +{ + return mpeg3_real_t(a)*b; +} + +inline mpeg3_real_t operator/ (const int&a, const mpeg3_real_t&b) +{ + return mpeg3_real_t(a)/b; +} + +#else +typedef float mpeg3_real_t; +#endif + +#endif |