Changeset 457 for pjproject/trunk/pjmedia/src/pjmedia/g711.c
- Timestamp:
- May 19, 2006 3:58:13 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/g711.c
r438 r457 25 25 #include <pjmedia/port.h> 26 26 #include <pjmedia/plc.h> 27 #include <pjmedia/silencedet.h> 27 28 #include <pj/pool.h> 28 29 #include <pj/string.h> … … 122 123 struct g711_private 123 124 { 124 unsigned pt; 125 pj_bool_t plc_enabled; 126 pjmedia_plc *plc; 125 unsigned pt; 126 pj_bool_t plc_enabled; 127 pjmedia_plc *plc; 128 pj_bool_t vad_enabled; 129 pjmedia_silence_det *vad; 127 130 }; 128 131 … … 251 254 attr->setting.plc = 1; 252 255 253 /* Default all flag bits disabled. */ 256 /* Enable VAD by default. */ 257 attr->setting.vad = 1; 258 259 /* Default all other flag bits disabled. */ 254 260 255 261 return PJ_SUCCESS; … … 303 309 304 310 codec = pj_pool_alloc(g711_factory.pool, sizeof(pjmedia_codec)); 305 codec_priv = pj_pool_ alloc(g711_factory.pool,306 sizeof(struct g711_private));311 codec_priv = pj_pool_zalloc(g711_factory.pool, 312 sizeof(struct g711_private)); 307 313 if (!codec || !codec_priv) { 308 314 pj_mutex_unlock(g711_factory.mutex); … … 321 327 } 322 328 329 /* Create VAD */ 330 status = pjmedia_silence_det_create(g711_factory.pool, 331 8000, 80, 332 &codec_priv->vad); 333 if (status != PJ_SUCCESS) { 334 pj_mutex_unlock(g711_factory.mutex); 335 return status; 336 } 337 323 338 codec->factory = factory; 324 339 codec->op = &g711_op; … … 379 394 priv->pt = attr->info.pt; 380 395 priv->plc_enabled = (attr->setting.plc != 0); 396 priv->vad_enabled = (attr->setting.vad != 0); 381 397 return PJ_SUCCESS; 382 398 } … … 429 445 if (output_buf_len < input->size / 2) 430 446 return PJMEDIA_CODEC_EFRMTOOSHORT; 447 448 /* Detect silence if VAD is enabled */ 449 if (priv->vad_enabled) { 450 pj_bool_t is_silence; 451 452 is_silence = pjmedia_silence_det_detect(priv->vad, input->buf, 453 input->size / 2, NULL); 454 if (is_silence) { 455 output->type = PJMEDIA_FRAME_TYPE_NONE; 456 output->buf = NULL; 457 output->size = 0; 458 output->timestamp.u64 = input->timestamp.u64; 459 return PJ_SUCCESS; 460 } 461 } 431 462 432 463 /* Encode */
Note: See TracChangeset
for help on using the changeset viewer.