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

Side by Side Diff: webrtc/modules/audio_coding/codecs/g711/test/testG711.cc

Issue 1225173002: Update audio code to use size_t more correctly, (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Review comments Created 5 years, 4 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) 2012 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2012 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 * testG711.cpp : Defines the entry point for the console application. 12 * testG711.cpp : Defines the entry point for the console application.
13 */ 13 */
14 14
15 #include <stdio.h> 15 #include <stdio.h>
16 #include <stdlib.h> 16 #include <stdlib.h>
17 #include <string.h> 17 #include <string.h>
18 18
19 /* include API */ 19 /* include API */
20 #include "g711_interface.h" 20 #include "g711_interface.h"
21 21
22 /* Runtime statistics */ 22 /* Runtime statistics */
23 #include <time.h> 23 #include <time.h>
24 #define CLOCKS_PER_SEC_G711 1000 24 #define CLOCKS_PER_SEC_G711 1000
25 25
26 /* function for reading audio data from PCM file */ 26 /* function for reading audio data from PCM file */
27 bool readframe(int16_t* data, FILE* inp, int length) { 27 bool readframe(int16_t* data, FILE* inp, size_t length) {
28 short rlen = (short) fread(data, sizeof(int16_t), length, inp); 28 size_t rlen = fread(data, sizeof(int16_t), length, inp);
29 if (rlen >= length) 29 if (rlen >= length)
30 return false; 30 return false;
31 memset(data + rlen, 0, (length - rlen) * sizeof(int16_t)); 31 memset(data + rlen, 0, (length - rlen) * sizeof(int16_t));
32 return true; 32 return true;
33 } 33 }
34 34
35 int main(int argc, char* argv[]) { 35 int main(int argc, char* argv[]) {
36 char inname[80], outname[40], bitname[40]; 36 char inname[80], outname[40], bitname[40];
37 FILE* inp; 37 FILE* inp;
38 FILE* outp; 38 FILE* outp;
39 FILE* bitp = NULL; 39 FILE* bitp = NULL;
40 int framecnt; 40 int framecnt;
41 bool endfile; 41 bool endfile;
42 42
43 int16_t framelength = 80; 43 size_t framelength = 80;
44
45 int err;
46 44
47 /* Runtime statistics */ 45 /* Runtime statistics */
48 double starttime; 46 double starttime;
49 double runtime; 47 double runtime;
50 double length_file; 48 double length_file;
51 49
52 int16_t stream_len = 0; 50 size_t stream_len = 0;
53 int16_t shortdata[480]; 51 int16_t shortdata[480];
54 int16_t decoded[480]; 52 int16_t decoded[480];
55 uint8_t streamdata[1000]; 53 uint8_t streamdata[1000];
56 int16_t speechType[1]; 54 int16_t speechType[1];
57 char law[2]; 55 char law[2];
58 char versionNumber[40]; 56 char versionNumber[40];
59 57
60 /* handling wrong input arguments in the command line */ 58 /* handling wrong input arguments in the command line */
61 if ((argc != 5) && (argc != 6)) { 59 if ((argc != 5) && (argc != 6)) {
62 printf("\n\nWrong number of arguments or flag values.\n\n"); 60 printf("\n\nWrong number of arguments or flag values.\n\n");
(...skipping 10 matching lines...) Expand all
73 exit(0); 71 exit(0);
74 72
75 } 73 }
76 74
77 /* Get version and print */ 75 /* Get version and print */
78 WebRtcG711_Version(versionNumber, 40); 76 WebRtcG711_Version(versionNumber, 40);
79 77
80 printf("-----------------------------------\n"); 78 printf("-----------------------------------\n");
81 printf("G.711 version: %s\n\n", versionNumber); 79 printf("G.711 version: %s\n\n", versionNumber);
82 /* Get frame length */ 80 /* Get frame length */
83 framelength = atoi(argv[1]); 81 int framelength_int = atoi(argv[1]);
84 if (framelength < 0) { 82 if (framelength_int < 0) {
85 printf(" G.711: Invalid framelength %d.\n", framelength); 83 printf(" G.722: Invalid framelength %d.\n", framelength_int);
86 exit(1); 84 exit(1);
87 } 85 }
86 framelength = static_cast<size_t>(framelength_int);
88 87
89 /* Get compression law */ 88 /* Get compression law */
90 strcpy(law, argv[2]); 89 strcpy(law, argv[2]);
91 90
92 /* Get Input and Output files */ 91 /* Get Input and Output files */
93 sscanf(argv[3], "%s", inname); 92 sscanf(argv[3], "%s", inname);
94 sscanf(argv[4], "%s", outname); 93 sscanf(argv[4], "%s", outname);
95 if (argc == 6) { 94 if (argc == 6) {
96 sscanf(argv[5], "%s", bitname); 95 sscanf(argv[5], "%s", bitname);
97 if ((bitp = fopen(bitname, "wb")) == NULL) { 96 if ((bitp = fopen(bitname, "wb")) == NULL) {
(...skipping 25 matching lines...) Expand all
123 /* Read speech block */ 122 /* Read speech block */
124 endfile = readframe(shortdata, inp, framelength); 123 endfile = readframe(shortdata, inp, framelength);
125 124
126 /* G.711 encoding */ 125 /* G.711 encoding */
127 if (!strcmp(law, "A")) { 126 if (!strcmp(law, "A")) {
128 /* A-law encoding */ 127 /* A-law encoding */
129 stream_len = WebRtcG711_EncodeA(shortdata, framelength, streamdata); 128 stream_len = WebRtcG711_EncodeA(shortdata, framelength, streamdata);
130 if (argc == 6) { 129 if (argc == 6) {
131 /* Write bits to file */ 130 /* Write bits to file */
132 if (fwrite(streamdata, sizeof(unsigned char), stream_len, bitp) != 131 if (fwrite(streamdata, sizeof(unsigned char), stream_len, bitp) !=
133 static_cast<size_t>(stream_len)) { 132 stream_len) {
134 return -1; 133 return -1;
135 } 134 }
136 } 135 }
137 err = WebRtcG711_DecodeA(streamdata, stream_len, decoded, 136 WebRtcG711_DecodeA(streamdata, stream_len, decoded, speechType);
138 speechType);
139 } else if (!strcmp(law, "u")) { 137 } else if (!strcmp(law, "u")) {
140 /* u-law encoding */ 138 /* u-law encoding */
141 stream_len = WebRtcG711_EncodeU(shortdata, framelength, streamdata); 139 stream_len = WebRtcG711_EncodeU(shortdata, framelength, streamdata);
142 if (argc == 6) { 140 if (argc == 6) {
143 /* Write bits to file */ 141 /* Write bits to file */
144 if (fwrite(streamdata, sizeof(unsigned char), stream_len, bitp) != 142 if (fwrite(streamdata, sizeof(unsigned char), stream_len, bitp) !=
145 static_cast<size_t>(stream_len)) { 143 stream_len) {
146 return -1; 144 return -1;
147 } 145 }
148 } 146 }
149 err = WebRtcG711_DecodeU(streamdata, stream_len, decoded, speechType); 147 WebRtcG711_DecodeU(streamdata, stream_len, decoded, speechType);
150 } else { 148 } else {
151 printf("Wrong law mode\n"); 149 printf("Wrong law mode\n");
152 exit(1); 150 exit(1);
153 } 151 }
154 if (stream_len < 0 || err < 0) { 152 /* Write coded speech to file */
155 /* exit if returned with error */ 153 if (fwrite(decoded, sizeof(short), framelength, outp) != framelength) {
156 printf("Error in encoder/decoder\n"); 154 return -1;
157 } else {
158 /* Write coded speech to file */
159 if (fwrite(decoded, sizeof(short), framelength, outp) !=
160 static_cast<size_t>(framelength)) {
161 return -1;
162 }
163 } 155 }
164 } 156 }
165 157
166 runtime = (double)(clock() / (double) CLOCKS_PER_SEC_G711 - starttime); 158 runtime = (double)(clock() / (double) CLOCKS_PER_SEC_G711 - starttime);
167 length_file = ((double) framecnt * (double) framelength / 8000); 159 length_file = ((double) framecnt * (double) framelength / 8000);
168 printf("\n\nLength of speech file: %.1f s\n", length_file); 160 printf("\n\nLength of speech file: %.1f s\n", length_file);
169 printf("Time to run G.711: %.2f s (%.2f %% of realtime)\n\n", 161 printf("Time to run G.711: %.2f s (%.2f %% of realtime)\n\n",
170 runtime, 162 runtime,
171 (100 * runtime / length_file)); 163 (100 * runtime / length_file));
172 printf("---------------------END----------------------\n"); 164 printf("---------------------END----------------------\n");
173 165
174 fclose(inp); 166 fclose(inp);
175 fclose(outp); 167 fclose(outp);
176 168
177 return 0; 169 return 0;
178 } 170 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698