Changeset 2363


Ignore:
Timestamp:
Nov 11, 2008 11:25:13 AM (11 years ago)
Author:
nanang
Message:

Ticket #670: Minor update on naming of AMR helper and updated AMR in IPP codecs to enable octet-align from FMTP settings.

Location:
pjproject/trunk/pjmedia
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/include/pjmedia-codec/amr_helper.h

    r2359 r2363  
    613613 * This structure describes AMR settings. 
    614614 */ 
    615 typedef struct pjmedia_codec_amr_settings { 
    616     pj_bool_t  amr_nb;          /**< TRUE for AMR-NB, FALSE for AMR-WB. */ 
    617     pj_bool_t  reorder;         /**< Reorder bitstream into descending  
     615typedef struct pjmedia_codec_amr_pack_setting { 
     616    pj_uint8_t amr_nb:1;        /**< Set 1 for AMR-NB, 0 for AMR-WB.    */ 
     617    pj_uint8_t reorder:1;       /**< Reorder bitstream into descending  
    618618                                     sensitivity order or vice versa.   */ 
    619     pj_uint8_t octet_aligned;   /**< TRUE if payload is in octet-aligned mode, 
     619    pj_uint8_t octet_aligned:1; /**< TRUE if payload is in octet-aligned mode, 
    620620                                     FALSE if payload is in bandwidth  
    621621                                     efficient mode.                    */ 
    622     pj_uint8_t CMR;             /**< Change Mode Request for remote 
     622    pj_uint8_t cmr:4;           /**< Change Mode Request for remote 
    623623                                     encoder.                           */ 
    624 } pjmedia_codec_amr_settings; 
     624} pjmedia_codec_amr_pack_setting; 
    625625 
    626626 
     
    686686 * @param amr_nb    Set PJ_TRUE for AMR-NB and PJ_FALSE for AMR-WB. 
    687687 * @param in        Input frame. 
    688  * @param setting   Settings, see @pjmedia_codec_amr_settings. 
     688 * @param setting   Settings, see @pjmedia_codec_amr_pack_setting. 
    689689 * @param out       Output frame. 
    690690 * 
     
    692692 */ 
    693693PJ_INLINE(pj_status_t) pjmedia_codec_amr_predecode( 
    694                                     const pjmedia_frame *in, 
    695                                     const pjmedia_codec_amr_settings *setting, 
    696                                     pjmedia_frame *out) 
     694                            const pjmedia_frame *in, 
     695                            const pjmedia_codec_amr_pack_setting *setting, 
     696                            pjmedia_frame *out) 
    697697{ 
    698698    pj_int8_t    amr_bits[477 + 7] = {0}; 
     
    758758        out_info->mode = in_info->frame_type; 
    759759        out->size = framelen_tbl[out_info->mode]; 
    760         PJ_ASSERT_RETURN(out->size <= in->size, PJMEDIA_CODEC_EFRMINLEN); 
    761760 
    762761        pj_bzero(out->buf, out->size); 
     
    826825 * @param frames    AMR frames to be packed. 
    827826 * @param nframes   Number of frames to be packed. 
    828  * @param setting   Settings, see @pjmedia_codec_amr_settings. 
     827 * @param setting   Settings, see @pjmedia_codec_amr_pack_setting. 
    829828 * @param pkt       Payload. 
    830829 * @param pkt_size  Payload size, as input this specifies payload maximum size, 
     
    834833 */ 
    835834PJ_INLINE (pj_status_t) pjmedia_codec_amr_pack( 
    836                                     const pjmedia_frame frames[], 
    837                                     unsigned nframes, 
    838                                     const pjmedia_codec_amr_settings *setting, 
    839                                     void *pkt,  
    840                                     pj_size_t *pkt_size) 
     835                            const pjmedia_frame frames[], 
     836                            unsigned nframes, 
     837                            const pjmedia_codec_amr_pack_setting *setting, 
     838                            void *pkt,  
     839                            pj_size_t *pkt_size) 
    841840{ 
    842841    /* Write cursor */ 
     
    876875 
    877876    /* Code Mode Request, 4 bits */ 
    878     *w = (pj_uint8_t)(setting->CMR << 4); 
     877    *w = (pj_uint8_t)(setting->cmr << 4); 
    879878    w_bitptr = 4; 
    880879    if (setting->octet_aligned) { 
     
    10431042 * @param pkt_size  Payload size. 
    10441043 * @param ts        Base timestamp. 
    1045  * @param setting   Settings, see @pjmedia_codec_amr_settings. 
     1044 * @param setting   Settings, see @pjmedia_codec_amr_pack_setting. 
    10461045 * @param frames    Frames parsed. 
    10471046 * @param nframes   Number of frames parsed. 
    1048  * @param CMR       Change Mode Request message for local encoder. 
     1047 * @param cmr       Change Mode Request message for local encoder. 
    10491048 * 
    10501049 * @return          PJ_SUCCESS on success. 
    10511050 */ 
    10521051PJ_INLINE(pj_status_t) pjmedia_codec_amr_parse( 
    1053                                      void *pkt,  
    1054                                      pj_size_t pkt_size,  
    1055                                      const pj_timestamp *ts, 
    1056                                      const pjmedia_codec_amr_settings* setting, 
    1057                                      pjmedia_frame frames[],  
    1058                                      unsigned *nframes, 
    1059                                      pj_uint8_t *CMR) 
     1052                             void *pkt,  
     1053                             pj_size_t pkt_size,  
     1054                             const pj_timestamp *ts, 
     1055                             const pjmedia_codec_amr_pack_setting* setting, 
     1056                             pjmedia_frame frames[],  
     1057                             unsigned *nframes, 
     1058                             pj_uint8_t *cmr) 
    10601059{ 
    10611060    unsigned cnt = 0; 
     
    10901089 
    10911090    /* Code Mode Request, 4 bits */ 
    1092     *CMR = (pj_uint8_t)((*r >> 4) & 0x0F); 
     1091    *cmr = (pj_uint8_t)((*r >> 4) & 0x0F); 
    10931092    r_bitptr = 4; 
    10941093    if (setting->octet_aligned) { 
  • pjproject/trunk/pjmedia/src/pjmedia-codec/ipp_codecs.c

    r2359 r2363  
    230230                    5900, 12200, 4, 1, 1,  
    231231                    &predecode_amr, &parse_amr, &pack_amr 
     232                    /*, {1, {{{"octet-align", 11}, {"1", 1}}} } */ 
    232233    }, 
    233234#   endif 
     
    424425 
    425426typedef struct amr_settings_t { 
    426     pjmedia_codec_amr_settings enc_setting; 
    427     pjmedia_codec_amr_settings dec_setting; 
     427    pjmedia_codec_amr_pack_setting enc_setting; 
     428    pjmedia_codec_amr_pack_setting dec_setting; 
    428429    pj_int8_t enc_mode; 
    429430} amr_settings_t; 
     
    442443    pjmedia_frame frame; 
    443444    pjmedia_codec_amr_bit_info *info; 
    444     pjmedia_codec_amr_settings *setting; 
     445    pjmedia_codec_amr_pack_setting *setting; 
    445446 
    446447    setting = &((amr_settings_t*)codec_data->codec_setting)->dec_setting; 
     
    492493    pj_uint8_t *r; /* Read cursor */ 
    493494    pj_uint8_t SID_FT; 
    494     pjmedia_codec_amr_settings *setting; 
     495    pjmedia_codec_amr_pack_setting *setting; 
    495496 
    496497    setting = &((amr_settings_t*)codec_data->codec_setting)->enc_setting; 
     
    540541{ 
    541542    amr_settings_t* s = (amr_settings_t*)codec_data->codec_setting; 
    542     pjmedia_codec_amr_settings *setting; 
     543    pjmedia_codec_amr_pack_setting *setting; 
    543544    pj_status_t status; 
    544     pj_uint8_t CMR; 
     545    pj_uint8_t cmr; 
    545546 
    546547    setting = &s->dec_setting; 
    547548 
    548549    status = pjmedia_codec_amr_parse(pkt, pkt_size, ts, setting, frames,  
    549                                      frame_cnt, &CMR); 
     550                                     frame_cnt, &cmr); 
    550551    if (status != PJ_SUCCESS) 
    551552        return status; 
    552553 
    553554    /* Check Change Mode Request. */ 
    554     if ((setting->amr_nb && CMR <= 7) || (!setting->amr_nb && CMR <= 8)) { 
    555         s->enc_mode = CMR; 
     555    if ((setting->amr_nb && cmr <= 7) || (!setting->amr_nb && cmr <= 8)) { 
     556        s->enc_mode = cmr; 
    556557    } 
    557558 
     
    10241025    if (ippc->pt == PJMEDIA_RTP_PT_AMR || ippc->pt == PJMEDIA_RTP_PT_AMRWB) { 
    10251026        amr_settings_t *s; 
     1027        pj_uint8_t octet_align = 0; 
     1028        const pj_str_t STR_FMTP_OCTET_ALIGN = {"octet-align", 11}; 
     1029 
     1030        /* Check octet-align */ 
     1031        for (i = 0; i < attr->setting.dec_fmtp.cnt; ++i) { 
     1032            if (pj_stricmp(&attr->setting.dec_fmtp.param[i].name,  
     1033                           &STR_FMTP_OCTET_ALIGN) == 0) 
     1034            { 
     1035                octet_align=(pj_uint8_t) 
     1036                            (pj_strtoul(&attr->setting.dec_fmtp.param[i].val)); 
     1037                break; 
     1038            } 
     1039        } 
    10261040 
    10271041        s = PJ_POOL_ZALLOC_T(pool, amr_settings_t); 
     
    10331047 
    10341048        s->enc_setting.amr_nb = ippc->pt == PJMEDIA_RTP_PT_AMR; 
    1035         s->enc_setting.octet_aligned = 0; 
     1049        s->enc_setting.octet_aligned = octet_align; 
    10361050        s->enc_setting.reorder = PJ_TRUE; 
    1037         s->enc_setting.CMR = 15; 
     1051        s->enc_setting.cmr = 15; 
    10381052         
    10391053        s->dec_setting.amr_nb = ippc->pt == PJMEDIA_RTP_PT_AMR; 
    1040         s->dec_setting.octet_aligned = 0; 
     1054        s->dec_setting.octet_aligned = octet_align; 
    10411055        s->dec_setting.reorder = PJ_TRUE; 
    10421056    } 
Note: See TracChangeset for help on using the changeset viewer.