00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 DCFmpacket< Rtrsmra<float,scalar> >::DCFmpacket(
00013 const int sizebmax,
00014 const int bplen_sizeb, const int bplen_n,
00015 DCFencode< Rtrsmra<float,scalar> >& enc
00016 ) : DCFmpacketBase(sizebmax, bplen_sizeb, bplen_n) {
00017
00018 _enc=enc;
00019
00020 };
00021
00022 void DCFmpacket< Rtrsmra<float,scalar> >::setencode(
00023 const int sizebmax,
00024 const int bplen_sizeb, const int bplen_n,
00025 DCFencode< Rtrsmra<float,scalar> >& enc
00026 ) {
00027
00028 setencode(sizebmax, bplen_sizeb, bplen_n );
00029 _enc=enc;
00030
00031 };
00032
00033 DCFmpacket< Rtrsmra<float,scalar> >&
00034 DCFmpacket< Rtrsmra<float,scalar> >::operator()(
00035 Rtrsmra<float,scalar>& x,
00036 const char mcode
00037 ) {
00038 DCFmpacket< Rtrsmra<float,scalar> >::encode(x,mcode);
00039 return *this;
00040 };
00041
00042 void DCFmpacket< Rtrsmra<float,scalar> >::encode(
00043 Rtrsmra<float,scalar>& x,
00044 const char mcode
00045 ) {
00046
00047 float tmp;
00048 bytepack bp;
00049
00050 int n;
00051
00052 if (sw(mcode)) { n=((( x.mrastep() )&( (1<<x.mmax()) -1 ) )>> m(mcode)); }
00053 else { n=0; }
00054
00055 clear();
00056 set(mcode,n);
00057
00058 if (sw(mcode)) { tmp=x.wav(m(mcode)); }
00059 else { tmp=x.scal(m(mcode)); }
00060
00061 if (fabs(tmp)>=_enc.quantcoef()) {
00062 #ifdef STORM_DEBUG
00063 cout << "DCFmpacket.encode(): put() : mcode, n, tmp = "
00064 << int( (unsigned char)(mcode) ) << ' ' << n << ' ' << tmp << '\n';
00065 #endif
00066 put( bp(tmp,_enc.bplen_coef()) );
00067 }
00068
00069 };
00070
00071
00072 void DCFmpacket< Rtrsmra<float,scalar> >::replace( Rtrsmra<float,scalar>& x ) {
00073
00074 int j;
00075 float tmp;
00076 bytepack bp;
00077
00078 if (empty()) { tmp=0; }
00079 else {
00080 bp(0,_enc.bplen_coef());
00081 for(j=0;j<bp.size();j++) { bp[j]=_ptmpacket[j]; }
00082 tmp=float(bp);
00083 }
00084
00085 #ifdef STORM_DEBUG
00086 cout << "DCFmpacket.replace(): sw m coef "
00087 << sw() << ' ' << m() << ' ' << tmp << '\n';
00088 #endif
00089
00090 if (sw()) { x.wav(m(),tmp); }
00091 else { x.scal(m(),tmp); }
00092
00093 };
00094