Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals

DCFmpacket_Rtmra_float_array.cpp

Go to the documentation of this file.
00001 //DCFmpacket_Rtmra_float_array.cpp
00002 //////////////////////////////////////////////////////////////////////
00003 //          (c) Copyright 2001-2002 Brown Deer Technology, LLC.
00004 //                        All rights reserved.
00005 //////////////////////////////////////////////////////////////////////
00006 //              Created:                Aug 27, 2001
00007 //              Last Modified:          May 2, 2002
00008 //////////////////////////////////////////////////////////////////////
00009 
00010 // specialization DCFmpacket< Rtmra<float,array> >
00011 
00012 DCFmpacket< Rtmra<float,array> >::DCFmpacket( 
00013   const int sizebmax,
00014   const int bplen_sizeb, const int bplen_n,
00015   DCFencode< Rtmra<float,array> >& enc
00016   ) : DCFmpacketBase(sizebmax, bplen_sizeb, bplen_n) {
00017 
00018    _enc=enc;
00019 };
00020 
00021 void DCFmpacket< Rtmra<float,array> >::setencode( 
00022   const int sizebmax,
00023   const int bplen_sizeb, const int bplen_n,
00024   DCFencode< Rtmra<float,array> >& enc
00025   ) {
00026    setencode(sizebmax,bplen_sizeb, bplen_n );
00027    _enc=enc;
00028 };
00029 
00030 DCFmpacket< Rtmra<float,array> >& 
00031   DCFmpacket< Rtmra<float,array> >::operator()(
00032     Rtmra<float,array>& x,
00033     const char mcode
00034     ) {
00035      DCFmpacket< Rtmra<float,array> >::encode(x,mcode);
00036      return *this;
00037 };
00038 
00039 void DCFmpacket< Rtmra<float,array> >::encode(
00040     Rtmra<float,array>& x,
00041     const char mcode
00042     ) {
00043 
00044    float tmp;
00045    bytepack bp;
00046 
00047    int n;
00048 
00049    int a;
00050 
00051    if (sw(mcode)) { n=((( x.mrastep() )&( (1<<x.mmax()) -1 ) )>> m(mcode)); }
00052    else { n=0; }
00053 
00054    clear();
00055    set(mcode,n);
00056 
00057    for(a=0;a<=_enc.amax();a++) {
00058       if (sw(mcode)) { tmp=x.wav(a,m(mcode)); }
00059       else { tmp=x.scal(a,m(mcode)); }
00060       if (fabs(tmp)>=_enc.quantcoef()) {
00061          put( bp(a,_enc.bplen_a()) );
00062          put( bp(tmp,_enc.bplen_coef()) );
00063       }
00064    }
00065 
00066 };
00067 
00068 
00069 void DCFmpacket< Rtmra<float,array> >::replace( Rtmra<float,array>& x ) {
00070 
00071    int next;
00072    int i;
00073    int j;
00074    int a;
00075    int a1;
00076    float tmp;
00077    bytepack bp;
00078 
00079    next=0;
00080    a=0;
00081    for(i=0;i<(sizeb()/(_enc.bplen_a()+_enc.bplen_coef()));i++) {
00082       bp(int(0),_enc.bplen_a());
00083       for(j=0;j<bp.size();j++) { bp[j]=_ptmpacket[next++]; }
00084       a1=int(bp);
00085 
00086       bp(0.0,_enc.bplen_coef());
00087       for(j=0;j<bp.size();j++) { bp[j]=_ptmpacket[next++]; }
00088       tmp=float(bp);
00089 
00090       while (a<a1) { 
00091          if (sw()) { x.wav(a,m(),0); }
00092          else { x.scal(a,m(),0); }
00093          a++; 
00094       }
00095       if (sw()) { x.wav(a,m(),tmp); }
00096       else { x.scal(a,m(),tmp); }
00097       a++;
00098    }
00099 
00100    while (a<=_enc.amax()) {
00101       if (sw()) { x.wav(a,m(),0); }
00102       else { x.scal(a,m(),0); }
00103       a++; 
00104    }
00105 
00106 };
00107 

Generated on Mon May 31 21:38:44 2004 for SR2k4 Assembler by doxygen 1.3.6