OLD | NEW |
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 486 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
497 int16_t WebRtcIsac_Encode(ISACStruct* ISAC_main_inst, | 497 int16_t WebRtcIsac_Encode(ISACStruct* ISAC_main_inst, |
498 const int16_t* speechIn, | 498 const int16_t* speechIn, |
499 uint8_t* encoded) { | 499 uint8_t* encoded) { |
500 float inFrame[FRAMESAMPLES_10ms]; | 500 float inFrame[FRAMESAMPLES_10ms]; |
501 int16_t speechInLB[FRAMESAMPLES_10ms]; | 501 int16_t speechInLB[FRAMESAMPLES_10ms]; |
502 int16_t speechInUB[FRAMESAMPLES_10ms]; | 502 int16_t speechInUB[FRAMESAMPLES_10ms]; |
503 int16_t streamLenLB = 0; | 503 int16_t streamLenLB = 0; |
504 int16_t streamLenUB = 0; | 504 int16_t streamLenUB = 0; |
505 int16_t streamLen = 0; | 505 int16_t streamLen = 0; |
506 int16_t k = 0; | 506 int16_t k = 0; |
507 int garbageLen = 0; | 507 uint8_t garbageLen = 0; |
508 int32_t bottleneck = 0; | 508 int32_t bottleneck = 0; |
509 int16_t bottleneckIdx = 0; | 509 int16_t bottleneckIdx = 0; |
510 int16_t jitterInfo = 0; | 510 int16_t jitterInfo = 0; |
511 | 511 |
512 ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst; | 512 ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst; |
513 ISACLBStruct* instLB = &(instISAC->instLB); | 513 ISACLBStruct* instLB = &(instISAC->instLB); |
514 ISACUBStruct* instUB = &(instISAC->instUB); | 514 ISACUBStruct* instUB = &(instISAC->instUB); |
515 const int16_t* speech_in_ptr = speechIn; | 515 const int16_t* speech_in_ptr = speechIn; |
516 int16_t resampled_buff[FRAMESAMPLES_10ms * 2]; | 516 int16_t resampled_buff[FRAMESAMPLES_10ms * 2]; |
517 | 517 |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
638 if ((streamLenUB > (255 - (LEN_CHECK_SUM_WORD8 + 1))) || | 638 if ((streamLenUB > (255 - (LEN_CHECK_SUM_WORD8 + 1))) || |
639 (streamLenUB == -ISAC_PAYLOAD_LARGER_THAN_LIMIT)) { | 639 (streamLenUB == -ISAC_PAYLOAD_LARGER_THAN_LIMIT)) { |
640 /* We have got a too long bit-stream we skip the upper-band | 640 /* We have got a too long bit-stream we skip the upper-band |
641 * bit-stream for this frame. */ | 641 * bit-stream for this frame. */ |
642 streamLenUB = 0; | 642 streamLenUB = 0; |
643 } | 643 } |
644 | 644 |
645 memcpy(encoded, instLB->ISACencLB_obj.bitstr_obj.stream, streamLenLB); | 645 memcpy(encoded, instLB->ISACencLB_obj.bitstr_obj.stream, streamLenLB); |
646 streamLen = streamLenLB; | 646 streamLen = streamLenLB; |
647 if (streamLenUB > 0) { | 647 if (streamLenUB > 0) { |
648 encoded[streamLenLB] = streamLenUB + 1 + LEN_CHECK_SUM_WORD8; | 648 encoded[streamLenLB] = (uint8_t)(streamLenUB + 1 + LEN_CHECK_SUM_WORD8); |
649 memcpy(&encoded[streamLenLB + 1], | 649 memcpy(&encoded[streamLenLB + 1], |
650 instUB->ISACencUB_obj.bitstr_obj.stream, | 650 instUB->ISACencUB_obj.bitstr_obj.stream, |
651 streamLenUB); | 651 streamLenUB); |
652 streamLen += encoded[streamLenLB]; | 652 streamLen += encoded[streamLenLB]; |
653 } else { | 653 } else { |
654 encoded[streamLenLB] = 0; | 654 encoded[streamLenLB] = 0; |
655 } | 655 } |
656 } else { | 656 } else { |
657 if (streamLenLB == 0) { | 657 if (streamLenLB == 0) { |
658 return 0; | 658 return 0; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
696 if ((instISAC->bandwidthKHz == isac8kHz) || | 696 if ((instISAC->bandwidthKHz == isac8kHz) || |
697 (streamLenUB == 0)) { | 697 (streamLenUB == 0)) { |
698 ptrGarbage = &encoded[streamLenLB]; | 698 ptrGarbage = &encoded[streamLenLB]; |
699 limit = streamLen + 255; | 699 limit = streamLen + 255; |
700 } else { | 700 } else { |
701 ptrGarbage = &encoded[streamLenLB + 1 + streamLenUB]; | 701 ptrGarbage = &encoded[streamLenLB + 1 + streamLenUB]; |
702 limit = streamLen + (255 - encoded[streamLenLB]); | 702 limit = streamLen + (255 - encoded[streamLenLB]); |
703 } | 703 } |
704 minBytes = (minBytes > limit) ? limit : minBytes; | 704 minBytes = (minBytes > limit) ? limit : minBytes; |
705 | 705 |
706 garbageLen = (minBytes > streamLen) ? (minBytes - streamLen) : 0; | 706 garbageLen = (minBytes > streamLen) ? (uint8_t)(minBytes - streamLen) : 0; |
707 | 707 |
708 /* Save data for creation of multiple bit-streams. */ | 708 /* Save data for creation of multiple bit-streams. */ |
709 /* If bit-stream too short then add garbage at the end. */ | 709 /* If bit-stream too short then add garbage at the end. */ |
710 if (garbageLen > 0) { | 710 if (garbageLen > 0) { |
711 for (k = 0; k < garbageLen; k++) { | 711 for (k = 0; k < garbageLen; k++) { |
712 ptrGarbage[k] = (uint8_t)(rand() & 0xFF); | 712 ptrGarbage[k] = (uint8_t)(rand() & 0xFF); |
713 } | 713 } |
714 /* For a correct length of the upper-band bit-stream together | 714 /* For a correct length of the upper-band bit-stream together |
715 * with the garbage. Garbage is embeded in upper-band bit-stream. | 715 * with the garbage. Garbage is embeded in upper-band bit-stream. |
716 * That is the only way to preserve backward compatibility. */ | 716 * That is the only way to preserve backward compatibility. */ |
(...skipping 1651 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2368 * - ISAC_main_inst : iSAC instance | 2368 * - ISAC_main_inst : iSAC instance |
2369 * | 2369 * |
2370 * Return value : sampling rate in Hertz. Decoder output is | 2370 * Return value : sampling rate in Hertz. Decoder output is |
2371 * sampled at this rate. | 2371 * sampled at this rate. |
2372 * | 2372 * |
2373 */ | 2373 */ |
2374 uint16_t WebRtcIsac_DecSampRate(ISACStruct* ISAC_main_inst) { | 2374 uint16_t WebRtcIsac_DecSampRate(ISACStruct* ISAC_main_inst) { |
2375 ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst; | 2375 ISACMainStruct* instISAC = (ISACMainStruct*)ISAC_main_inst; |
2376 return instISAC->decoderSamplingRateKHz == kIsacWideband ? 16000 : 32000; | 2376 return instISAC->decoderSamplingRateKHz == kIsacWideband ? 16000 : 32000; |
2377 } | 2377 } |
OLD | NEW |