Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

DSPVector.hh

Go to the documentation of this file.
00001 /*
00002 
00003     Templatized DSP vector operations
00004     Copyright (C) 2001-2004 Jussi Laako
00005 
00006     This program is free software; you can redistribute it and/or modify
00007     it under the terms of the GNU General Public License as published by
00008     the Free Software Foundation; either version 2 of the License, or
00009     (at your option) any later version.
00010 
00011     This program is distributed in the hope that it will be useful,
00012     but WITHOUT ANY WARRANTY; without even the implied warranty of
00013     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014     GNU General Public License for more details.
00015 
00016     You should have received a copy of the GNU General Public License
00017     along with this program; if not, write to the Free Software
00018     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
00019 
00020 */
00021 
00022 
00023 #include "dsp/DSPOp.hh"
00024 #include "dsp/ReBufferT.hh"
00025 
00026 
00027 #ifndef DSPVECTOR_HH
00028     #define DSPVECTOR_HH
00029 
00030     #define DSPV_SHORTER(x)     ((Size() <= x.Size()) ? Size() : x.Size())
00031     #define DSPV_SHORTER2(x, y) ((x.Size() <= y.Size()) ? x.Size() : y.Size())
00032 
00033 
00034     template <class TDSPVector_t> class clDSPVector : 
00035         public clReBufferT<TDSPVector_t>
00036     {
00037             long lFFTSize;
00038             clDSPOp DSP;
00039         protected:
00040             TDSPVector_t * GetPtr ()
00041                 { return clReBufferT<TDSPVector_t>::GetPtr(); }
00042         public:
00043             long Size ()
00044                 { return clReBufferT<TDSPVector_t>::Size(); }
00045             void SetSize (long lNewSize)
00046                 { clReBufferT<TDSPVector_t>::SetSize(lNewSize); }
00047 
00048             clDSPVector ()
00049                 {
00050                     lFFTSize = 0;
00051                 }
00052             clDSPVector (const clDSPVector &CopySrc)
00053                 {
00054                     lFFTSize = 0;
00055                     *this = CopySrc;
00056                 }
00057             clDSPVector (long lNewSize) : 
00058                 clReBufferT<TDSPVector_t>(lNewSize)
00059                 {
00060                     lFFTSize = 0;
00061                 }
00062             clDSPVector (const TDSPVector_t *fpSrcData, long lSrcCount) :
00063                 clReBufferT<TDSPVector_t>(fpSrcData, lSrcCount)
00064                 {
00065                     lFFTSize = 0;
00066                 }
00067             ~clDSPVector () {}
00068             TDSPVector_t * Ptr()
00069                 {
00070                     return GetPtr();
00071                 }
00072 
00073             clDSPVector operator+ (const TDSPVector_t &Src)
00074                 {
00075                     clDSPVector<TDSPVector_t> Temp(*this);
00076                     DSP.Add(Temp.Ptr(), Src, Temp.Size());
00077                     return Temp;
00078                 }
00079             clDSPVector operator+ (clDSPVector &Src)
00080                 {
00081                     clDSPVector<TDSPVector_t> Temp(*this);
00082                     DSP.Add(Temp.Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00083                     return Temp;
00084                 }
00085             clDSPVector operator- (const TDSPVector_t &Src)
00086                 {
00087                     clDSPVector<TDSPVector_t> Temp(*this);
00088                     DSP.Sub(Temp.Ptr(), Src, Temp.Size());
00089                     return Temp;
00090                 }
00091             clDSPVector operator- (clDSPVector &Src)
00092                 {
00093                     clDSPVector<TDSPVector_t> Temp(*this);
00094                     DSP.Sub(Temp.Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00095                     return Temp;
00096                 }
00097             clDSPVector operator* (const TDSPVector_t &Src)
00098                 {
00099                     clDSPVector<TDSPVector_t> Temp(*this);
00100                     DSP.Mul(Temp.Ptr(), Src, Temp.Size());
00101                     return Temp;
00102                 }
00103             clDSPVector operator* (clDSPVector &Src)
00104                 {
00105                     clDSPVector<TDSPVector_t> Temp(*this);
00106                     DSP.Mul(Temp.Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00107                     return Temp;
00108                 }
00109             clDSPVector operator/ (const TDSPVector_t &Src)
00110                 {
00111                     clDSPVector<TDSPVector_t> Temp(*this);
00112                     DSP.Div(Temp.Ptr(), Src, Temp.Size());
00113                     return Temp;
00114                 }
00115             clDSPVector operator/ (clDSPVector &Src)
00116                 {
00117                     clDSPVector<TDSPVector_t> Temp(*this);
00118                     DSP.Div(Temp.Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00119                     return Temp;
00120                 }
00121             clDSPVector & operator+= (const TDSPVector_t &Src)
00122                 {
00123                     DSP.Add(Ptr(), Src, Size());
00124                     return (*this);
00125                 }
00126             clDSPVector & operator+= (clDSPVector &Src)
00127                 {
00128                     DSP.Add(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00129                     return (*this);
00130                 }
00131             clDSPVector & operator-= (const TDSPVector_t &Src)
00132                 {
00133                     DSP.Sub(Ptr(), Src, Size());
00134                     return (*this);
00135                 }
00136             clDSPVector & operator-= (clDSPVector &Src)
00137                 {
00138                     DSP.Sub(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00139                     return (*this);
00140                 }
00141             clDSPVector & operator*= (const TDSPVector_t &Src)
00142                 {
00143                     DSP.Mul(Ptr(), Src, Size());
00144                     return (*this);
00145                 }
00146             clDSPVector & operator*= (clDSPVector &Src)
00147                 {
00148                     DSP.Mul(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00149                     return (*this);
00150                 }
00151             clDSPVector & operator/= (const TDSPVector_t &Src)
00152                 {
00153                     DSP.Div(Ptr(), Src, Size());
00154                     return (*this);
00155                 }
00156             clDSPVector & operator/= (clDSPVector &Src)
00157                 {
00158                     DSP.Div(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00159                     return (*this);
00160                 }
00161 
00162             clDSPVector & Zero ()
00163                 {
00164                     DSP.Zero(Ptr(), Size());
00165                     return (*this);
00166                 }
00167             clDSPVector & Set (const TDSPVector_t &Src)
00168                 {
00169                     DSP.Set(Ptr(), Src, Size());
00170                     return (*this);
00171                 }
00172             clDSPVector & Set (const TDSPVector_t *Src, long lSrcCount)
00173                 {
00174                     SetSize(lSrcCount);
00175                     DSP.Set(Ptr(), Src, lSrcCount);
00176                     return (*this);
00177                 }
00178             clDSPVector & Set (const TDSPVector_t &Src, long lStartIdx,
00179                 long lSetCount)
00180                 {
00181                     DSP.Set(Ptr(), Src, lStartIdx, lSetCount, Size());
00182                     return (*this);
00183                 }
00184             clDSPVector & Clip (const TDSPVector_t &Src)
00185                 {
00186                     DSP.Clip(Ptr(), Src, Size());
00187                     return (*this);
00188                 }
00189             clDSPVector & Clip (const TDSPVector_t &Src1, 
00190                 const TDSPVector_t &Src2)
00191                 {
00192                     DSP.Clip(Ptr(), Src1, Src2, Size());
00193                     return (*this);
00194                 }
00195             clDSPVector & ClipZero ()
00196                 {
00197                     DSP.ClipZero(Ptr(), Size());
00198                     return (*this);
00199                 }
00200 
00201             clDSPVector & MulC (clDSPVector &Src)
00202                 {
00203                     DSP.MulC(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00204                     return (*this);
00205                 }
00206             clDSPVector & MulC (clDSPVector &Src1, clDSPVector &Src2)
00207                 {
00208                     *this = Src1;
00209                     DSP.MulC(Ptr(), Src2.Ptr(), DSPV_SHORTER(Src2));
00210                     return (*this);
00211                 }
00212             clDSPVector & Div1x ()
00213                 {
00214                     DSP.Div1x(Ptr(), Size());
00215                     return (*this);
00216                 }
00217             clDSPVector & MulAdd (TDSPVector_t fMul, TDSPVector_t fAdd)
00218                 {
00219                     DSP.MulAdd(Ptr(), fMul, fAdd, Size());
00220                 }
00221             clDSPVector & Square ()
00222                 {
00223                     DSP.Square(Ptr(), Size());
00224                     return (*this);
00225                 }
00226             clDSPVector & Abs ()
00227                 {
00228                     DSP.Abs(Ptr(), Size());
00229                     return (*this);
00230                 }
00231             clDSPVector & Sqrt ()
00232                 {
00233                     DSP.Sqrt(Ptr(), Size());
00234                     return (*this);
00235                 }
00236             clDSPVector & Negate ()
00237                 {
00238                     DSP.Negate(Ptr(), Size());
00239                     return (*this);
00240                 }
00241             clDSPVector & Normalize ()
00242                 {
00243                     DSP.Normalize(Ptr(), Size());
00244                     return (*this);
00245                 }
00246             clDSPVector & Reverse ()
00247                 {
00248                     DSP.Reverse(Ptr(), Size());
00249                     return (*this);
00250                 }
00251             clDSPVector & Reverse (clDSPVector &Src)
00252                 {
00253                     SetSize(Src.Size());
00254                     DSP.Reverse(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00255                     return (*this);
00256                 }
00257             clDSPVector & Scale ()
00258                 {
00259                     DSP.Scale(Ptr(), Size());
00260                     return (*this);
00261                 }
00262             clDSPVector & Scale (clDSPVector &Src)
00263                 {
00264                     SetSize(Src.Size());
00265                     DSP.Scale(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00266                     return (*this);
00267                 }
00268             clDSPVector & Scale01 ()
00269                 {
00270                     DSP.Scale01(Ptr(), Size());
00271                     return (*this);
00272                 }
00273             clDSPVector & Scale01 (clDSPVector &Src)
00274                 {
00275                     SetSize(Src.Size());
00276                     DSP.Scale01(Ptr(), Src.Ptr(), DSPV_SHOTER(Src));
00277                     return (*this);
00278                 }
00279             clDSPVector & Sort ()
00280                 {
00281                     DSP.Sort(Ptr(), Size());
00282                     return (*this);
00283                 }
00284             clDSPVector & Sort (clDSPVector &Src)
00285                 {
00286                     *this = Src;
00287                     DSP.Sort(Ptr(), Size());
00288                     return (*this);
00289                 }
00290 
00291             TDSPVector_t Sum ()
00292                 {
00293                     return DSP.Sum(Ptr(), Size());
00294                 }
00295             TDSPVector_t Conv (clDSPVector &Src)
00296                 {
00297                     return DSP.Convolve(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00298                 }
00299             clDSPVector & Conv (clDSPVector &Src1, clDSPVector &Src2)
00300                 {
00301                     SetSize(DSPV_SHORTER2(Src1, Src2));
00302                     DSP.Convolve(Ptr(), Src1.Ptr(), Src2.Ptr(),
00303                         DSPV_SHORTER2(Src1, Src2));
00304                     return (*this);
00305                 }
00306             TDSPVector_t Corr (clDSPVector &Src)
00307                 {
00308                     return DSP.Correlate(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00309                 }
00310             clDSPVector & Corr (clDSPVector &Src1, clDSPVector &Src2)
00311                 {
00312                     SetSize(DSPV_SHORTER2(Src1, Src2));
00313                     DSP.Correlate(Ptr(), Src1.Ptr(), Src2.Ptr(),
00314                         DSPV_SHORTER2(Src1, Src2));
00315                     return (*this);
00316                 }
00317             TDSPVector_t AutoCorr ()
00318                 {
00319                     return DSP.AutoCorrelate(Ptr(), Size());
00320                 }
00321             clDSPVector & AutoCorr (clDSPVector &Src)
00322                 {
00323                     SetSize(Src.Size());
00324                     DSP.AutoCorrelate(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00325                 }
00326             TDSPVector_t CrossCorr (clDSPVector &Src)
00327                 {
00328                     return DSP.CrossCorr(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00329                 }
00330             TDSPVector_t CrossCorr (clDSPVector &Src, long lDelay)
00331                 {
00332                     return DSP.DelCrossCorr(Ptr(), Src.Ptr(), lDelay,
00333                         DSPV_SHORTER(Src));
00334                 }
00335             clDSPVector & CrossCorr (clDSPVector &Src1, clDSPVector &Src2,
00336                 long *lpDelays, long lDelayCount)
00337                 {
00338                     SetSize(lDelayCount);
00339                     DSP.DelCrossCorr(Ptr(), Src1.Ptr(), Src2.Ptr(),
00340                         DSPV_SHORTER2(Src1, Src2), lpDelays, lDelayCount);
00341                     return (*this);
00342                 }
00343             TDSPVector_t DotProduct (clDSPVector &Src)
00344                 {
00345                     return DSP.DotProduct(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00346                 }
00347             TDSPVector_t Mean ()
00348                 {
00349                     return DSP.Mean(Ptr(), Size());
00350                 }
00351             TDSPVector_t Median ()
00352                 {
00353                     return DSP.Median(Ptr(), Size());
00354                 }
00355             TDSPVector_t Energy ()
00356                 {
00357                     return DSP.Energy(Ptr(), Size());
00358                 }
00359             TDSPVector_t RMS ()
00360                 {
00361                     return DSP.RMS(Ptr(), Size());
00362                 }
00363             TDSPVector_t PeakLevel ()
00364                 {
00365                     return DSP.PeakLevel(Ptr(), Size());
00366                 }
00367             void MinMax (TDSPVector_t &fMin, TDSPVector_t &fMax)
00368                 {
00369                     DSP.MinMax(&fMin, &fMax, Ptr(), Size());
00370                 }
00371             void StdDev (TDSPVector_t &fStdDev, TDSPVector_t &fMean)
00372                 {
00373                     DSP.StdDev(&fStdDev, &fMean, Ptr(), Size());
00374                 }
00375             void Variance (TDSPVector_t &fVariance, TDSPVector_t &fMean)
00376                 {
00377                     DSP.Variance(&fVariance, &fMean, Ptr(), Size());
00378                 }
00379 
00380             clDSPVector & Convert (const unsigned char *ucpSrc, 
00381                 long lSrcCount)
00382                 {
00383                     SetSize(lSrcCount);
00384                     DSP.Convert(Ptr(), ucpSrc, lSrcCount);
00385                     return (*this);
00386                 }
00387             clDSPVector & Convert (const signed short *ipSrc, long lSrcCount,
00388                 bool b12bit = false)
00389                 {
00390                     SetSize(lSrcCount);
00391                     DSP.Convert(Ptr(), ipSrc, lSrcCount, b12bit);
00392                     return (*this);
00393                 }
00394             clDSPVector & Convert (const signed int *ipSrc, long lSrcCount,
00395                 bool b24bit = false)
00396                 {
00397                     SetSize(lSrcCount);
00398                     DSP.Convert(Ptr(), ipSrc, lSrcCount, b24bit);
00399                     return (*this);
00400                 }
00401             clDSPVector & Convert (const float *fpSrc, long lSrcCount)
00402                 {
00403                     SetSize(lSrcCount);
00404                     DSP.Convert(Ptr(), fpSrc, lSrcCount);
00405                     return (*this);
00406                 }
00407             clDSPVector & Convert (const double *dpSrc, long lSrcCount)
00408                 {
00409                     SetSize(lSrcCount);
00410                     DSP.Convert(Ptr(), dpSrc, lSrcCount);
00411                     return (*this);
00412                 }
00413             void Convert (unsigned char *ucpDest)
00414                 {
00415                     DSP.Convert(ucpDest, Ptr(), Size());
00416                 }
00417             void Convert (signed short *ipDest, bool b12bit = false)
00418                 {
00419                     DSP.Convert(ipDest, Ptr(), Size(), b12bit);
00420                 }
00421             void Convert (signed int *ipDest, bool b24bit = false)
00422                 {
00423                     DSP.Convert(ipDest, Ptr(), Size(), b24bit);
00424                 }
00425             void Convert (float *fpDest)
00426                 {
00427                     DSP.Convert(fpDest, Ptr(), Size());
00428                 }
00429             void Convert (double *dpDest)
00430                 {
00431                     DSP.Convert(dpDest, Ptr(), Size());
00432                 }
00433             clDSPVector & CartToPolar ()
00434                 {
00435                     DSP.CartToPolar(Ptr(), Size());
00436                     return (*this);
00437                 }
00438             clDSPVector & CartToPolar (clDSPVector &Cart)
00439                 {
00440                     SetSize(Cart.Size());
00441                     DSP.CartToPolar(Ptr(), Cart.Ptr(), Size());
00442                     return (*this);
00443                 }
00444             void CartToPolar (clDSPVector<float> &Magn, 
00445                 clDSPVector<float> &Phase)
00446                 {
00447                     Magn.SetSize(Size());
00448                     Phase.SetSize(Size());
00449                     DSP.CartToPolar(Magn.Ptr(), Phase.Ptr(), Ptr(), Size());
00450                 }
00451             void CartToPolar (clDSPVector<double> &Magn, 
00452                 clDSPVector<double> &Phase)
00453                 {
00454                     Magn.SetSize(Size());
00455                     Phase.SetSize(Size());
00456                     DSP.CartToPolar(Magn.Ptr(), Phase.Ptr(), Ptr(), Size());
00457                 }
00458             clDSPVector & PolarToCart ()
00459                 {
00460                     DSP.PolarToCart(Ptr(), Size());
00461                     return (*this);
00462                 }
00463             clDSPVector & PolarToCart (clDSPVector &Polar)
00464                 {
00465                     SetSize(Polar.Size());
00466                     DSP.PolarToCart(Ptr(), Polar.Ptr(), Size());
00467                     return (*this);
00468                 }
00469             void PolarToCart (clDSPVector<float> &Real, 
00470                 clDSPVector<float> &Imag)
00471                 {
00472                     Real.SetSize(Size());
00473                     Imag.SetSize(Size());
00474                     DSP.PolarToCart(Real.Ptr(), Imag.Ptr(), Ptr(), Size());
00475                 }
00476             void PolarToCart (clDSPVector<double> &Real, 
00477                 clDSPVector<double> &Imag)
00478                 {
00479                     Real.SetSize(Size());
00480                     Imag.SetSize(Size());
00481                     DSP.PolarToCart(Real.Ptr(), Imag.Ptr(), Ptr(), Size());
00482                 }
00483             clDSPVector & Magnitude (clDSPVector<stSCplx> &Src)
00484                 {
00485                     SetSize(Src.Size());
00486                     DSP.Magnitude(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00487                     return (*this);
00488                 }
00489             clDSPVector & Magnitude (clDSPVector<stDCplx> &Src)
00490                 {
00491                     SetSize(Src.Size());
00492                     DSP.Magnitude(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00493                     return (*this);
00494                 }
00495             clDSPVector & Power (clDSPVector<stSCplx> &Src)
00496                 {
00497                     SetSize(Src.Size());
00498                     DSP.Power(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00499                     return (*this);
00500                 }
00501             clDSPVector & Power (clDSPVector<stDCplx> &Src)
00502                 {
00503                     SetSize(Src.Size());
00504                     DSP.Power(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00505                     return (*this);
00506                 }
00507             clDSPVector & Phase (clDSPVector<stSCplx> &Src)
00508                 {
00509                     SetSize(Src.Size());
00510                     DSP.Phase(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00511                     return (*this);
00512                 }
00513             clDSPVector & Phase (clDSPVector<stDCplx> &Src)
00514                 {
00515                     SetSize(Src.Size());
00516                     DSP.Phase(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00517                     return (*this);
00518                 }
00519             void PowerPhase (clDSPVector<float> &Power, 
00520                 clDSPVector<float> &Phase)
00521                 {
00522                     Power.SetSize(Size());
00523                     Phase.SetSize(Size());
00524                     DSP.PowerPhase(Power.Ptr(), Phase.Ptr(), Ptr(), Size());
00525                 }
00526             void PowerPhase (clDSPVector<double> &Power, 
00527                 clDSPVector<double> &Phase)
00528                 {
00529                     Power.SetSize(Size());
00530                     Phase.SetSize(Size());
00531                     DSP.PowerPhase(Power.Ptr(), Phase.Ptr(), Ptr(), Size());
00532                 }
00533             clDSPVector & Decimate (long lFactor)
00534                 {
00535                     DSP.Decimate(Ptr(), Ptr(), lFactor, Size());
00536                     return (*this);
00537                 }
00538             clDSPVector & Decimate (clDSPVector &Src, long lFactor)
00539                 {
00540                     SetSize(Src.Size() / lFactor);
00541                     DSP.Decimate(Ptr(), Src.Ptr(), lFactor, Src.Size());
00542                     return (*this);
00543                 }
00544             clDSPVector & DecimateAvg (clDSPVector &Src, long lFactor)
00545                 {
00546                     SetSize(Src.Size() / lFactor);
00547                     DSP.DecimateAvg(Ptr(), Src.Ptr(), lFactor, Src.Size());
00548                     return (*this);
00549                 }
00550             clDSPVector & Interpolate (clDSPVector &Src, long lFactor)
00551                 {
00552                     SetSize(Src.Size() * lFactor);
00553                     DSP.Interpolate(Ptr(), Src.Ptr(), lFactor, Src.Size());
00554                     return (*this);
00555                 }
00556             clDSPVector & InterpolateAvg (clDSPVector &Src, long lFactor)
00557                 {
00558                     SetSize(Src.Size() * lFactor);
00559                     DSP.InterpolateAvg(Ptr(), Src.Ptr(), lFactor, Src.Size());
00560                     return (*this);
00561                 }
00562             clDSPVector & Resample (clDSPVector &Src)
00563                 {
00564                     DSP.Resample(Ptr(), Size(), Src.Ptr(), Src.Size());
00565                     return (*this);
00566                 }
00567             clDSPVector & ResampleAvg (clDSPVector &Src)
00568                 {
00569                     DSP.ResampleAvg(Ptr(), Size(), Src.Ptr(), Src.Size());
00570                     return (*this);
00571                 }
00572 
00573             clDSPVector & WinBartlett (long lWinSize)
00574                 {
00575                     SetSize(lWinSize);
00576                     DSP.WinBartlett(Ptr(), Size());
00577                     return (*this);
00578                 }
00579             clDSPVector & WinBlackman (long lWinSize)
00580                 {
00581                     SetSize(lWinSize);
00582                     DSP.WinBlackman(Ptr(), Size());
00583                     return (*this);
00584                 }
00585             clDSPVector & WinBlackman (long lWinSize, TDSPVector_t fAlpha)
00586                 {
00587                     SetSize(lWinSize);
00588                     DSP.WinBlackman(Ptr(), Size(), fAlpha);
00589                     return (*this);
00590                 }
00591             clDSPVector & WinBlackmanHarris (long lWinSize)
00592                 {
00593                     SetSize(lWinSize);
00594                     DSP.WinBlackmanHarris(Ptr(), Size());
00595                     return (*this);
00596                 }
00597             clDSPVector & WinCosTapered (long lWinSize)
00598                 {
00599                     SetSize(lWinSize);
00600                     DSP.WinCosTapered(Ptr(), Size());
00601                     return (*this);
00602                 }
00603             clDSPVector & WinExactBlackman (long lWinSize)
00604                 {
00605                     SetSize(lWinSize);
00606                     DSP.WinExactBlackman(Ptr(), Size());
00607                     return (*this);
00608                 }
00609             clDSPVector & WinExp (TDSPVector_t fZ, long lWinSize)
00610                 {
00611                     SetSize(lWinSize);
00612                     DSP.WinExp(Ptr(), fZ, Size());
00613                     return (*this);
00614                 }
00615             clDSPVector & WinFlatTop (long lWinSize)
00616                 {
00617                     SetSize(lWinSize);
00618                     DSP.WinFlatTop(Ptr(), Size());
00619                     return (*this);
00620                 }
00621             clDSPVector & WinGenericCos (clDSPVector &Coeffs, long lWinSize)
00622                 {
00623                     SetSize(lWinSize);
00624                     DSP.WinGenericCos(Ptr(), Size(), 
00625                         Coeffs.Ptr(), Coeffs.Size());
00626                     return (*this);
00627                 }
00628             clDSPVector & WinHamming (long lWinSize)
00629                 {
00630                     SetSize(lWinSize);
00631                     DSP.WinHamming(Ptr(), Size());
00632                     return (*this);
00633                 }
00634             clDSPVector & WinHanning (long lWinSize)
00635                 {
00636                     SetSize(lWinSize);
00637                     DSP.WinHanning(Ptr(), Size());
00638                     return (*this);
00639                 }
00640             clDSPVector & WinKaiser (TDSPVector_t fBeta, long lWinSize)
00641                 {
00642                     SetSize(lWinSize);
00643                     DSP.WinKaiser(Ptr(), fBeta, Size());
00644                     return (*this);
00645                 }
00646             clDSPVector & WinKaiserBessel (TDSPVector_t fAlpha, long lWinSize)
00647                 {
00648                     SetSize(lWinSize);
00649                     DSP.WinKaiserBessel(Ptr(), fAlpha, Size());
00650                     return (*this);
00651                 }
00652             clDSPVector & WinTukey (long lWinSize)
00653                 {
00654                     SetSize(lWinSize);
00655                     DSP.WinTukey(Ptr(), Size());
00656                     return (*this);
00657                 }
00658             clDSPVector & WinDolphChebyshev (TDSPVector_t fGamma, long lWinSize)
00659                 {
00660                     SetSize(lWinSize);
00661                     DSP.WinDolphChebyshev(Ptr(), fGamma, Size());
00662                     return (*this);
00663                 }
00664 
00665             clDSPVector & Mix (clDSPVector &Src, long lChCount)
00666                 {
00667                     SetSize(Src.Size() / lChCount);
00668                     DSP.Mix(Ptr(), Src.Ptr(), lChCount, Size());
00669                     return (*this);
00670                 }
00671             clDSPVector & Extract (clDSPVector &Src, long lCh, long lChCount)
00672                 {
00673                     SetSize(Src.Size() / lChCount);
00674                     DSP.Extract(Ptr(), Src.Ptr(), lCh, lChCount, Src.Size());
00675                     return (*this);
00676                 }
00677             clDSPVector & Pack (clDSPVector &Src, long lCh, long lChCount)
00678                 {
00679                     Resize(Src.Size() * lChCount);
00680                     DSP.Pack(Ptr(), Src.Ptr(), lCh, lChCount, Src.Size());
00681                     return (*this);
00682                 }
00684             clDSPVector & FFTWConvert (clDSPVector &Src)
00685                 {
00686                     DSP.FFTWConvert(Ptr(), Src.Ptr(), Src.Size());
00687                     return (*this);
00688                 }
00689 
00690             void FIRAllocate (clDSPVector &Src)
00691                 {
00692                     DSP.FIRAllocate(Src.Ptr(), Src.Size());
00693                 }
00694             clDSPVector & FIRFilter ()
00695                 {
00696                     DSP.FIRFilter(Ptr(), Size());
00697                     return (*this);
00698                 }
00699             clDSPVector & FIRFilter (clDSPVector &Src)
00700                 {
00701                     SetSize(Src.Size());
00702                     DSP.FIRFilter(Ptr(), Src.Ptr(), DSPV_SHORTER(Src));
00703                     return (*this);
00704                 }
00705             void FIRFree ()
00706                 {
00707                     DSP.FIRFree();
00708                 }
00709 
00710             void FFTInitialize (long lWinSize, bool bReal)
00711                 {
00712                     lFFTSize = lWinSize;
00713                     DSP.FFTInitialize(lFFTSize, bReal);
00714                 }
00715             clDSPVector & FFT (clDSPVector<float> &Src)
00716                 {
00717                     SetSize(lFFTSize / 2 + 1);
00718                     DSP.FFTo(Ptr(), Src.Ptr());
00719                     return (*this);
00720                 }
00721             clDSPVector & FFT (clDSPVector<double> &Src)
00722                 {
00723                     SetSize(lFFTSize / 2 + 1);
00724                     DSP.FFTo(Ptr(), Src.Ptr());
00725                     return (*this);
00726                 }
00727             clDSPVector & FFT (clDSPVector<stSCplx> &Src)
00728                 {
00729                     SetSize(lFFTSize);
00730                     DSP.FFTo(Ptr(), Src.Ptr());
00731                     return (*this);
00732                 }
00733             clDSPVector & FFT (clDSPVector<stDCplx> &Src)
00734                 {
00735                     SetSize(lFFTSize);
00736                     DSP.FFTo(Ptr(), Src.Ptr());
00737                     return (*this);
00738                 }
00739             clDSPVector & IFFT (clDSPVector<stSCplx> &Src)
00740                 {
00741                     SetSize(lFFTSize);
00742                     DSP.IFFTo(Ptr(), Src.Ptr());
00743                     return (*this);
00744                 }
00745             clDSPVector & IFFT (clDSPVector<stDCplx> &Src)
00746                 {
00747                     SetSize(lFFTSize);
00748                     DSP.IFFTo(Ptr(), Src.Ptr());
00749                     return (*this);
00750                 }
00751             void FFTUninitialize ()
00752                 {
00753                     DSP.FFTUninitialize();
00754                 }
00755                 
00756             void DCTInitialize (long lWinSize)
00757                 {
00758                     lFFTSize = lWinSize;
00759                     DSP.DCTInitialize(lWinSize);
00760                 }
00761             void DCTUninitialize ()
00762                 {
00763                     DSP.DCTUninitialize();
00764                 }
00765             clDSPVector & DCT ()
00766                 {
00767                     DSP.DCTi(Ptr());
00768                     return (*this);
00769                 }
00770             clDSPVector & DCT (clDSPVector<float> &Src)
00771                 {
00772                     SetSize(lFFTSize);
00773                     DSP.DCTo(Ptr(), Src.Ptr());
00774                     return (*this);
00775                 }
00776             clDSPVector & DCT (clDSPVector<double> &Src)
00777                 {
00778                     SetSize(lFFTSize);
00779                     DSP.DCTo(Ptr(), Src.Ptr());
00780                     return (*this);
00781                 }
00782             clDSPVector & IDCT ()
00783                 {
00784                     DSP.IDCTi(Ptr());
00785                     return (*this);
00786                 }
00787             clDSPVector & IDCT (clDSPVector<float> &Src)
00788                 {
00789                     SetSize(lFFTSize);
00790                     DSP.IDCTo(Ptr(), Src.Ptr());
00791                     return (*this);
00792                 }
00793             clDSPVector & IDCT (clDSPVector<double> &Src)
00794                 {
00795                     SetSize(lFFTSize);
00796                     DSP.IDCTo(Ptr(), Src.Ptr());
00797                     return (*this);
00798                 }
00799     };
00800 
00801 
00802 #endif

Generated on Sun Nov 7 14:31:58 2004 for libDSP by doxygen 1.3.6