Changeset 867 for pjproject/trunk/pjmedia/src/pjmedia-codec/ilbc.c
- Timestamp:
- Dec 26, 2006 9:18:11 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia-codec/ilbc.c
r738 r867 64 64 pj_pool_t *pool ); 65 65 static pj_status_t ilbc_codec_open(pjmedia_codec *codec, 66 pjmedia_codec_param *attr );66 const pjmedia_codec_param *attr ); 67 67 static pj_status_t ilbc_codec_close(pjmedia_codec *codec ); 68 static pj_status_t ilbc_codec_modify(pjmedia_codec *codec, 69 const pjmedia_codec_param *attr ); 68 70 static pj_status_t ilbc_codec_parse(pjmedia_codec *codec, 69 71 void *pkt, … … 90 92 &ilbc_codec_open, 91 93 &ilbc_codec_close, 94 &ilbc_codec_modify, 92 95 &ilbc_codec_parse, 93 96 &ilbc_codec_encode, … … 124 127 char obj_name[PJ_MAX_OBJ_NAME]; 125 128 pjmedia_silence_det *vad; 129 pj_bool_t vad_enabled; 126 130 pj_bool_t plc_enabled; 127 131 … … 361 365 */ 362 366 static pj_status_t ilbc_codec_open(pjmedia_codec *codec, 363 pjmedia_codec_param *attr )367 const pjmedia_codec_param *param_attr ) 364 368 { 365 369 struct ilbc_codec *ilbc_codec = (struct ilbc_codec*)codec; 370 pjmedia_codec_param attr_copy, *attr; 371 pj_status_t status; 366 372 367 373 pj_assert(ilbc_codec != NULL); 368 374 pj_assert(ilbc_codec->enc_ready == PJ_FALSE && 369 375 ilbc_codec->dec_ready == PJ_FALSE); 376 377 /* Copy param to temporary location since we need to modify fmtp_mode */ 378 pj_memcpy(&attr_copy, param_attr, sizeof(*param_attr)); 379 attr = &attr_copy; 370 380 371 381 /* Decoder mode must be set */ … … 405 415 406 416 /* Save plc flags */ 407 ilbc_codec->plc_enabled = attr->setting.plc != 0; 408 409 /* Create silence detector, if wanted. */ 410 if (attr->setting.vad != 0) { 411 pj_status_t status; 412 status = pjmedia_silence_det_create(ilbc_codec->pool, CLOCK_RATE, 413 ilbc_codec->enc_samples_per_frame, 414 &ilbc_codec->vad); 415 if (status != PJ_SUCCESS) 416 return status; 417 } 417 ilbc_codec->plc_enabled = (attr->setting.plc != 0); 418 419 /* Create silence detector. */ 420 ilbc_codec->vad_enabled = (attr->setting.vad != 0); 421 status = pjmedia_silence_det_create(ilbc_codec->pool, CLOCK_RATE, 422 ilbc_codec->enc_samples_per_frame, 423 &ilbc_codec->vad); 424 if (status != PJ_SUCCESS) 425 return status; 418 426 419 427 PJ_LOG(5,(ilbc_codec->obj_name, … … 439 447 } 440 448 449 /* 450 * Modify codec settings. 451 */ 452 static pj_status_t ilbc_codec_modify(pjmedia_codec *codec, 453 const pjmedia_codec_param *attr ) 454 { 455 struct ilbc_codec *ilbc_codec = (struct ilbc_codec*)codec; 456 457 ilbc_codec->plc_enabled = (attr->setting.plc != 0); 458 ilbc_codec->vad_enabled = (attr->setting.vad != 0); 459 460 return PJ_SUCCESS; 461 } 441 462 442 463 /* … … 494 515 495 516 /* Detect silence */ 496 if (ilbc_codec->vad ) {517 if (ilbc_codec->vad_enabled) { 497 518 pj_bool_t is_silence; 498 519
Note: See TracChangeset
for help on using the changeset viewer.