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