Changeset 3261 for pjproject/trunk/pjmedia/src/pjmedia-codec/ipp_codecs.c
- Timestamp:
- Aug 10, 2010 3:06:40 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia-codec/ipp_codecs.c
r3199 r3261 113 113 pj_pool_t *pool; 114 114 pj_mutex_t *mutex; 115 unsigned g7221_pcm_shift; 115 116 } ipp_factory; 116 117 … … 134 135 codec has internal VAD. */ 135 136 pj_timestamp last_tx; /**< Timestamp of last transmit.*/ 137 138 unsigned g7221_pcm_shift; /**< G722.1 PCM level adjustment*/ 136 139 } ipp_private_t; 137 140 … … 661 664 ipp_factory.base.factory_data = NULL; 662 665 ipp_factory.endpt = endpt; 666 ipp_factory.g7221_pcm_shift = PJMEDIA_G7221_DEFAULT_PCM_SHIFT; 663 667 664 668 ipp_factory.pool = pjmedia_endpt_create_pool(endpt, "IPP codecs", 4000, 4000); … … 730 734 return status; 731 735 } 736 737 /* 738 * Get current IPP codecs configuration settings. 739 */ 740 PJ_DEF(pj_status_t) pjmedia_codec_ipp_get_config( 741 pjmedia_codec_ipp_config *cfg) 742 { 743 PJ_ASSERT_RETURN(cfg, PJ_EINVAL); 744 745 pj_bzero(cfg, sizeof(*cfg)); 746 cfg->g7221_pcm_shift = ipp_factory.g7221_pcm_shift; 747 748 return PJ_SUCCESS; 749 } 750 751 752 /* 753 * Set IPP codecs configuration settings. 754 */ 755 PJ_DECL(pj_status_t) pjmedia_codec_ipp_set_config( 756 const pjmedia_codec_ipp_config *cfg) 757 { 758 PJ_ASSERT_RETURN(cfg, PJ_EINVAL); 759 760 ipp_factory.g7221_pcm_shift = cfg->g7221_pcm_shift; 761 762 return PJ_SUCCESS; 763 } 764 732 765 733 766 /* … … 1209 1242 #endif 1210 1243 1244 #if PJMEDIA_HAS_INTEL_IPP_CODEC_G722_1 1245 if (ippc->pt >= PJMEDIA_RTP_PT_G722_1_16 && 1246 ippc->pt <= PJMEDIA_RTP_PT_G7221_RSV2) 1247 { 1248 codec_data->g7221_pcm_shift = ipp_factory.g7221_pcm_shift; 1249 } 1250 #endif 1251 1211 1252 return PJ_SUCCESS; 1212 1253 … … 1362 1403 if (pt == PJMEDIA_RTP_PT_AMR || pt == PJMEDIA_RTP_PT_AMRWB) { 1363 1404 out.pBuffer += 2; 1405 } 1406 #endif 1407 1408 #if PJMEDIA_HAS_INTEL_IPP_CODEC_G722_1 1409 /* For G722.1: adjust the encoder input signal level */ 1410 if (pt >= PJMEDIA_RTP_PT_G722_1_16 && 1411 pt <= PJMEDIA_RTP_PT_G7221_RSV2 && 1412 codec_data->g7221_pcm_shift) 1413 { 1414 unsigned i; 1415 for (i = 0; i < samples_per_frame; ++i) 1416 pcm_in[i] >>= codec_data->g7221_pcm_shift; 1364 1417 } 1365 1418 #endif … … 1515 1568 #endif 1516 1569 1570 #if PJMEDIA_HAS_INTEL_IPP_CODEC_G722_1 1571 /* For G722.1: adjust the decoder output signal level */ 1572 if (pt >= PJMEDIA_RTP_PT_G722_1_16 && 1573 pt <= PJMEDIA_RTP_PT_G7221_RSV2 && 1574 codec_data->g7221_pcm_shift) 1575 { 1576 unsigned i; 1577 pj_int16_t *s = (pj_int16_t*)output->buf; 1578 1579 for (i = 0; i < samples_per_frame; ++i) 1580 s[i] <<= codec_data->g7221_pcm_shift; 1581 } 1582 #endif 1583 1517 1584 output->type = PJMEDIA_FRAME_TYPE_AUDIO; 1518 1585 output->size = samples_per_frame << 1;
Note: See TracChangeset
for help on using the changeset viewer.