Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(8)

Side by Side Diff: webrtc/modules/audio_coding/codecs/isac/fix/test/test_iSACfixfloat.c

Issue 1230503003: Update a ton of audio code to use size_t more correctly and in general reduce (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Resync Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 /* 11 /*
12 * test_iSACfixfloat.c 12 * test_iSACfixfloat.c
13 * 13 *
14 * Test compatibility and quality between floating- and fixed-point code 14 * Test compatibility and quality between floating- and fixed-point code
15 * */ 15 * */
16 16
17 #include <stdio.h> 17 #include <stdio.h>
18 #include <stdlib.h> 18 #include <stdlib.h>
19 #include <string.h> 19 #include <string.h>
20 20
21 /* include API */ 21 /* include API */
22 #include "isac.h" 22 #include "isac.h"
23 #include "isacfix.h" 23 #include "isacfix.h"
24 #include "webrtc/base/format_macros.h"
24 25
25 /* max number of samples per frame (= 60 ms frame) */ 26 /* max number of samples per frame (= 60 ms frame) */
26 #define MAX_FRAMESAMPLES 960 27 #define MAX_FRAMESAMPLES 960
27 /* number of samples per 10ms frame */ 28 /* number of samples per 10ms frame */
28 #define FRAMESAMPLES_10ms 160 29 #define FRAMESAMPLES_10ms 160
29 /* sampling frequency (Hz) */ 30 /* sampling frequency (Hz) */
30 #define FS 16000 31 #define FS 16000
31 32
32 /* Runtime statistics */ 33 /* Runtime statistics */
33 #include <time.h> 34 #include <time.h>
(...skipping 16 matching lines...) Expand all
50 } 51 }
51 52
52 typedef struct { 53 typedef struct {
53 uint32_t send_time; /* samples */ 54 uint32_t send_time; /* samples */
54 uint32_t arrival_time; /* samples */ 55 uint32_t arrival_time; /* samples */
55 uint32_t sample_count; /* samples */ 56 uint32_t sample_count; /* samples */
56 uint16_t rtp_number; 57 uint16_t rtp_number;
57 } BottleNeckModel; 58 } BottleNeckModel;
58 59
59 void get_arrival_time(int current_framesamples, /* samples */ 60 void get_arrival_time(int current_framesamples, /* samples */
60 int packet_size, /* bytes */ 61 size_t packet_size, /* bytes */
61 int bottleneck, /* excluding headers; bits/s */ 62 int bottleneck, /* excluding headers; bits/s */
62 BottleNeckModel* BN_data) { 63 BottleNeckModel* BN_data) {
63 const int HeaderSize = 35; 64 const int HeaderSize = 35;
64 int HeaderRate; 65 int HeaderRate;
65 66
66 HeaderRate = HeaderSize * 8 * FS / current_framesamples; /* bits/s */ 67 HeaderRate = HeaderSize * 8 * FS / current_framesamples; /* bits/s */
67 68
68 /* everything in samples */ 69 /* everything in samples */
69 BN_data->sample_count = BN_data->sample_count + current_framesamples; 70 BN_data->sample_count = BN_data->sample_count + current_framesamples;
70 71
(...skipping 20 matching lines...) Expand all
91 int framesize = 30; /* ms */ 92 int framesize = 30; /* ms */
92 // int framesize = 60; /* To invoke cisco complexity case at frame 2252 */ 93 // int framesize = 60; /* To invoke cisco complexity case at frame 2252 */
93 94
94 int cur_framesmpls, err; 95 int cur_framesmpls, err;
95 96
96 /* Runtime statistics */ 97 /* Runtime statistics */
97 double starttime; 98 double starttime;
98 double runtime; 99 double runtime;
99 double length_file; 100 double length_file;
100 101
101 int16_t stream_len = 0; 102 size_t stream_len = 0;
102 int declen; 103 int declen;
103 104
104 int16_t shortdata[FRAMESAMPLES_10ms]; 105 int16_t shortdata[FRAMESAMPLES_10ms];
105 int16_t decoded[MAX_FRAMESAMPLES]; 106 int16_t decoded[MAX_FRAMESAMPLES];
106 uint16_t streamdata[600]; 107 uint16_t streamdata[600];
107 int16_t speechType[1]; 108 int16_t speechType[1];
108 109
109 // int16_t* iSACstruct; 110 // int16_t* iSACstruct;
110 111
111 char version_number[20]; 112 char version_number[20];
112 int mode = -1, tmp, nbTest = 0; /*,sss;*/ 113 int mode = -1, tmp, nbTest = 0; /*,sss;*/
113 114
114 #ifdef _DEBUG 115 #ifdef _DEBUG
115 FILE* fy; 116 FILE* fy;
116 double kbps; 117 double kbps;
117 int totalbits = 0; 118 size_t totalbits = 0;
118 int totalsmpls = 0; 119 int totalsmpls = 0;
119 #endif /* _DEBUG */ 120 #endif /* _DEBUG */
120 121
121 /* only one structure used for ISAC encoder */ 122 /* only one structure used for ISAC encoder */
122 ISAC_MainStruct* ISAC_main_inst; 123 ISAC_MainStruct* ISAC_main_inst;
123 ISACFIX_MainStruct* ISACFIX_main_inst; 124 ISACFIX_MainStruct* ISACFIX_main_inst;
124 125
125 BottleNeckModel BN_data; 126 BottleNeckModel BN_data;
126 f_bn = NULL; 127 f_bn = NULL;
127 128
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
385 fclose(inp); 386 fclose(inp);
386 fclose(outp); 387 fclose(outp);
387 fclose(bitsp); 388 fclose(bitsp);
388 return (EXIT_FAILURE); 389 return (EXIT_FAILURE);
389 } 390 }
390 #endif 391 #endif
391 392
392 while (endfile == 0) { 393 while (endfile == 0) {
393 cur_framesmpls = 0; 394 cur_framesmpls = 0;
394 while (1) { 395 while (1) {
396 int stream_len_int;
397
395 /* Read 10 ms speech block */ 398 /* Read 10 ms speech block */
396 if (nbTest != 1) 399 if (nbTest != 1)
397 endfile = readframe(shortdata, inp, FRAMESAMPLES_10ms); 400 endfile = readframe(shortdata, inp, FRAMESAMPLES_10ms);
398 else 401 else
399 endfile = readframe(shortdata, inp, (FRAMESAMPLES_10ms / 2)); 402 endfile = readframe(shortdata, inp, (FRAMESAMPLES_10ms / 2));
400 403
401 /* iSAC encoding */ 404 /* iSAC encoding */
402 405
403 if (mode == 0 || mode == 1) { 406 if (mode == 0 || mode == 1) {
404 stream_len = 407 stream_len_int =
405 WebRtcIsac_Encode(ISAC_main_inst, shortdata, (uint8_t*)streamdata); 408 WebRtcIsac_Encode(ISAC_main_inst, shortdata, (uint8_t*)streamdata);
406 if (stream_len < 0) { 409 if (stream_len_int < 0) {
407 /* exit if returned with error */ 410 /* exit if returned with error */
408 errtype = WebRtcIsac_GetErrorCode(ISAC_main_inst); 411 errtype = WebRtcIsac_GetErrorCode(ISAC_main_inst);
409 printf("\n\nError in encoder: %d.\n\n", errtype); 412 printf("\n\nError in encoder: %d.\n\n", errtype);
410 // exit(EXIT_FAILURE); 413 // exit(EXIT_FAILURE);
411 } 414 }
412 } else if (mode == 2 || mode == 3) { 415 } else if (mode == 2 || mode == 3) {
413 /* iSAC encoding */ 416 /* iSAC encoding */
414 if (nbTest != 1) { 417 if (nbTest != 1) {
415 stream_len = WebRtcIsacfix_Encode(ISACFIX_main_inst, shortdata, 418 stream_len_int = WebRtcIsacfix_Encode(ISACFIX_main_inst, shortdata,
416 (uint8_t*)streamdata); 419 (uint8_t*)streamdata);
417 } else { 420 } else {
418 stream_len = 421 stream_len_int =
419 WebRtcIsacfix_EncodeNb(ISACFIX_main_inst, shortdata, streamdata); 422 WebRtcIsacfix_EncodeNb(ISACFIX_main_inst, shortdata, streamdata);
420 } 423 }
421 424
422 if (stream_len < 0) { 425 if (stream_len_int < 0) {
423 /* exit if returned with error */ 426 /* exit if returned with error */
424 errtype = WebRtcIsacfix_GetErrorCode(ISACFIX_main_inst); 427 errtype = WebRtcIsacfix_GetErrorCode(ISACFIX_main_inst);
425 printf("\n\nError in encoder: %d.\n\n", errtype); 428 printf("\n\nError in encoder: %d.\n\n", errtype);
426 // exit(EXIT_FAILURE); 429 // exit(EXIT_FAILURE);
427 } 430 }
428 } 431 }
432 stream_len = (size_t)stream_len_int;
429 433
430 cur_framesmpls += FRAMESAMPLES_10ms; 434 cur_framesmpls += FRAMESAMPLES_10ms;
431 435
432 /* read next bottleneck rate */ 436 /* read next bottleneck rate */
433 if (f_bn != NULL) { 437 if (f_bn != NULL) {
434 if (fscanf(f_bn, "%d", &bottleneck) == EOF) { 438 if (fscanf(f_bn, "%d", &bottleneck) == EOF) {
435 /* Set pointer to beginning of file */ 439 /* Set pointer to beginning of file */
436 fseek(f_bn, 0L, SEEK_SET); 440 fseek(f_bn, 0L, SEEK_SET);
437 fscanf(f_bn, "%d", &bottleneck); 441 fscanf(f_bn, "%d", &bottleneck);
438 } 442 }
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
487 errtype = WebRtcIsacfix_GetErrorCode(ISACFIX_main_inst); 491 errtype = WebRtcIsacfix_GetErrorCode(ISACFIX_main_inst);
488 printf("\n\nError in decoder: %d.\n\n", errtype); 492 printf("\n\nError in decoder: %d.\n\n", errtype);
489 // exit(EXIT_FAILURE); 493 // exit(EXIT_FAILURE);
490 } 494 }
491 495
492 declen = WebRtcIsac_Decode(ISAC_main_inst, streamdata, stream_len, 496 declen = WebRtcIsac_Decode(ISAC_main_inst, streamdata, stream_len,
493 decoded, speechType); 497 decoded, speechType);
494 498
495 /* iSAC decoding */ 499 /* iSAC decoding */
496 if (plc && (framecnt + 1) % 10 == 0) { 500 if (plc && (framecnt + 1) % 10 == 0) {
497 if (nbTest != 2) 501 if (nbTest != 2) {
498 declen = WebRtcIsacfix_DecodePlc(ISACFIX_main_inst, decoded, 1); 502 declen =
499 else 503 (int)WebRtcIsacfix_DecodePlc(ISACFIX_main_inst, decoded, 1);
500 declen = WebRtcIsacfix_DecodePlcNb(ISACFIX_main_inst, decoded, 1); 504 } else {
505 declen =
506 (int)WebRtcIsacfix_DecodePlcNb(ISACFIX_main_inst, decoded, 1);
507 }
501 } else { 508 } else {
502 if (nbTest != 2) 509 if (nbTest != 2)
503 declen = WebRtcIsacfix_Decode(ISACFIX_main_inst, streamdata, 510 declen = WebRtcIsacfix_Decode(ISACFIX_main_inst, streamdata,
504 stream_len, decoded, speechType); 511 stream_len, decoded, speechType);
505 else 512 else
506 declen = WebRtcIsacfix_DecodeNb(ISACFIX_main_inst, streamdata, 513 declen = WebRtcIsacfix_DecodeNb(ISACFIX_main_inst, streamdata,
507 stream_len, decoded, speechType); 514 stream_len, decoded, speechType);
508 } 515 }
509 516
510 if (declen <= 0) { 517 if (declen <= 0) {
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
544 551
545 if (err < 0) { 552 if (err < 0) {
546 /* exit if returned with error */ 553 /* exit if returned with error */
547 errtype = WebRtcIsacfix_GetErrorCode(ISACFIX_main_inst); 554 errtype = WebRtcIsacfix_GetErrorCode(ISACFIX_main_inst);
548 printf("\n\nError in decoder: %d.\n\n", errtype); 555 printf("\n\nError in decoder: %d.\n\n", errtype);
549 // exit(EXIT_FAILURE); 556 // exit(EXIT_FAILURE);
550 } 557 }
551 /* iSAC decoding */ 558 /* iSAC decoding */
552 559
553 if (plc && (framecnt + 1) % 10 == 0) { 560 if (plc && (framecnt + 1) % 10 == 0) {
554 if (nbTest != 2) 561 if (nbTest != 2) {
555 declen = WebRtcIsacfix_DecodePlc(ISACFIX_main_inst, decoded, 1); 562 declen =
556 else 563 (int)WebRtcIsacfix_DecodePlc(ISACFIX_main_inst, decoded, 1);
557 declen = WebRtcIsacfix_DecodePlcNb(ISACFIX_main_inst, decoded, 1); 564 } else {
565 declen =
566 (int)WebRtcIsacfix_DecodePlcNb(ISACFIX_main_inst, decoded, 1);
567 }
558 } else { 568 } else {
559 if (nbTest != 2) { 569 if (nbTest != 2) {
560 declen = WebRtcIsacfix_Decode(ISACFIX_main_inst, streamdata, 570 declen = WebRtcIsacfix_Decode(ISACFIX_main_inst, streamdata,
561 stream_len, decoded, speechType); 571 stream_len, decoded, speechType);
562 } else { 572 } else {
563 declen = WebRtcIsacfix_DecodeNb(ISACFIX_main_inst, streamdata, 573 declen = WebRtcIsacfix_DecodeNb(ISACFIX_main_inst, streamdata,
564 stream_len, decoded, speechType); 574 stream_len, decoded, speechType);
565 } 575 }
566 } 576 }
567 if (declen <= 0) { 577 if (declen <= 0) {
(...skipping 17 matching lines...) Expand all
585 totalbits += 8 * stream_len; 595 totalbits += 8 * stream_len;
586 kbps = (double)FS / (double)cur_framesmpls * 8.0 * stream_len / 1000.0; 596 kbps = (double)FS / (double)cur_framesmpls * 8.0 * stream_len / 1000.0;
587 fy = fopen("bit_rate.dat", "a"); 597 fy = fopen("bit_rate.dat", "a");
588 fprintf(fy, "Frame %i = %0.14f\n", framecnt, kbps); 598 fprintf(fy, "Frame %i = %0.14f\n", framecnt, kbps);
589 fclose(fy); 599 fclose(fy);
590 600
591 #endif /* _DEBUG */ 601 #endif /* _DEBUG */
592 } 602 }
593 603
594 #ifdef _DEBUG 604 #ifdef _DEBUG
595 printf("\n\ntotal bits = %d bits", totalbits); 605 printf("\n\ntotal bits = %" PRIuS " bits", totalbits);
596 printf("\nmeasured average bitrate = %0.3f kbits/s", 606 printf("\nmeasured average bitrate = %0.3f kbits/s",
597 (double)totalbits * (FS / 1000) / totalsmpls); 607 (double)totalbits * (FS / 1000) / totalsmpls);
598 printf("\n"); 608 printf("\n");
599 #endif /* _DEBUG */ 609 #endif /* _DEBUG */
600 610
601 /* Runtime statistics */ 611 /* Runtime statistics */
602 runtime = (double)(clock() / (double)CLOCKS_PER_SEC - starttime); 612 runtime = (double)(clock() / (double)CLOCKS_PER_SEC - starttime);
603 length_file = ((double)framecnt * (double)declen / FS); 613 length_file = ((double)framecnt * (double)declen / FS);
604 printf("\n\nLength of speech file: %.1f s\n", length_file); 614 printf("\n\nLength of speech file: %.1f s\n", length_file);
605 printf("Time to run iSAC: %.2f s (%.2f %% of realtime)\n\n", runtime, 615 printf("Time to run iSAC: %.2f s (%.2f %% of realtime)\n\n", runtime,
606 (100 * runtime / length_file)); 616 (100 * runtime / length_file));
607 printf("---------------------END----------------------\n"); 617 printf("---------------------END----------------------\n");
608 618
609 fclose(inp); 619 fclose(inp);
610 fclose(outp); 620 fclose(outp);
611 621
612 WebRtcIsac_Free(ISAC_main_inst); 622 WebRtcIsac_Free(ISAC_main_inst);
613 WebRtcIsacfix_Free(ISACFIX_main_inst); 623 WebRtcIsacfix_Free(ISACFIX_main_inst);
614 624
615 // fclose(histfile); 625 // fclose(histfile);
616 // fclose(ratefile); 626 // fclose(ratefile);
617 627
618 return 0; 628 return 0;
619 } 629 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698