| OLD | NEW |
| (Empty) |
| 1 /* | |
| 2 * Copyright (c) 2011 The WebRTC project authors. All Rights Reserved. | |
| 3 * | |
| 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 | |
| 6 * tree. An additional intellectual property rights grant can be found | |
| 7 * in the file PATENTS. All contributing project authors may | |
| 8 * be found in the AUTHORS file in the root of the source tree. | |
| 9 */ | |
| 10 | |
| 11 #ifndef WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INTERFACE_ISACFIX_H_ | |
| 12 #define WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INTERFACE_ISACFIX_H_ | |
| 13 | |
| 14 #include <stddef.h> | |
| 15 | |
| 16 #include "webrtc/modules/audio_coding/codecs/isac/bandwidth_info.h" | |
| 17 #include "webrtc/typedefs.h" | |
| 18 | |
| 19 typedef struct { | |
| 20 void *dummy; | |
| 21 } ISACFIX_MainStruct; | |
| 22 | |
| 23 | |
| 24 #if defined(__cplusplus) | |
| 25 extern "C" { | |
| 26 #endif | |
| 27 | |
| 28 | |
| 29 /************************************************************************** | |
| 30 * WebRtcIsacfix_AssignSize(...) | |
| 31 * | |
| 32 * Functions used when malloc is not allowed | |
| 33 * Output the number of bytes needed to allocate for iSAC struct. | |
| 34 * | |
| 35 */ | |
| 36 | |
| 37 int16_t WebRtcIsacfix_AssignSize(int *sizeinbytes); | |
| 38 | |
| 39 /************************************************************************** | |
| 40 * WebRtcIsacfix_Assign(...) | |
| 41 * | |
| 42 * Functions used when malloc is not allowed, it | |
| 43 * places a struct at the given address. | |
| 44 * | |
| 45 * Input: | |
| 46 * - *ISAC_main_inst : a pointer to the coder instance. | |
| 47 * - ISACFIX_inst_Addr : address of the memory where a space is | |
| 48 * for iSAC structure. | |
| 49 * | |
| 50 * Return value : 0 - Ok | |
| 51 * -1 - Error | |
| 52 */ | |
| 53 | |
| 54 int16_t WebRtcIsacfix_Assign(ISACFIX_MainStruct **inst, | |
| 55 void *ISACFIX_inst_Addr); | |
| 56 | |
| 57 /**************************************************************************** | |
| 58 * WebRtcIsacfix_Create(...) | |
| 59 * | |
| 60 * This function creates an ISAC instance, which will contain the state | |
| 61 * information for one coding/decoding channel. | |
| 62 * | |
| 63 * Input: | |
| 64 * - *ISAC_main_inst : a pointer to the coder instance. | |
| 65 * | |
| 66 * Return value : 0 - Ok | |
| 67 * -1 - Error | |
| 68 */ | |
| 69 | |
| 70 int16_t WebRtcIsacfix_Create(ISACFIX_MainStruct **ISAC_main_inst); | |
| 71 | |
| 72 | |
| 73 /**************************************************************************** | |
| 74 * WebRtcIsacfix_Free(...) | |
| 75 * | |
| 76 * This function frees the ISAC instance created at the beginning. | |
| 77 * | |
| 78 * Input: | |
| 79 * - ISAC_main_inst : a ISAC instance. | |
| 80 * | |
| 81 * Return value : 0 - Ok | |
| 82 * -1 - Error | |
| 83 */ | |
| 84 | |
| 85 int16_t WebRtcIsacfix_Free(ISACFIX_MainStruct *ISAC_main_inst); | |
| 86 | |
| 87 | |
| 88 /**************************************************************************** | |
| 89 * WebRtcIsacfix_EncoderInit(...) | |
| 90 * | |
| 91 * This function initializes an ISAC instance prior to the encoder calls. | |
| 92 * | |
| 93 * Input: | |
| 94 * - ISAC_main_inst : ISAC instance. | |
| 95 * - CodingMode : 0 - Bit rate and frame length are automatically | |
| 96 * adjusted to available bandwidth on | |
| 97 * transmission channel. | |
| 98 * 1 - User sets a frame length and a target bit | |
| 99 * rate which is taken as the maximum short-ter
m | |
| 100 * average bit rate. | |
| 101 * | |
| 102 * Return value : 0 - Ok | |
| 103 * -1 - Error | |
| 104 */ | |
| 105 | |
| 106 int16_t WebRtcIsacfix_EncoderInit(ISACFIX_MainStruct *ISAC_main_inst, | |
| 107 int16_t CodingMode); | |
| 108 | |
| 109 | |
| 110 /**************************************************************************** | |
| 111 * WebRtcIsacfix_Encode(...) | |
| 112 * | |
| 113 * This function encodes 10ms frame(s) and inserts it into a package. | |
| 114 * Input speech length has to be 160 samples (10ms). The encoder buffers those | |
| 115 * 10ms frames until it reaches the chosen Framesize (480 or 960 samples | |
| 116 * corresponding to 30 or 60 ms frames), and then proceeds to the encoding. | |
| 117 * | |
| 118 * Input: | |
| 119 * - ISAC_main_inst : ISAC instance. | |
| 120 * - speechIn : input speech vector. | |
| 121 * | |
| 122 * Output: | |
| 123 * - encoded : the encoded data vector | |
| 124 * | |
| 125 * Return value : >0 - Length (in bytes) of coded data | |
| 126 * 0 - The buffer didn't reach the chosen framesiz
e | |
| 127 * so it keeps buffering speech samples. | |
| 128 * -1 - Error | |
| 129 */ | |
| 130 | |
| 131 int WebRtcIsacfix_Encode(ISACFIX_MainStruct *ISAC_main_inst, | |
| 132 const int16_t *speechIn, | |
| 133 uint8_t* encoded); | |
| 134 | |
| 135 | |
| 136 | |
| 137 /**************************************************************************** | |
| 138 * WebRtcIsacfix_EncodeNb(...) | |
| 139 * | |
| 140 * This function encodes 10ms narrow band (8 kHz sampling) frame(s) and insert
s | |
| 141 * it into a package. Input speech length has to be 80 samples (10ms). The enc
oder | |
| 142 * interpolates into wide-band (16 kHz sampling) buffers those | |
| 143 * 10ms frames until it reaches the chosen Framesize (480 or 960 wide-band sam
ples | |
| 144 * corresponding to 30 or 60 ms frames), and then proceeds to the encoding. | |
| 145 * | |
| 146 * The function is enabled if WEBRTC_ISAC_FIX_NB_CALLS_ENABLED is defined | |
| 147 * | |
| 148 * Input: | |
| 149 * - ISAC_main_inst : ISAC instance. | |
| 150 * - speechIn : input speech vector. | |
| 151 * | |
| 152 * Output: | |
| 153 * - encoded : the encoded data vector | |
| 154 * | |
| 155 * Return value : >0 - Length (in bytes) of coded data | |
| 156 * 0 - The buffer didn't reach the chosen framesiz
e | |
| 157 * so it keeps buffering speech samples. | |
| 158 * -1 - Error | |
| 159 */ | |
| 160 | |
| 161 | |
| 162 #ifdef WEBRTC_ISAC_FIX_NB_CALLS_ENABLED | |
| 163 int16_t WebRtcIsacfix_EncodeNb(ISACFIX_MainStruct *ISAC_main_inst, | |
| 164 const int16_t *speechIn, | |
| 165 int16_t *encoded); | |
| 166 #endif // WEBRTC_ISAC_FIX_NB_CALLS_ENABLED | |
| 167 | |
| 168 | |
| 169 | |
| 170 /**************************************************************************** | |
| 171 * WebRtcIsacfix_DecoderInit(...) | |
| 172 * | |
| 173 * This function initializes an ISAC instance prior to the decoder calls. | |
| 174 * | |
| 175 * Input: | |
| 176 * - ISAC_main_inst : ISAC instance. | |
| 177 */ | |
| 178 | |
| 179 void WebRtcIsacfix_DecoderInit(ISACFIX_MainStruct* ISAC_main_inst); | |
| 180 | |
| 181 /**************************************************************************** | |
| 182 * WebRtcIsacfix_UpdateBwEstimate1(...) | |
| 183 * | |
| 184 * This function updates the estimate of the bandwidth. | |
| 185 * | |
| 186 * Input: | |
| 187 * - ISAC_main_inst : ISAC instance. | |
| 188 * - encoded : encoded ISAC frame(s). | |
| 189 * - packet_size : size of the packet in bytes. | |
| 190 * - rtp_seq_number : the RTP number of the packet. | |
| 191 * - arr_ts : the arrival time of the packet (from NetEq) | |
| 192 * in samples. | |
| 193 * | |
| 194 * Return value : 0 - Ok | |
| 195 * -1 - Error | |
| 196 */ | |
| 197 | |
| 198 int16_t WebRtcIsacfix_UpdateBwEstimate1(ISACFIX_MainStruct *ISAC_main_inst, | |
| 199 const uint8_t* encoded, | |
| 200 size_t packet_size, | |
| 201 uint16_t rtp_seq_number, | |
| 202 uint32_t arr_ts); | |
| 203 | |
| 204 /**************************************************************************** | |
| 205 * WebRtcIsacfix_UpdateBwEstimate(...) | |
| 206 * | |
| 207 * This function updates the estimate of the bandwidth. | |
| 208 * | |
| 209 * Input: | |
| 210 * - ISAC_main_inst : ISAC instance. | |
| 211 * - encoded : encoded ISAC frame(s). | |
| 212 * - packet_size : size of the packet in bytes. | |
| 213 * - rtp_seq_number : the RTP number of the packet. | |
| 214 * - send_ts : the send time of the packet from RTP header, | |
| 215 * in samples. | |
| 216 * - arr_ts : the arrival time of the packet (from NetEq) | |
| 217 * in samples. | |
| 218 * | |
| 219 * Return value : 0 - Ok | |
| 220 * -1 - Error | |
| 221 */ | |
| 222 | |
| 223 int16_t WebRtcIsacfix_UpdateBwEstimate(ISACFIX_MainStruct *ISAC_main_inst, | |
| 224 const uint8_t* encoded, | |
| 225 size_t packet_size, | |
| 226 uint16_t rtp_seq_number, | |
| 227 uint32_t send_ts, | |
| 228 uint32_t arr_ts); | |
| 229 | |
| 230 /**************************************************************************** | |
| 231 * WebRtcIsacfix_Decode(...) | |
| 232 * | |
| 233 * This function decodes an ISAC frame. Output speech length | |
| 234 * will be a multiple of 480 samples: 480 or 960 samples, | |
| 235 * depending on the framesize (30 or 60 ms). | |
| 236 * | |
| 237 * Input: | |
| 238 * - ISAC_main_inst : ISAC instance. | |
| 239 * - encoded : encoded ISAC frame(s) | |
| 240 * - len : bytes in encoded vector | |
| 241 * | |
| 242 * Output: | |
| 243 * - decoded : The decoded vector | |
| 244 * | |
| 245 * Return value : >0 - number of samples in decoded vector | |
| 246 * -1 - Error | |
| 247 */ | |
| 248 | |
| 249 int WebRtcIsacfix_Decode(ISACFIX_MainStruct *ISAC_main_inst, | |
| 250 const uint8_t* encoded, | |
| 251 size_t len, | |
| 252 int16_t *decoded, | |
| 253 int16_t *speechType); | |
| 254 | |
| 255 | |
| 256 /**************************************************************************** | |
| 257 * WebRtcIsacfix_DecodeNb(...) | |
| 258 * | |
| 259 * This function decodes a ISAC frame in narrow-band (8 kHz sampling). | |
| 260 * Output speech length will be a multiple of 240 samples: 240 or 480 samples, | |
| 261 * depending on the framesize (30 or 60 ms). | |
| 262 * | |
| 263 * The function is enabled if WEBRTC_ISAC_FIX_NB_CALLS_ENABLED is defined | |
| 264 * | |
| 265 * Input: | |
| 266 * - ISAC_main_inst : ISAC instance. | |
| 267 * - encoded : encoded ISAC frame(s) | |
| 268 * - len : bytes in encoded vector | |
| 269 * | |
| 270 * Output: | |
| 271 * - decoded : The decoded vector | |
| 272 * | |
| 273 * Return value : >0 - number of samples in decoded vector | |
| 274 * -1 - Error | |
| 275 */ | |
| 276 | |
| 277 #ifdef WEBRTC_ISAC_FIX_NB_CALLS_ENABLED | |
| 278 int WebRtcIsacfix_DecodeNb(ISACFIX_MainStruct *ISAC_main_inst, | |
| 279 const uint16_t *encoded, | |
| 280 size_t len, | |
| 281 int16_t *decoded, | |
| 282 int16_t *speechType); | |
| 283 #endif // WEBRTC_ISAC_FIX_NB_CALLS_ENABLED | |
| 284 | |
| 285 | |
| 286 /**************************************************************************** | |
| 287 * WebRtcIsacfix_DecodePlcNb(...) | |
| 288 * | |
| 289 * This function conducts PLC for ISAC frame(s) in narrow-band (8kHz sampling)
. | |
| 290 * Output speech length will be "240*noOfLostFrames" samples | |
| 291 * that equevalent of "30*noOfLostFrames" millisecond. | |
| 292 * | |
| 293 * The function is enabled if WEBRTC_ISAC_FIX_NB_CALLS_ENABLED is defined | |
| 294 * | |
| 295 * Input: | |
| 296 * - ISAC_main_inst : ISAC instance. | |
| 297 * - noOfLostFrames : Number of PLC frames (240 sample=30ms) to produc
e | |
| 298 * NOTE! Maximum number is 2 (480 samples = 60ms) | |
| 299 * | |
| 300 * Output: | |
| 301 * - decoded : The decoded vector | |
| 302 * | |
| 303 * Return value : Number of samples in decoded PLC vector | |
| 304 */ | |
| 305 | |
| 306 #ifdef WEBRTC_ISAC_FIX_NB_CALLS_ENABLED | |
| 307 size_t WebRtcIsacfix_DecodePlcNb(ISACFIX_MainStruct *ISAC_main_inst, | |
| 308 int16_t *decoded, | |
| 309 size_t noOfLostFrames); | |
| 310 #endif // WEBRTC_ISAC_FIX_NB_CALLS_ENABLED | |
| 311 | |
| 312 | |
| 313 | |
| 314 | |
| 315 /**************************************************************************** | |
| 316 * WebRtcIsacfix_DecodePlc(...) | |
| 317 * | |
| 318 * This function conducts PLC for ISAC frame(s) in wide-band (16kHz sampling). | |
| 319 * Output speech length will be "480*noOfLostFrames" samples | |
| 320 * that is equevalent of "30*noOfLostFrames" millisecond. | |
| 321 * | |
| 322 * Input: | |
| 323 * - ISAC_main_inst : ISAC instance. | |
| 324 * - noOfLostFrames : Number of PLC frames (480sample = 30ms) | |
| 325 * to produce | |
| 326 * NOTE! Maximum number is 2 (960 samples = 60ms) | |
| 327 * | |
| 328 * Output: | |
| 329 * - decoded : The decoded vector | |
| 330 * | |
| 331 * Return value : Number of samples in decoded PLC vector | |
| 332 */ | |
| 333 | |
| 334 size_t WebRtcIsacfix_DecodePlc(ISACFIX_MainStruct *ISAC_main_inst, | |
| 335 int16_t *decoded, | |
| 336 size_t noOfLostFrames ); | |
| 337 | |
| 338 | |
| 339 /**************************************************************************** | |
| 340 * WebRtcIsacfix_ReadFrameLen(...) | |
| 341 * | |
| 342 * This function returns the length of the frame represented in the packet. | |
| 343 * | |
| 344 * Input: | |
| 345 * - encoded : Encoded bitstream | |
| 346 * - encoded_len_bytes : Length of the bitstream in bytes. | |
| 347 * | |
| 348 * Output: | |
| 349 * - frameLength : Length of frame in packet (in samples) | |
| 350 * | |
| 351 */ | |
| 352 | |
| 353 int16_t WebRtcIsacfix_ReadFrameLen(const uint8_t* encoded, | |
| 354 size_t encoded_len_bytes, | |
| 355 size_t* frameLength); | |
| 356 | |
| 357 /**************************************************************************** | |
| 358 * WebRtcIsacfix_Control(...) | |
| 359 * | |
| 360 * This function sets the limit on the short-term average bit rate and the | |
| 361 * frame length. Should be used only in Instantaneous mode. | |
| 362 * | |
| 363 * Input: | |
| 364 * - ISAC_main_inst : ISAC instance. | |
| 365 * - rate : limit on the short-term average bit rate, | |
| 366 * in bits/second (between 10000 and 32000) | |
| 367 * - framesize : number of milliseconds per frame (30 or 60) | |
| 368 * | |
| 369 * Return value : 0 - ok | |
| 370 * -1 - Error | |
| 371 */ | |
| 372 | |
| 373 int16_t WebRtcIsacfix_Control(ISACFIX_MainStruct *ISAC_main_inst, | |
| 374 int16_t rate, | |
| 375 int framesize); | |
| 376 | |
| 377 void WebRtcIsacfix_SetInitialBweBottleneck(ISACFIX_MainStruct* ISAC_main_inst, | |
| 378 int bottleneck_bits_per_second); | |
| 379 | |
| 380 /**************************************************************************** | |
| 381 * WebRtcIsacfix_ControlBwe(...) | |
| 382 * | |
| 383 * This function sets the initial values of bottleneck and frame-size if | |
| 384 * iSAC is used in channel-adaptive mode. Through this API, users can | |
| 385 * enforce a frame-size for all values of bottleneck. Then iSAC will not | |
| 386 * automatically change the frame-size. | |
| 387 * | |
| 388 * | |
| 389 * Input: | |
| 390 * - ISAC_main_inst : ISAC instance. | |
| 391 * - rateBPS : initial value of bottleneck in bits/second | |
| 392 * 10000 <= rateBPS <= 32000 is accepted | |
| 393 * - frameSizeMs : number of milliseconds per frame (30 or 60) | |
| 394 * - enforceFrameSize : 1 to enforce the given frame-size through out | |
| 395 * the adaptation process, 0 to let iSAC change | |
| 396 * the frame-size if required. | |
| 397 * | |
| 398 * Return value : 0 - ok | |
| 399 * -1 - Error | |
| 400 */ | |
| 401 | |
| 402 int16_t WebRtcIsacfix_ControlBwe(ISACFIX_MainStruct *ISAC_main_inst, | |
| 403 int16_t rateBPS, | |
| 404 int frameSizeMs, | |
| 405 int16_t enforceFrameSize); | |
| 406 | |
| 407 | |
| 408 | |
| 409 /**************************************************************************** | |
| 410 * WebRtcIsacfix_version(...) | |
| 411 * | |
| 412 * This function returns the version number. | |
| 413 * | |
| 414 * Output: | |
| 415 * - version : Pointer to character string | |
| 416 * | |
| 417 */ | |
| 418 | |
| 419 void WebRtcIsacfix_version(char *version); | |
| 420 | |
| 421 | |
| 422 /**************************************************************************** | |
| 423 * WebRtcIsacfix_GetErrorCode(...) | |
| 424 * | |
| 425 * This function can be used to check the error code of an iSAC instance. When | |
| 426 * a function returns -1 a error code will be set for that instance. The | |
| 427 * function below extract the code of the last error that occured in the | |
| 428 * specified instance. | |
| 429 * | |
| 430 * Input: | |
| 431 * - ISAC_main_inst : ISAC instance | |
| 432 * | |
| 433 * Return value : Error code | |
| 434 */ | |
| 435 | |
| 436 int16_t WebRtcIsacfix_GetErrorCode(ISACFIX_MainStruct *ISAC_main_inst); | |
| 437 | |
| 438 | |
| 439 /**************************************************************************** | |
| 440 * WebRtcIsacfix_GetUplinkBw(...) | |
| 441 * | |
| 442 * This function return iSAC send bitrate | |
| 443 * | |
| 444 * Input: | |
| 445 * - ISAC_main_inst : iSAC instance | |
| 446 * | |
| 447 * Return value : <0 Error code | |
| 448 * else bitrate | |
| 449 */ | |
| 450 | |
| 451 int32_t WebRtcIsacfix_GetUplinkBw(ISACFIX_MainStruct *ISAC_main_inst); | |
| 452 | |
| 453 | |
| 454 /**************************************************************************** | |
| 455 * WebRtcIsacfix_SetMaxPayloadSize(...) | |
| 456 * | |
| 457 * This function sets a limit for the maximum payload size of iSAC. The same | |
| 458 * value is used both for 30 and 60 msec packets. | |
| 459 * The absolute max will be valid until next time the function is called. | |
| 460 * NOTE! This function may override the function WebRtcIsacfix_SetMaxRate() | |
| 461 * | |
| 462 * Input: | |
| 463 * - ISAC_main_inst : iSAC instance | |
| 464 * - maxPayloadBytes : maximum size of the payload in bytes | |
| 465 * valid values are between 100 and 400 bytes | |
| 466 * | |
| 467 * | |
| 468 * Return value : 0 if sucessful | |
| 469 * -1 if error happens | |
| 470 */ | |
| 471 | |
| 472 int16_t WebRtcIsacfix_SetMaxPayloadSize(ISACFIX_MainStruct *ISAC_main_inst, | |
| 473 int16_t maxPayloadBytes); | |
| 474 | |
| 475 | |
| 476 /**************************************************************************** | |
| 477 * WebRtcIsacfix_SetMaxRate(...) | |
| 478 * | |
| 479 * This function sets the maximum rate which the codec may not exceed for a | |
| 480 * singel packet. The maximum rate is set in bits per second. | |
| 481 * The codec has an absolute maximum rate of 53400 bits per second (200 bytes | |
| 482 * per 30 msec). | |
| 483 * It is possible to set a maximum rate between 32000 and 53400 bits per secon
d. | |
| 484 * | |
| 485 * The rate limit is valid until next time the function is called. | |
| 486 * | |
| 487 * NOTE! Packet size will never go above the value set if calling | |
| 488 * WebRtcIsacfix_SetMaxPayloadSize() (default max packet size is 400 bytes). | |
| 489 * | |
| 490 * Input: | |
| 491 * - ISAC_main_inst : iSAC instance | |
| 492 * - maxRateInBytes : maximum rate in bits per second, | |
| 493 * valid values are 32000 to 53400 bits | |
| 494 * | |
| 495 * Return value : 0 if sucessful | |
| 496 * -1 if error happens | |
| 497 */ | |
| 498 | |
| 499 int16_t WebRtcIsacfix_SetMaxRate(ISACFIX_MainStruct *ISAC_main_inst, | |
| 500 int32_t maxRate); | |
| 501 | |
| 502 /**************************************************************************** | |
| 503 * WebRtcIsacfix_CreateInternal(...) | |
| 504 * | |
| 505 * This function creates the memory that is used to store data in the encoder | |
| 506 * | |
| 507 * Input: | |
| 508 * - *ISAC_main_inst : a pointer to the coder instance. | |
| 509 * | |
| 510 * Return value : 0 - Ok | |
| 511 * -1 - Error | |
| 512 */ | |
| 513 | |
| 514 int16_t WebRtcIsacfix_CreateInternal(ISACFIX_MainStruct *ISAC_main_inst); | |
| 515 | |
| 516 | |
| 517 /**************************************************************************** | |
| 518 * WebRtcIsacfix_FreeInternal(...) | |
| 519 * | |
| 520 * This function frees the internal memory for storing encoder data. | |
| 521 * | |
| 522 * Input: | |
| 523 * - ISAC_main_inst : an ISAC instance. | |
| 524 * | |
| 525 * Return value : 0 - Ok | |
| 526 * -1 - Error | |
| 527 */ | |
| 528 | |
| 529 int16_t WebRtcIsacfix_FreeInternal(ISACFIX_MainStruct *ISAC_main_inst); | |
| 530 | |
| 531 | |
| 532 /**************************************************************************** | |
| 533 * WebRtcIsacfix_GetNewBitStream(...) | |
| 534 * | |
| 535 * This function returns encoded data, with the recieved bwe-index in the | |
| 536 * stream. It should always return a complete packet, i.e. only called once | |
| 537 * even for 60 msec frames | |
| 538 * | |
| 539 * Input: | |
| 540 * - ISAC_main_inst : ISAC instance. | |
| 541 * - bweIndex : index of bandwidth estimate to put in new bitstr
eam | |
| 542 * - scale : factor for rate change (0.4 ~=> half the rate, 1
no change). | |
| 543 * | |
| 544 * Output: | |
| 545 * - encoded : the encoded data vector | |
| 546 * | |
| 547 * Return value : >0 - Length (in bytes) of coded data | |
| 548 * -1 - Error | |
| 549 */ | |
| 550 | |
| 551 int16_t WebRtcIsacfix_GetNewBitStream(ISACFIX_MainStruct *ISAC_main_inst, | |
| 552 int16_t bweIndex, | |
| 553 float scale, | |
| 554 uint8_t* encoded); | |
| 555 | |
| 556 | |
| 557 /**************************************************************************** | |
| 558 * WebRtcIsacfix_GetDownLinkBwIndex(...) | |
| 559 * | |
| 560 * This function returns index representing the Bandwidth estimate from | |
| 561 * other side to this side. | |
| 562 * | |
| 563 * Input: | |
| 564 * - ISAC_main_inst : iSAC struct | |
| 565 * | |
| 566 * Output: | |
| 567 * - rateIndex : Bandwidth estimate to transmit to other side. | |
| 568 * | |
| 569 */ | |
| 570 | |
| 571 int16_t WebRtcIsacfix_GetDownLinkBwIndex(ISACFIX_MainStruct* ISAC_main_inst, | |
| 572 int16_t* rateIndex); | |
| 573 | |
| 574 | |
| 575 /**************************************************************************** | |
| 576 * WebRtcIsacfix_UpdateUplinkBw(...) | |
| 577 * | |
| 578 * This function takes an index representing the Bandwidth estimate from | |
| 579 * this side to other side and updates BWE. | |
| 580 * | |
| 581 * Input: | |
| 582 * - ISAC_main_inst : iSAC struct | |
| 583 * - rateIndex : Bandwidth estimate from other side. | |
| 584 * | |
| 585 */ | |
| 586 | |
| 587 int16_t WebRtcIsacfix_UpdateUplinkBw(ISACFIX_MainStruct* ISAC_main_inst, | |
| 588 int16_t rateIndex); | |
| 589 | |
| 590 | |
| 591 /**************************************************************************** | |
| 592 * WebRtcIsacfix_ReadBwIndex(...) | |
| 593 * | |
| 594 * This function returns the index of the Bandwidth estimate from the bitstrea
m. | |
| 595 * | |
| 596 * Input: | |
| 597 * - encoded : Encoded bitstream | |
| 598 * - encoded_len_bytes : Length of the bitstream in bytes. | |
| 599 * | |
| 600 * Output: | |
| 601 * - rateIndex : Bandwidth estimate in bitstream | |
| 602 * | |
| 603 */ | |
| 604 | |
| 605 int16_t WebRtcIsacfix_ReadBwIndex(const uint8_t* encoded, | |
| 606 size_t encoded_len_bytes, | |
| 607 int16_t* rateIndex); | |
| 608 | |
| 609 | |
| 610 /**************************************************************************** | |
| 611 * WebRtcIsacfix_GetNewFrameLen(...) | |
| 612 * | |
| 613 * This function return the next frame length (in samples) of iSAC. | |
| 614 * | |
| 615 * Input: | |
| 616 * -ISAC_main_inst : iSAC instance | |
| 617 * | |
| 618 * Return value : frame lenght in samples | |
| 619 */ | |
| 620 | |
| 621 int16_t WebRtcIsacfix_GetNewFrameLen(ISACFIX_MainStruct *ISAC_main_inst); | |
| 622 | |
| 623 /* Fills in an IsacBandwidthInfo struct. */ | |
| 624 void WebRtcIsacfix_GetBandwidthInfo(ISACFIX_MainStruct* ISAC_main_inst, | |
| 625 IsacBandwidthInfo* bwinfo); | |
| 626 | |
| 627 /* Uses the values from an IsacBandwidthInfo struct. */ | |
| 628 void WebRtcIsacfix_SetBandwidthInfo(ISACFIX_MainStruct* ISAC_main_inst, | |
| 629 const IsacBandwidthInfo* bwinfo); | |
| 630 | |
| 631 #if defined(__cplusplus) | |
| 632 } | |
| 633 #endif | |
| 634 | |
| 635 | |
| 636 | |
| 637 #endif /* WEBRTC_MODULES_AUDIO_CODING_CODECS_ISAC_FIX_INTERFACE_ISACFIX_H_ */ | |
| OLD | NEW |