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

Side by Side Diff: webrtc/modules/audio_coding/codecs/isac/fix/source/isacfix.c

Issue 1179093002: Reland "Upconvert various types to int.", isac portion. (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 381 matching lines...) Expand 10 before | Expand all | Expand 10 after
392 * Output: 392 * Output:
393 * - encoded : the encoded data vector 393 * - encoded : the encoded data vector
394 * 394 *
395 * Return value: 395 * Return value:
396 * : >0 - Length (in bytes) of coded data 396 * : >0 - Length (in bytes) of coded data
397 * : 0 - The buffer didn't reach the chosen framesize 397 * : 0 - The buffer didn't reach the chosen framesize
398 * so it keeps buffering speech samples. 398 * so it keeps buffering speech samples.
399 * : -1 - Error 399 * : -1 - Error
400 */ 400 */
401 401
402 int16_t WebRtcIsacfix_Encode(ISACFIX_MainStruct *ISAC_main_inst, 402 int WebRtcIsacfix_Encode(ISACFIX_MainStruct *ISAC_main_inst,
403 const int16_t *speechIn, 403 const int16_t *speechIn,
404 uint8_t* encoded) 404 uint8_t* encoded)
405 { 405 {
406 ISACFIX_SubStruct *ISAC_inst; 406 ISACFIX_SubStruct *ISAC_inst;
407 int16_t stream_len; 407 int stream_len;
408 408
409 /* typecast pointer to rela structure */ 409 /* typecast pointer to rela structure */
410 ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst; 410 ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
411 411
412 412
413 /* check if encoder initiated */ 413 /* check if encoder initiated */
414 if ((ISAC_inst->initflag & 2) != 2) { 414 if ((ISAC_inst->initflag & 2) != 2) {
415 ISAC_inst->errorcode = ISAC_ENCODER_NOT_INITIATED; 415 ISAC_inst->errorcode = ISAC_ENCODER_NOT_INITIATED;
416 return (-1); 416 return (-1);
417 } 417 }
418 418
419 stream_len = WebRtcIsacfix_EncodeImpl((int16_t*)speechIn, 419 stream_len = WebRtcIsacfix_EncodeImpl((int16_t*)speechIn,
420 &ISAC_inst->ISACenc_obj, 420 &ISAC_inst->ISACenc_obj,
421 &ISAC_inst->bwestimator_obj, 421 &ISAC_inst->bwestimator_obj,
422 ISAC_inst->CodingMode); 422 ISAC_inst->CodingMode);
423 if (stream_len<0) { 423 if (stream_len<0) {
424 ISAC_inst->errorcode = - stream_len; 424 ISAC_inst->errorcode = -(int16_t)stream_len;
425 return -1; 425 return -1;
426 } 426 }
427 427
428 write_be16(ISAC_inst->ISACenc_obj.bitstr_obj.stream, (size_t)stream_len, 428 write_be16(ISAC_inst->ISACenc_obj.bitstr_obj.stream, (size_t)stream_len,
429 encoded); 429 encoded);
430 return stream_len; 430 return stream_len;
431 431
432 } 432 }
433 433
434 434
(...skipping 325 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 * - len : bytes in encoded vector 760 * - len : bytes in encoded vector
761 * 761 *
762 * Output: 762 * Output:
763 * - decoded : The decoded vector 763 * - decoded : The decoded vector
764 * 764 *
765 * Return value : >0 - number of samples in decoded vector 765 * Return value : >0 - number of samples in decoded vector
766 * -1 - Error 766 * -1 - Error
767 */ 767 */
768 768
769 769
770 int16_t WebRtcIsacfix_Decode(ISACFIX_MainStruct* ISAC_main_inst, 770 int WebRtcIsacfix_Decode(ISACFIX_MainStruct* ISAC_main_inst,
771 const uint8_t* encoded, 771 const uint8_t* encoded,
772 int16_t len, 772 int16_t len,
773 int16_t* decoded, 773 int16_t* decoded,
774 int16_t* speechType) 774 int16_t* speechType)
775 { 775 {
776 ISACFIX_SubStruct *ISAC_inst; 776 ISACFIX_SubStruct *ISAC_inst;
777 /* number of samples (480 or 960), output from decoder */ 777 /* number of samples (480 or 960), output from decoder */
778 /* that were actually used in the encoder/decoder (determined on the fly) */ 778 /* that were actually used in the encoder/decoder (determined on the fly) */
779 int16_t number_of_samples; 779 int16_t number_of_samples;
780 int16_t declen = 0; 780 int declen = 0;
781 781
782 /* typecast pointer to real structure */ 782 /* typecast pointer to real structure */
783 ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst; 783 ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
784 784
785 /* check if decoder initiated */ 785 /* check if decoder initiated */
786 if ((ISAC_inst->initflag & 1) != 1) { 786 if ((ISAC_inst->initflag & 1) != 1) {
787 ISAC_inst->errorcode = ISAC_DECODER_NOT_INITIATED; 787 ISAC_inst->errorcode = ISAC_DECODER_NOT_INITIATED;
788 return (-1); 788 return (-1);
789 } 789 }
790 790
(...skipping 12 matching lines...) Expand all
803 803
804 read_be16(encoded, len, ISAC_inst->ISACdec_obj.bitstr_obj.stream); 804 read_be16(encoded, len, ISAC_inst->ISACdec_obj.bitstr_obj.stream);
805 805
806 /* added for NetEq purposes (VAD/DTX related) */ 806 /* added for NetEq purposes (VAD/DTX related) */
807 *speechType=1; 807 *speechType=1;
808 808
809 declen = WebRtcIsacfix_DecodeImpl(decoded,&ISAC_inst->ISACdec_obj, &number_of_ samples); 809 declen = WebRtcIsacfix_DecodeImpl(decoded,&ISAC_inst->ISACdec_obj, &number_of_ samples);
810 810
811 if (declen < 0) { 811 if (declen < 0) {
812 /* Some error inside the decoder */ 812 /* Some error inside the decoder */
813 ISAC_inst->errorcode = -declen; 813 ISAC_inst->errorcode = -(int16_t)declen;
814 memset(decoded, 0, sizeof(int16_t) * MAX_FRAMESAMPLES); 814 memset(decoded, 0, sizeof(int16_t) * MAX_FRAMESAMPLES);
815 return -1; 815 return -1;
816 } 816 }
817 817
818 /* error check */ 818 /* error check */
819 819
820 if (declen & 0x0001) { 820 if (declen & 0x0001) {
821 if (len != declen && len != declen + (((ISAC_inst->ISACdec_obj.bitstr_obj).s tream[declen>>1]) & 0x00FF) ) { 821 if (len != declen && len != declen + (((ISAC_inst->ISACdec_obj.bitstr_obj).s tream[declen>>1]) & 0x00FF) ) {
822 ISAC_inst->errorcode = ISAC_LENGTH_MISMATCH; 822 ISAC_inst->errorcode = ISAC_LENGTH_MISMATCH;
823 memset(decoded, 0, sizeof(int16_t) * number_of_samples); 823 memset(decoded, 0, sizeof(int16_t) * number_of_samples);
(...skipping 29 matching lines...) Expand all
853 * - len : bytes in encoded vector 853 * - len : bytes in encoded vector
854 * 854 *
855 * Output: 855 * Output:
856 * - decoded : The decoded vector 856 * - decoded : The decoded vector
857 * 857 *
858 * Return value : >0 - number of samples in decoded vector 858 * Return value : >0 - number of samples in decoded vector
859 * -1 - Error 859 * -1 - Error
860 */ 860 */
861 861
862 #ifdef WEBRTC_ISAC_FIX_NB_CALLS_ENABLED 862 #ifdef WEBRTC_ISAC_FIX_NB_CALLS_ENABLED
863 int16_t WebRtcIsacfix_DecodeNb(ISACFIX_MainStruct *ISAC_main_inst, 863 int WebRtcIsacfix_DecodeNb(ISACFIX_MainStruct *ISAC_main_inst,
864 const uint16_t *encoded, 864 const uint16_t *encoded,
865 int16_t len, 865 int16_t len,
866 int16_t *decoded, 866 int16_t *decoded,
867 int16_t *speechType) 867 int16_t *speechType)
868 { 868 {
869 ISACFIX_SubStruct *ISAC_inst; 869 ISACFIX_SubStruct *ISAC_inst;
870 /* twice the number of samples (480 or 960), output from decoder */ 870 /* twice the number of samples (480 or 960), output from decoder */
871 /* that were actually used in the encoder/decoder (determined on the fly) */ 871 /* that were actually used in the encoder/decoder (determined on the fly) */
872 int16_t number_of_samples; 872 int16_t number_of_samples;
873 int16_t declen = 0; 873 int declen = 0;
874 int16_t dummy[FRAMESAMPLES/2]; 874 int16_t dummy[FRAMESAMPLES/2];
875 875
876 876
877 /* typecast pointer to real structure */ 877 /* typecast pointer to real structure */
878 ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst; 878 ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
879 879
880 /* check if decoder initiated */ 880 /* check if decoder initiated */
881 if ((ISAC_inst->initflag & 1) != 1) { 881 if ((ISAC_inst->initflag & 1) != 1) {
882 ISAC_inst->errorcode = ISAC_DECODER_NOT_INITIATED; 882 ISAC_inst->errorcode = ISAC_DECODER_NOT_INITIATED;
883 return (-1); 883 return (-1);
(...skipping 13 matching lines...) Expand all
897 897
898 read_be16(encoded, len, ISAC_inst->ISACdec_obj.bitstr_obj.stream); 898 read_be16(encoded, len, ISAC_inst->ISACdec_obj.bitstr_obj.stream);
899 899
900 /* added for NetEq purposes (VAD/DTX related) */ 900 /* added for NetEq purposes (VAD/DTX related) */
901 *speechType=1; 901 *speechType=1;
902 902
903 declen = WebRtcIsacfix_DecodeImpl(decoded,&ISAC_inst->ISACdec_obj, &number_of_ samples); 903 declen = WebRtcIsacfix_DecodeImpl(decoded,&ISAC_inst->ISACdec_obj, &number_of_ samples);
904 904
905 if (declen < 0) { 905 if (declen < 0) {
906 /* Some error inside the decoder */ 906 /* Some error inside the decoder */
907 ISAC_inst->errorcode = -declen; 907 ISAC_inst->errorcode = -(int16_t)declen;
908 memset(decoded, 0, sizeof(int16_t) * FRAMESAMPLES); 908 memset(decoded, 0, sizeof(int16_t) * FRAMESAMPLES);
909 return -1; 909 return -1;
910 } 910 }
911 911
912 /* error check */ 912 /* error check */
913 913
914 if (declen & 0x0001) { 914 if (declen & 0x0001) {
915 if (len != declen && len != declen + (((ISAC_inst->ISACdec_obj.bitstr_obj).s tream[declen>>1]) & 0x00FF) ) { 915 if (len != declen && len != declen + (((ISAC_inst->ISACdec_obj.bitstr_obj).s tream[declen>>1]) & 0x00FF) ) {
916 ISAC_inst->errorcode = ISAC_LENGTH_MISMATCH; 916 ISAC_inst->errorcode = ISAC_LENGTH_MISMATCH;
917 memset(decoded, 0, sizeof(int16_t) * number_of_samples); 917 memset(decoded, 0, sizeof(int16_t) * number_of_samples);
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1068 * - ISAC_main_inst : ISAC instance. 1068 * - ISAC_main_inst : ISAC instance.
1069 * - rate : limit on the short-term average bit rate, 1069 * - rate : limit on the short-term average bit rate,
1070 * in bits/second (between 10000 and 32000) 1070 * in bits/second (between 10000 and 32000)
1071 * - framesize : number of milliseconds per frame (30 or 60) 1071 * - framesize : number of milliseconds per frame (30 or 60)
1072 * 1072 *
1073 * Return value : 0 - ok 1073 * Return value : 0 - ok
1074 * -1 - Error 1074 * -1 - Error
1075 */ 1075 */
1076 1076
1077 int16_t WebRtcIsacfix_Control(ISACFIX_MainStruct *ISAC_main_inst, 1077 int16_t WebRtcIsacfix_Control(ISACFIX_MainStruct *ISAC_main_inst,
1078 int16_t rate, 1078 int16_t rate,
1079 int16_t framesize) 1079 int framesize)
1080 { 1080 {
1081 ISACFIX_SubStruct *ISAC_inst; 1081 ISACFIX_SubStruct *ISAC_inst;
1082 /* typecast pointer to real structure */ 1082 /* typecast pointer to real structure */
1083 ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst; 1083 ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
1084 1084
1085 if (ISAC_inst->CodingMode == 0) 1085 if (ISAC_inst->CodingMode == 0)
1086 { 1086 {
1087 /* in adaptive mode */ 1087 /* in adaptive mode */
1088 ISAC_inst->errorcode = ISAC_MODE_MISMATCH; 1088 ISAC_inst->errorcode = ISAC_MODE_MISMATCH;
1089 return -1; 1089 return -1;
1090 } 1090 }
1091 1091
1092 1092
1093 if (rate >= 10000 && rate <= 32000) 1093 if (rate >= 10000 && rate <= 32000)
1094 ISAC_inst->ISACenc_obj.BottleNeck = rate; 1094 ISAC_inst->ISACenc_obj.BottleNeck = rate;
1095 else { 1095 else {
1096 ISAC_inst->errorcode = ISAC_DISALLOWED_BOTTLENECK; 1096 ISAC_inst->errorcode = ISAC_DISALLOWED_BOTTLENECK;
1097 return -1; 1097 return -1;
1098 } 1098 }
1099 1099
1100 1100
1101 1101
1102 if (framesize == 30 || framesize == 60) 1102 if (framesize == 30 || framesize == 60)
1103 ISAC_inst->ISACenc_obj.new_framelength = (FS/1000) * framesize; 1103 ISAC_inst->ISACenc_obj.new_framelength = (int16_t)((FS/1000) * framesize);
1104 else { 1104 else {
1105 ISAC_inst->errorcode = ISAC_DISALLOWED_FRAME_LENGTH; 1105 ISAC_inst->errorcode = ISAC_DISALLOWED_FRAME_LENGTH;
1106 return -1; 1106 return -1;
1107 } 1107 }
1108 1108
1109 return 0; 1109 return 0;
1110 } 1110 }
1111 1111
1112 1112
1113 /**************************************************************************** 1113 /****************************************************************************
(...skipping 14 matching lines...) Expand all
1128 * - enforceFrameSize : 1 to enforce the given frame-size through out 1128 * - enforceFrameSize : 1 to enforce the given frame-size through out
1129 * the adaptation process, 0 to let iSAC change 1129 * the adaptation process, 0 to let iSAC change
1130 * the frame-size if required. 1130 * the frame-size if required.
1131 * 1131 *
1132 * Return value : 0 - ok 1132 * Return value : 0 - ok
1133 * -1 - Error 1133 * -1 - Error
1134 */ 1134 */
1135 1135
1136 int16_t WebRtcIsacfix_ControlBwe(ISACFIX_MainStruct *ISAC_main_inst, 1136 int16_t WebRtcIsacfix_ControlBwe(ISACFIX_MainStruct *ISAC_main_inst,
1137 int16_t rateBPS, 1137 int16_t rateBPS,
1138 int16_t frameSizeMs, 1138 int frameSizeMs,
1139 int16_t enforceFrameSize) 1139 int16_t enforceFrameSize)
1140 { 1140 {
1141 ISACFIX_SubStruct *ISAC_inst; 1141 ISACFIX_SubStruct *ISAC_inst;
1142 /* Typecast pointer to real structure */ 1142 /* Typecast pointer to real structure */
1143 ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst; 1143 ISAC_inst = (ISACFIX_SubStruct *)ISAC_main_inst;
1144 1144
1145 /* check if encoder initiated */ 1145 /* check if encoder initiated */
1146 if ((ISAC_inst->initflag & 2) != 2) { 1146 if ((ISAC_inst->initflag & 2) != 2) {
1147 ISAC_inst->errorcode = ISAC_ENCODER_NOT_INITIATED; 1147 ISAC_inst->errorcode = ISAC_ENCODER_NOT_INITIATED;
1148 return (-1); 1148 return (-1);
(...skipping 13 matching lines...) Expand all
1162 /* if rateBPS is 0, keep the default initial bottleneck value (15000) */ 1162 /* if rateBPS is 0, keep the default initial bottleneck value (15000) */
1163 if ((rateBPS >= 10000) && (rateBPS <= 32000)) { 1163 if ((rateBPS >= 10000) && (rateBPS <= 32000)) {
1164 ISAC_inst->bwestimator_obj.sendBwAvg = (((uint32_t)rateBPS) << 7); 1164 ISAC_inst->bwestimator_obj.sendBwAvg = (((uint32_t)rateBPS) << 7);
1165 } else if (rateBPS != 0) { 1165 } else if (rateBPS != 0) {
1166 ISAC_inst->errorcode = ISAC_DISALLOWED_BOTTLENECK; 1166 ISAC_inst->errorcode = ISAC_DISALLOWED_BOTTLENECK;
1167 return -1; 1167 return -1;
1168 } 1168 }
1169 1169
1170 /* Set initial framesize. If enforceFrameSize is set the frame size will not c hange */ 1170 /* Set initial framesize. If enforceFrameSize is set the frame size will not c hange */
1171 if ((frameSizeMs == 30) || (frameSizeMs == 60)) { 1171 if ((frameSizeMs == 30) || (frameSizeMs == 60)) {
1172 ISAC_inst->ISACenc_obj.new_framelength = (FS/1000) * frameSizeMs; 1172 ISAC_inst->ISACenc_obj.new_framelength = (int16_t)((FS/1000) * frameSizeMs);
1173 } else { 1173 } else {
1174 ISAC_inst->errorcode = ISAC_DISALLOWED_FRAME_LENGTH; 1174 ISAC_inst->errorcode = ISAC_DISALLOWED_FRAME_LENGTH;
1175 return -1; 1175 return -1;
1176 } 1176 }
1177 1177
1178 return 0; 1178 return 0;
1179 } 1179 }
1180 1180
1181 1181
1182 1182
(...skipping 336 matching lines...) Expand 10 before | Expand all | Expand 10 after
1519 * 1519 *
1520 * Output: 1520 * Output:
1521 * - version : Pointer to character string 1521 * - version : Pointer to character string
1522 * 1522 *
1523 */ 1523 */
1524 1524
1525 void WebRtcIsacfix_version(char *version) 1525 void WebRtcIsacfix_version(char *version)
1526 { 1526 {
1527 strcpy(version, "3.6.0"); 1527 strcpy(version, "3.6.0");
1528 } 1528 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698