Changeset 3658 in Sophya for trunk/AddOn/TAcq/brpaqu.cc
- Timestamp:
- Oct 18, 2009, 11:10:33 AM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/AddOn/TAcq/brpaqu.cc
r3642 r3658 14 14 15 15 /* --Methode__ */ 16 BRPaquet::BRPaquet(Byte* src, Byte* dst, int paqsz, BRDataFmtConv fgswap )16 BRPaquet::BRPaquet(Byte* src, Byte* dst, int paqsz, BRDataFmtConv fgswap,int binMin,int nbBin ) 17 17 // swapall = true -> on swap tout le paquet, sinon swap entete seulement 18 18 { … … 24 24 UInt32* src32 = (UInt32*)src; 25 25 UInt32* dst32 = (UInt32*)dst; 26 26 Byte* tmp = new Byte[sz_]; 27 27 28 switch ( fgswap ) { 28 29 case BR_DoNothing : // rien a faire … … 31 32 memcpy(dst_, src, sz_); 32 33 break; 34 case BR_Copy_Reduc : // copie directe 35 memcpy(dst_, src, HeaderSize()); 36 37 memcpy(dst_+ HeaderSize(), src+(binMin+ HeaderSize()), nbBin); 38 memcpy(dst_+ (HeaderSize()+ nbBin ), src+(binMin+ HeaderSize()+sz_/2), nbBin); 39 memcpy(dst_+( HeaderSize()+( 2* nbBin)),src+(HeaderSize()+DataSize()),TrailerSize()); 40 41 SetPaqLen( nbBin/2); 42 break; 43 33 44 case BR_Swap32 : // On swappe toutes les donnees du paquet 34 45 // les bytes sont dans l'ordre par paquet de 4 octets (Int32) , les deux Int32 de … … 37 48 dst32[ka] = src32[ka+1]; 38 49 dst32[ka+1] = src32[ka]; 39 } 40 50 } 41 51 break; 42 52 case BR_SwapAll: … … 47 57 } 48 58 } 49 59 for(int ka=HeaderSize()+DataSize(); ka<sz_; ka+=8) { 50 60 for(int kb=0; kb<4; kb++) { 51 61 dst_[ka+kb] = src[ka+3-kb+4]; … … 100 110 dst32[ka+1] = src32[ka]; 101 111 } 102 112 break; 103 113 case BR_FFTOneChanNoSwap : 104 114 case BR_FFTTwoChanNoSwap : … … 117 127 // copie du trailler uniquement : 118 128 for(int ka=(HeaderSize()+DataSize())/4;ka < sz_/4; ka++) dst32[ka] = src32[ka]; 129 break; 130 case BR_CpHdrTrl : 131 for(int ka=0; ka<BRHDRSIZE/4; ka++) dst32[ka] = src32[ka]; 132 for(int ka=(HeaderSize()+DataSize())/4;ka < sz_/4; ka++) dst32[ka] = src32[ka]; 133 break; 134 135 case BR_FFTOneChanNoSwapReduct : 136 case BR_FFTTwoChanNoSwapReduct : 137 // copie du header uniquement 119 138 120 break; 139 for(int ka=0; ka<BRHDRSIZE/4; ka++) dst32[ka] = src32[ka]; 140 141 //DEL on a plus de swapdonc il faut copier dans dst 142 //DEL memcpy(dst_, src, sz_); 143 144 // on reoordonne les coeff FFT (pas de swap) 145 if (fgswap == BR_FFTOneChanNoSwap) ReorderFFTDataNoSwap(src+HeaderSize(), tmp+HeaderSize(), DataSize()); 146 else if (fgswap == BR_FFTTwoChanNoSwap) { 147 ReorderFFTDataNoSwap(src+HeaderSize(), tmp+HeaderSize(), DataSize()/2); 148 ReorderFFTDataNoSwap(src+HeaderSize()+DataSize()/2, tmp+HeaderSize()+DataSize()/2, DataSize()/2); 149 } 150 memcpy(tmp+ HeaderSize(), src+(binMin+ HeaderSize()), nbBin); 151 memcpy(tmp+ (HeaderSize()+ nbBin ), src+(binMin+ HeaderSize()+sz_/2), nbBin); 152 memcpy(tmp+( HeaderSize()+( 2* nbBin)),src+(HeaderSize()+DataSize()),TrailerSize()); 153 memcpy(dst_+ HeaderSize(),tmp+ HeaderSize(),( 2* nbBin)+TrailerSize()); 154 SetPaqLen( nbBin/2); 155 156 // copie du trailler uniquement : 157 // for(int ka=(HeaderSize()+DataSize())/4;ka < sz_/4; ka++) dst32[ka] = src32[ka]; 158 break; 121 159 } // Fin switch 122 160
Note:
See TracChangeset
for help on using the changeset viewer.