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

Side by Side Diff: src/opus_demo.c

Issue 12388030: Update Opus to 1.0.2. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/opus
Patch Set: Created 7 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « src/opus_decoder.c ('k') | src/opus_encoder.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* Copyright (c) 2007-2008 CSIRO 1 /* Copyright (c) 2007-2008 CSIRO
2 Copyright (c) 2007-2009 Xiph.Org Foundation 2 Copyright (c) 2007-2009 Xiph.Org Foundation
3 Written by Jean-Marc Valin */ 3 Written by Jean-Marc Valin */
4 /* 4 /*
5 Redistribution and use in source and binary forms, with or without 5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions 6 modification, are permitted provided that the following conditions
7 are met: 7 are met:
8 8
9 - Redistributions of source code must retain the above copyright 9 - Redistributions of source code must retain the above copyright
10 notice, this list of conditions and the following disclaimer. 10 notice, this list of conditions and the following disclaimer.
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
88 88
89 static void check_encoder_option(int decode_only, const char *opt) 89 static void check_encoder_option(int decode_only, const char *opt)
90 { 90 {
91 if (decode_only) 91 if (decode_only)
92 { 92 {
93 fprintf(stderr, "option %s is only for encoding\n", opt); 93 fprintf(stderr, "option %s is only for encoding\n", opt);
94 exit(EXIT_FAILURE); 94 exit(EXIT_FAILURE);
95 } 95 }
96 } 96 }
97 97
98 int silk8_test[][4] = { 98 static const int silk8_test[][4] = {
99 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960*3, 1}, 99 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960*3, 1},
100 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960*2, 1}, 100 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960*2, 1},
101 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960, 1}, 101 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960, 1},
102 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 480, 1}, 102 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 480, 1},
103 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960*3, 2}, 103 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960*3, 2},
104 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960*2, 2}, 104 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960*2, 2},
105 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960, 2}, 105 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960, 2},
106 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 480, 2} 106 {MODE_SILK_ONLY, OPUS_BANDWIDTH_NARROWBAND, 480, 2}
107 }; 107 };
108 108
109 int silk12_test[][4] = { 109 static const int silk12_test[][4] = {
110 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960*3, 1}, 110 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960*3, 1},
111 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960*2, 1}, 111 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960*2, 1},
112 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960, 1}, 112 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960, 1},
113 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 480, 1}, 113 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 480, 1},
114 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960*3, 2}, 114 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960*3, 2},
115 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960*2, 2}, 115 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960*2, 2},
116 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960, 2}, 116 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 960, 2},
117 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 480, 2} 117 {MODE_SILK_ONLY, OPUS_BANDWIDTH_MEDIUMBAND, 480, 2}
118 }; 118 };
119 119
120 int silk16_test[][4] = { 120 static const int silk16_test[][4] = {
121 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960*3, 1}, 121 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960*3, 1},
122 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960*2, 1}, 122 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960*2, 1},
123 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960, 1}, 123 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960, 1},
124 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 480, 1}, 124 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 480, 1},
125 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960*3, 2}, 125 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960*3, 2},
126 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960*2, 2}, 126 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960*2, 2},
127 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960, 2}, 127 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960, 2},
128 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 480, 2} 128 {MODE_SILK_ONLY, OPUS_BANDWIDTH_WIDEBAND, 480, 2}
129 }; 129 };
130 130
131 int hybrid24_test[][4] = { 131 static const int hybrid24_test[][4] = {
132 {MODE_SILK_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 960, 1}, 132 {MODE_SILK_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 960, 1},
133 {MODE_SILK_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 480, 1}, 133 {MODE_SILK_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 480, 1},
134 {MODE_SILK_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 960, 2}, 134 {MODE_SILK_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 960, 2},
135 {MODE_SILK_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 480, 2} 135 {MODE_SILK_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 480, 2}
136 }; 136 };
137 137
138 int hybrid48_test[][4] = { 138 static const int hybrid48_test[][4] = {
139 {MODE_SILK_ONLY, OPUS_BANDWIDTH_FULLBAND, 960, 1}, 139 {MODE_SILK_ONLY, OPUS_BANDWIDTH_FULLBAND, 960, 1},
140 {MODE_SILK_ONLY, OPUS_BANDWIDTH_FULLBAND, 480, 1}, 140 {MODE_SILK_ONLY, OPUS_BANDWIDTH_FULLBAND, 480, 1},
141 {MODE_SILK_ONLY, OPUS_BANDWIDTH_FULLBAND, 960, 2}, 141 {MODE_SILK_ONLY, OPUS_BANDWIDTH_FULLBAND, 960, 2},
142 {MODE_SILK_ONLY, OPUS_BANDWIDTH_FULLBAND, 480, 2} 142 {MODE_SILK_ONLY, OPUS_BANDWIDTH_FULLBAND, 480, 2}
143 }; 143 };
144 144
145 int celt_test[][4] = { 145 static const int celt_test[][4] = {
146 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 960, 1}, 146 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 960, 1},
147 {MODE_CELT_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 960, 1}, 147 {MODE_CELT_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 960, 1},
148 {MODE_CELT_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960, 1}, 148 {MODE_CELT_ONLY, OPUS_BANDWIDTH_WIDEBAND, 960, 1},
149 {MODE_CELT_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960, 1}, 149 {MODE_CELT_ONLY, OPUS_BANDWIDTH_NARROWBAND, 960, 1},
150 150
151 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 480, 1}, 151 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 480, 1},
152 {MODE_CELT_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 480, 1}, 152 {MODE_CELT_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 480, 1},
153 {MODE_CELT_ONLY, OPUS_BANDWIDTH_WIDEBAND, 480, 1}, 153 {MODE_CELT_ONLY, OPUS_BANDWIDTH_WIDEBAND, 480, 1},
154 {MODE_CELT_ONLY, OPUS_BANDWIDTH_NARROWBAND, 480, 1}, 154 {MODE_CELT_ONLY, OPUS_BANDWIDTH_NARROWBAND, 480, 1},
155 155
(...skipping 22 matching lines...) Expand all
178 {MODE_CELT_ONLY, OPUS_BANDWIDTH_WIDEBAND, 240, 2}, 178 {MODE_CELT_ONLY, OPUS_BANDWIDTH_WIDEBAND, 240, 2},
179 {MODE_CELT_ONLY, OPUS_BANDWIDTH_NARROWBAND, 240, 2}, 179 {MODE_CELT_ONLY, OPUS_BANDWIDTH_NARROWBAND, 240, 2},
180 180
181 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 120, 2}, 181 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 120, 2},
182 {MODE_CELT_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 120, 2}, 182 {MODE_CELT_ONLY, OPUS_BANDWIDTH_SUPERWIDEBAND, 120, 2},
183 {MODE_CELT_ONLY, OPUS_BANDWIDTH_WIDEBAND, 120, 2}, 183 {MODE_CELT_ONLY, OPUS_BANDWIDTH_WIDEBAND, 120, 2},
184 {MODE_CELT_ONLY, OPUS_BANDWIDTH_NARROWBAND, 120, 2}, 184 {MODE_CELT_ONLY, OPUS_BANDWIDTH_NARROWBAND, 120, 2},
185 185
186 }; 186 };
187 187
188 int celt_hq_test[][4] = { 188 static const int celt_hq_test[][4] = {
189 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 960, 2}, 189 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 960, 2},
190 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 480, 2}, 190 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 480, 2},
191 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 240, 2}, 191 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 240, 2},
192 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 120, 2}, 192 {MODE_CELT_ONLY, OPUS_BANDWIDTH_FULLBAND, 120, 2},
193 }; 193 };
194 194
195 int main(int argc, char *argv[]) 195 int main(int argc, char *argv[])
196 { 196 {
197 int err; 197 int err;
198 char *inFile, *outFile; 198 char *inFile, *outFile;
(...skipping 28 matching lines...) Expand all
227 int toggle = 0; 227 int toggle = 0;
228 opus_uint32 enc_final_range[2]; 228 opus_uint32 enc_final_range[2];
229 opus_uint32 dec_final_range; 229 opus_uint32 dec_final_range;
230 int encode_only=0, decode_only=0; 230 int encode_only=0, decode_only=0;
231 int max_frame_size = 960*6; 231 int max_frame_size = 960*6;
232 int curr_read=0; 232 int curr_read=0;
233 int sweep_bps = 0; 233 int sweep_bps = 0;
234 int random_framesize=0, newsize=0, delayed_celt=0; 234 int random_framesize=0, newsize=0, delayed_celt=0;
235 int sweep_max=0, sweep_min=0; 235 int sweep_max=0, sweep_min=0;
236 int random_fec=0; 236 int random_fec=0;
237 int (*mode_list)[4]=NULL; 237 const int (*mode_list)[4]=NULL;
238 int nb_modes_in_list=0; 238 int nb_modes_in_list=0;
239 int curr_mode=0; 239 int curr_mode=0;
240 int curr_mode_count=0; 240 int curr_mode_count=0;
241 int mode_switch_time = 48000; 241 int mode_switch_time = 48000;
242 242
243 if (argc < 5 ) 243 if (argc < 5 )
244 { 244 {
245 print_usage( argv ); 245 print_usage( argv );
246 return EXIT_FAILURE; 246 return EXIT_FAILURE;
247 } 247 }
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after
677 fprintf(stderr, "Error writing.\n"); 677 fprintf(stderr, "Error writing.\n");
678 return EXIT_FAILURE; 678 return EXIT_FAILURE;
679 } 679 }
680 if (fwrite(data[toggle], 1, len[toggle], fout) != (unsigned)len[togg le]) { 680 if (fwrite(data[toggle], 1, len[toggle], fout) != (unsigned)len[togg le]) {
681 fprintf(stderr, "Error writing.\n"); 681 fprintf(stderr, "Error writing.\n");
682 return EXIT_FAILURE; 682 return EXIT_FAILURE;
683 } 683 }
684 } else { 684 } else {
685 int output_samples; 685 int output_samples;
686 lost = len[toggle]==0 || (packet_loss_perc>0 && rand()%100 < packet_ loss_perc); 686 lost = len[toggle]==0 || (packet_loss_perc>0 && rand()%100 < packet_ loss_perc);
687 if (lost)
688 opus_decoder_ctl(dec, OPUS_GET_LAST_PACKET_DURATION(&output_sampl es));
689 else
690 output_samples = max_frame_size;
687 if( count >= use_inbandfec ) { 691 if( count >= use_inbandfec ) {
688 /* delay by one packet when using in-band FEC */ 692 /* delay by one packet when using in-band FEC */
689 if( use_inbandfec ) { 693 if( use_inbandfec ) {
690 if( lost_prev ) { 694 if( lost_prev ) {
691 /* attempt to decode with in-band FEC from next packet * / 695 /* attempt to decode with in-band FEC from next packet * /
692 output_samples = opus_decode(dec, lost ? NULL : data[tog gle], len[toggle], out, max_frame_size, 1); 696 output_samples = opus_decode(dec, lost ? NULL : data[tog gle], len[toggle], out, output_samples, 1);
693 } else { 697 } else {
694 /* regular decode */ 698 /* regular decode */
695 output_samples = opus_decode(dec, data[1-toggle], len[1- toggle], out, max_frame_size, 0); 699 output_samples = opus_decode(dec, data[1-toggle], len[1- toggle], out, output_samples, 0);
696 } 700 }
697 } else { 701 } else {
698 output_samples = opus_decode(dec, lost ? NULL : data[toggle] , len[toggle], out, max_frame_size, 0); 702 output_samples = opus_decode(dec, lost ? NULL : data[toggle] , len[toggle], out, output_samples, 0);
699 } 703 }
700 if (output_samples>0) 704 if (output_samples>0)
701 { 705 {
702 if (output_samples>skip) { 706 if (output_samples>skip) {
703 int i; 707 int i;
704 for(i=0;i<(output_samples-skip)*channels;i++) 708 for(i=0;i<(output_samples-skip)*channels;i++)
705 { 709 {
706 short s; 710 short s;
707 s=out[i+(skip*channels)]; 711 s=out[i+(skip*channels)];
708 fbytes[2*i]=s&0xFF; 712 fbytes[2*i]=s&0xFF;
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 free(data[0]); 783 free(data[0]);
780 if (use_inbandfec) 784 if (use_inbandfec)
781 free(data[1]); 785 free(data[1]);
782 fclose(fin); 786 fclose(fin);
783 fclose(fout); 787 fclose(fout);
784 free(in); 788 free(in);
785 free(out); 789 free(out);
786 free(fbytes); 790 free(fbytes);
787 return EXIT_SUCCESS; 791 return EXIT_SUCCESS;
788 } 792 }
OLDNEW
« no previous file with comments | « src/opus_decoder.c ('k') | src/opus_encoder.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698