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

Side by Side Diff: webrtc/modules/audio_coding/codecs/opus/opus_interface.c

Issue 1179953003: Revert "Upconvert various types to int." (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Created 5 years, 6 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
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
71 int16_t WebRtcOpus_EncoderFree(OpusEncInst* inst) { 71 int16_t WebRtcOpus_EncoderFree(OpusEncInst* inst) {
72 if (inst) { 72 if (inst) {
73 opus_encoder_destroy(inst->encoder); 73 opus_encoder_destroy(inst->encoder);
74 free(inst); 74 free(inst);
75 return 0; 75 return 0;
76 } else { 76 } else {
77 return -1; 77 return -1;
78 } 78 }
79 } 79 }
80 80
81 int WebRtcOpus_Encode(OpusEncInst* inst, 81 int16_t WebRtcOpus_Encode(OpusEncInst* inst,
82 const int16_t* audio_in, 82 const int16_t* audio_in,
83 int16_t samples, 83 int16_t samples,
84 int16_t length_encoded_buffer, 84 int16_t length_encoded_buffer,
85 uint8_t* encoded) { 85 uint8_t* encoded) {
86 int res; 86 int res;
87 87
88 if (samples > 48 * kWebRtcOpusMaxEncodeFrameSizeMs) { 88 if (samples > 48 * kWebRtcOpusMaxEncodeFrameSizeMs) {
89 return -1; 89 return -1;
90 } 90 }
91 91
92 res = opus_encode(inst->encoder, 92 res = opus_encode(inst->encoder,
93 (const opus_int16*)audio_in, 93 (const opus_int16*)audio_in,
94 samples, 94 samples,
95 encoded, 95 encoded,
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
284 (opus_int16*)decoded, frame_size, decode_fec); 284 (opus_int16*)decoded, frame_size, decode_fec);
285 285
286 if (res <= 0) 286 if (res <= 0)
287 return -1; 287 return -1;
288 288
289 *audio_type = DetermineAudioType(inst, encoded_bytes); 289 *audio_type = DetermineAudioType(inst, encoded_bytes);
290 290
291 return res; 291 return res;
292 } 292 }
293 293
294 int WebRtcOpus_Decode(OpusDecInst* inst, const uint8_t* encoded, 294 int16_t WebRtcOpus_Decode(OpusDecInst* inst, const uint8_t* encoded,
295 int16_t encoded_bytes, int16_t* decoded, 295 int16_t encoded_bytes, int16_t* decoded,
296 int16_t* audio_type) { 296 int16_t* audio_type) {
297 int decoded_samples; 297 int decoded_samples;
298 298
299 if (encoded_bytes == 0) { 299 if (encoded_bytes == 0) {
300 *audio_type = DetermineAudioType(inst, encoded_bytes); 300 *audio_type = DetermineAudioType(inst, encoded_bytes);
301 decoded_samples = WebRtcOpus_DecodePlc(inst, decoded, 1); 301 decoded_samples = WebRtcOpus_DecodePlc(inst, decoded, 1);
302 } else { 302 } else {
303 decoded_samples = DecodeNative(inst, 303 decoded_samples = DecodeNative(inst,
304 encoded, 304 encoded,
305 encoded_bytes, 305 encoded_bytes,
306 kWebRtcOpusMaxFrameSizePerChannel, 306 kWebRtcOpusMaxFrameSizePerChannel,
307 decoded, 307 decoded,
308 audio_type, 308 audio_type,
309 0); 309 0);
310 } 310 }
311 if (decoded_samples < 0) { 311 if (decoded_samples < 0) {
312 return -1; 312 return -1;
313 } 313 }
314 314
315 /* Update decoded sample memory, to be used by the PLC in case of losses. */ 315 /* Update decoded sample memory, to be used by the PLC in case of losses. */
316 inst->prev_decoded_samples = decoded_samples; 316 inst->prev_decoded_samples = decoded_samples;
317 317
318 return decoded_samples; 318 return decoded_samples;
319 } 319 }
320 320
321 int WebRtcOpus_DecodePlc(OpusDecInst* inst, int16_t* decoded, 321 int16_t WebRtcOpus_DecodePlc(OpusDecInst* inst, int16_t* decoded,
322 int number_of_lost_frames) { 322 int16_t number_of_lost_frames) {
323 int16_t audio_type = 0; 323 int16_t audio_type = 0;
324 int decoded_samples; 324 int decoded_samples;
325 int plc_samples; 325 int plc_samples;
326 326
327 /* The number of samples we ask for is |number_of_lost_frames| times 327 /* The number of samples we ask for is |number_of_lost_frames| times
328 * |prev_decoded_samples_|. Limit the number of samples to maximum 328 * |prev_decoded_samples_|. Limit the number of samples to maximum
329 * |kWebRtcOpusMaxFrameSizePerChannel|. */ 329 * |kWebRtcOpusMaxFrameSizePerChannel|. */
330 plc_samples = number_of_lost_frames * inst->prev_decoded_samples; 330 plc_samples = number_of_lost_frames * inst->prev_decoded_samples;
331 plc_samples = (plc_samples <= kWebRtcOpusMaxFrameSizePerChannel) ? 331 plc_samples = (plc_samples <= kWebRtcOpusMaxFrameSizePerChannel) ?
332 plc_samples : kWebRtcOpusMaxFrameSizePerChannel; 332 plc_samples : kWebRtcOpusMaxFrameSizePerChannel;
333 decoded_samples = DecodeNative(inst, NULL, 0, plc_samples, 333 decoded_samples = DecodeNative(inst, NULL, 0, plc_samples,
334 decoded, &audio_type, 0); 334 decoded, &audio_type, 0);
335 if (decoded_samples < 0) { 335 if (decoded_samples < 0) {
336 return -1; 336 return -1;
337 } 337 }
338 338
339 return decoded_samples; 339 return decoded_samples;
340 } 340 }
341 341
342 int WebRtcOpus_DecodeFec(OpusDecInst* inst, const uint8_t* encoded, 342 int16_t WebRtcOpus_DecodeFec(OpusDecInst* inst, const uint8_t* encoded,
343 int16_t encoded_bytes, int16_t* decoded, 343 int16_t encoded_bytes, int16_t* decoded,
344 int16_t* audio_type) { 344 int16_t* audio_type) {
345 int decoded_samples; 345 int decoded_samples;
346 int fec_samples; 346 int fec_samples;
347 347
348 if (WebRtcOpus_PacketHasFec(encoded, encoded_bytes) != 1) { 348 if (WebRtcOpus_PacketHasFec(encoded, encoded_bytes) != 1) {
349 return 0; 349 return 0;
350 } 350 }
351 351
352 fec_samples = opus_packet_get_samples_per_frame(encoded, 48000); 352 fec_samples = opus_packet_get_samples_per_frame(encoded, 48000);
353 353
354 decoded_samples = DecodeNative(inst, encoded, encoded_bytes, 354 decoded_samples = DecodeNative(inst, encoded, encoded_bytes,
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
441 return 0; 441 return 0;
442 } 442 }
443 443
444 for (n = 0; n < channels; n++) { 444 for (n = 0; n < channels; n++) {
445 if (frame_data[0][0] & (0x80 >> ((n + 1) * (frames + 1) - 1))) 445 if (frame_data[0][0] & (0x80 >> ((n + 1) * (frames + 1) - 1)))
446 return 1; 446 return 1;
447 } 447 }
448 448
449 return 0; 449 return 0;
450 } 450 }
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/codecs/opus/opus_fec_test.cc ('k') | webrtc/modules/audio_coding/main/test/opus_test.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698