Ignore:
Timestamp:
Feb 10, 2009 4:43:16 AM (12 years ago)
Author:
nanang
Message:
  • Fixed conf switch on reinit-ing conf port TX buf.
  • Updated conf switch to enable RX/TX level adjustment.
  • Added VAD & PLC setting in passthrough codecs.
  • Changed G711 fourcc codes.
  • Updated bits-to-bytes calculations all over the places.
  • Minor update: changed log level for dumping jbuf states in stream.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/aps-direct/pjmedia/src/pjmedia-codec/passthrough.c

    r2444 r2445  
    163163    unsigned         max_bitrate;       /* Maximum bitrate of this codec.   */ 
    164164    pj_uint8_t       frm_per_pkt;       /* Default num of frames per packet.*/ 
     165    pj_uint8_t       vad;               /* VAD enabled/disabled.            */ 
     166    pj_uint8_t       plc;               /* PLC enabled/disabled.            */ 
    165167    parse_cb         parse;             /* Callback to parse bitstream.     */ 
    166168    pack_cb          pack;              /* Callback to pack bitstream.      */ 
     
    173175    {1, "AMR",      PJMEDIA_RTP_PT_AMR,       {PJMEDIA_FOURCC_AMR}, 
    174176                    8000, 1, 160,  
    175                     12200, 12200, 2, 
     177                    7400, 12200, 2, 1, 1, 
    176178                    &parse_amr, &pack_amr 
    177179                    /*, {1, {{{"octet-align", 11}, {"1", 1}}} } */ 
     
    182184    {1, "G729",     PJMEDIA_RTP_PT_G729,      {PJMEDIA_FOURCC_G729}, 
    183185                    8000, 1,  80, 
    184                     8000, 8000, 2 
     186                    8000, 8000, 2, 1, 1 
    185187    }, 
    186188#   endif 
     
    189191    {1, "iLBC",     PJMEDIA_RTP_PT_ILBC,      {PJMEDIA_FOURCC_ILBC}, 
    190192                    8000, 1,  240, 
    191                     13333, 15200, 2, 
     193                    13333, 15200, 1, 1, 1, 
    192194                    NULL, NULL, 
    193195                    {1, {{{"mode", 4}, {"30", 2}}} } 
     
    196198 
    197199#   if PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMU 
    198     {1, "PCMU",     PJMEDIA_RTP_PT_PCMU,      {PJMEDIA_FOURCC_G711U}, 
     200    {1, "PCMU",     PJMEDIA_RTP_PT_PCMU,      {PJMEDIA_FOURCC_PCMU}, 
    199201                    8000, 1,  80, 
    200                     64000, 64000, 2 
     202                    64000, 64000, 2, 1, 1 
    201203    }, 
    202204#   endif 
    203205 
    204206#   if PJMEDIA_HAS_PASSTHROUGH_CODEC_PCMA 
    205     {1, "PCMA",     PJMEDIA_RTP_PT_PCMA,      {PJMEDIA_FOURCC_G711A}, 
     207    {1, "PCMA",     PJMEDIA_RTP_PT_PCMA,      {PJMEDIA_FOURCC_PCMA}, 
    206208                    8000, 1,  80, 
    207                     64000, 64000, 2 
     209                    64000, 64000, 2, 1, 1 
    208210    }, 
    209211#   endif 
     
    247249         
    248250        sf = pjmedia_frame_ext_get_subframe(input, i); 
    249          
    250         len = sf->bitlen >> 3; 
    251         if (sf->bitlen & 0x07) 
    252             ++len; 
     251        len = (sf->bitlen + 7) >> 3; 
    253252         
    254253        info = (pjmedia_codec_amr_bit_info*) &frames[i].bit_info; 
    255254        pj_bzero(info, sizeof(*info)); 
    256         info->frame_type = pjmedia_codec_amr_get_mode2(enc_setting->amr_nb,  
    257                                                        len); 
     255         
     256        if (len == 0) { 
     257            info->frame_type = (pj_uint8_t)(enc_setting->amr_nb? 14 : 15); 
     258        } else { 
     259            info->frame_type = pjmedia_codec_amr_get_mode2(enc_setting->amr_nb,  
     260                                                           len); 
     261        } 
    258262        info->good_quality = 1; 
    259263        info->mode = setting->enc_mode; 
     
    450454            /* Default flags. */ 
    451455            attr->setting.frm_per_pkt = codec_desc[i].frm_per_pkt; 
    452             attr->setting.plc = 0; 
     456            attr->setting.plc = codec_desc[i].plc; 
    453457            attr->setting.penh= 0; 
    454             attr->setting.vad = 0; 
     458            attr->setting.vad = codec_desc[i].vad; 
    455459            attr->setting.cng = attr->setting.vad; 
    456460            attr->setting.dec_fmtp = codec_desc[i].dec_fmtp; 
     
    759763                sf = pjmedia_frame_ext_get_subframe(input_, i); 
    760764                pj_assert(sf); 
    761                  
    762                 sf_len = sf->bitlen >> 3; 
    763                 if (sf->bitlen & 0x07) 
    764                     ++sf_len; 
     765 
     766                sf_len = (sf->bitlen + 7) >> 3; 
    765767 
    766768                pj_memcpy(p, sf->data, sf_len); 
    767769                p += sf_len; 
    768770                output->size += sf_len; 
     771 
     772#if PJMEDIA_HAS_INTEL_IPP_CODEC_G729 
     773                /* If there is SID or DTX frame, break the loop. */ 
     774                if (desc->pt == PJMEDIA_RTP_PT_G729 &&  
     775                    sf_len < codec_data->avg_frame_size) 
     776                { 
     777                    break; 
     778                } 
     779#endif 
     780                 
    769781            } 
    770782        } 
Note: See TracChangeset for help on using the changeset viewer.