167{
169
170
173
174
177
178
181
182
183
184 void *data;
185
186
187 int e = posix_memalign(&data, 16, frame_size);
188
189 if ( e != 0 ) {
190 fprintf ( stderr, "Unable to allocate memory using posix_memalign.\n");
191 return EXIT_FAILURE;
192 }
193
194 for ( int i = 0; i < frame_size; ++i)
195 memset((char*)data+i, rand() % 256, 1);
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229 char* output;
230 int buf_size;
231 int f_size;
232 char *decoded;
233 map<int, int> valid_data;
234 int ps;
235 srand(time(NULL));
236 if (cpu)
237 {
239
241 {
242 printf ( "encoding\n" );
243 output = coding_session_cpu->
encode_frame ( (
char*) data, frame_size, &buf_size );
244 ps = 1392;
245 int total = 0;
246
247 valid_data.clear();
248
249 for ( int j = 0; j < buf_size ; j += ps) {
250 int size = ps;
251 if(j + ps > buf_size) {
252 size = buf_size - j;
253 }
255 valid_data.insert(pair<int,int>(j, size));
256 total += size;
257 } else {
258 if(j == 0) {
259 fprintf(stderr, "Dropping first packet!!!!!!!!!!!!\n");
260 }
261 memset(output + j, 0x0, size);
262 }
263 }
264
265 int c;
266 printf ( "received bytes: %d\n", total );
267 printf ( "decoding\n" );
268 decoded = coding_session_cpu_2->
decode_frame(output, buf_size, &f_size, valid_data);
269 printf ( "f_size: %d\n", f_size );
270 static int good = 0;
271 static int bad = 0;
272 if(f_size) good++; else bad++;
273 fprintf(stderr, "good: %d bad: %d\n", good, bad);
274
275 for (int x= 0; x < f_size; ++x) {
276 if(((char *)data)[x] != decoded[x]) {
277 fprintf(stderr, "Different character %d / %d (original size %d)\n", x, f_size, frame_size);
278 break;
279 }
280 }
281
283 }
285
286 }
287 if (gpu)
288 {
290
292
293
296 }
297
298
299#if 0
300 ofstream out;
301 out.open(data_fname, ios::out | ios::app);
302
304
305 out.close();
306
307 union int_bytes {
308 unsigned int number;
309 unsigned char bytes[4];
310 };
311 union int_bytes fs;
312 memcpy(&(fs.bytes), output, 4);
313
314
315
316
317
318
319
320
322#endif
323 delete coding_session_cpu;
324 delete coding_session_cpu_2;
325
326 free ( data );
327
328 return EXIT_SUCCESS;
329}
char * decode_frame(char *received_data, int buf_size, int *frame_size, std::map< int, int > valid_data)
void free_out_buf(char *buf)
void set_pcMatrix(char *matrix)
char * encode_frame(char *frame, int frame_size, int *out_buf_size)
void set_params(unsigned short k, unsigned short m, unsigned short rw)
This class implements timer utils.
double elapsed_time() const