Ignore:
Timestamp:
Jul 15, 2011 9:51:46 AM (13 years ago)
Author:
bennylp
Message:

Fixed #1294: New pjmedia_codec_register_audio_codecs() API to register all known codecs, and also added implementation to deregister all codecs when the media endpoint is destroyed

Location:
pjproject/branches/projects/2.0-dev
Files:
2 added
19 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/2.0-dev/pjmedia/build/Makefile

    r3649 r3661  
    110110# 
    111111export PJMEDIA_CODEC_SRCDIR = ../src/pjmedia-codec 
    112 export PJMEDIA_CODEC_OBJS += ffmpeg_codecs.o \ 
     112export PJMEDIA_CODEC_OBJS += audio_codecs.o ffmpeg_codecs.o \ 
    113113                        h263_packetizer.o h264_packetizer.o \ 
    114114                        $(OS_OBJS) $(M_OBJS) $(CC_OBJS) $(HOST_OBJS) \ 
  • pjproject/branches/projects/2.0-dev/pjmedia/include/pjmedia-codec.h

    r3392 r3661  
    2626 */ 
    2727 
     28#include <pjmedia-codec/audio_codecs.h> 
    2829#include <pjmedia-codec/l16.h> 
    2930#include <pjmedia-codec/ffmpeg_codecs.h> 
  • pjproject/branches/projects/2.0-dev/pjmedia/include/pjmedia/codec.h

    r3498 r3661  
    553553                                 pjmedia_codec *codec ); 
    554554 
     555    /** 
     556     * This callback will be called to deinitialize and destroy this factory. 
     557     * 
     558     * @param factory   The codec factory. 
     559     */ 
     560    pj_status_t (*destroy)(void); 
     561 
    555562} pjmedia_codec_factory_op; 
    556563 
     
    724731 * Unregister codec factory from the codec manager. This will also 
    725732 * remove all the codecs registered by the codec factory from the 
    726  * codec manager's list of supported codecs. 
    727  * 
    728  * @param mgr       The codec manager instance. Application can get the 
    729  *                  instance by calling #pjmedia_endpt_get_codec_mgr(). 
     733 * codec manager's list of supported codecs. This function should 
     734 * only be called by the codec implementers and not by application. 
     735 * 
     736 * @param mgr       The codec manager instance, use 
     737 *                      #pjmedia_endpt_get_codec_mgr(). 
    730738 * @param factory   The codec factory to be unregistered. 
    731739 * 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia-codec/g722.c

    r3250 r3661  
    123123    &g722_enum_codecs, 
    124124    &g722_alloc_codec, 
    125     &g722_dealloc_codec 
     125    &g722_dealloc_codec, 
     126    &pjmedia_codec_g722_deinit 
    126127}; 
    127128 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia-codec/g7221.c

    r2760 r3661  
    116116    &enum_codecs, 
    117117    &alloc_codec, 
    118     &dealloc_codec 
     118    &dealloc_codec, 
     119    &pjmedia_codec_g7221_deinit 
    119120}; 
    120121 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia-codec/gsm.c

    r3158 r3661  
    118118    &gsm_enum_codecs, 
    119119    &gsm_alloc_codec, 
    120     &gsm_dealloc_codec 
     120    &gsm_dealloc_codec, 
     121    &pjmedia_codec_gsm_deinit 
    121122}; 
    122123 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia-codec/ilbc.c

    r3362 r3661  
    114114    &ilbc_enum_codecs, 
    115115    &ilbc_alloc_codec, 
    116     &ilbc_dealloc_codec 
     116    &ilbc_dealloc_codec, 
     117    &pjmedia_codec_ilbc_deinit 
    117118}; 
    118119 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia-codec/ipp_codecs.c

    r3517 r3661  
    104104    &ipp_enum_codecs, 
    105105    &ipp_alloc_codec, 
    106     &ipp_dealloc_codec 
     106    &ipp_dealloc_codec, 
     107    &pjmedia_codec_ipp_deinit 
    107108}; 
    108109 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia-codec/l16.c

    r3146 r3661  
    113113    &l16_enum_codecs, 
    114114    &l16_alloc_codec, 
    115     &l16_dealloc_codec 
     115    &l16_dealloc_codec, 
     116    &pjmedia_codec_l16_deinit 
    116117}; 
    117118 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia-codec/passthrough.c

    r3165 r3661  
    9999    &enum_codecs, 
    100100    &alloc_codec, 
    101     &dealloc_codec 
     101    &dealloc_codec, 
     102    &pjmedia_codec_passthrough_deinit 
    102103}; 
    103104 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia-codec/speex_codec.c

    r2394 r3661  
    100100    &spx_enum_codecs, 
    101101    &spx_alloc_codec, 
    102     &spx_dealloc_codec 
     102    &spx_dealloc_codec, 
     103    &pjmedia_codec_speex_deinit 
    103104}; 
    104105 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia/codec.c

    r3380 r3661  
    7373PJ_DEF(pj_status_t) pjmedia_codec_mgr_destroy (pjmedia_codec_mgr *mgr) 
    7474{ 
     75    pjmedia_codec_factory *factory; 
    7576    unsigned i; 
    7677 
    7778    PJ_ASSERT_RETURN(mgr, PJ_EINVAL); 
     79 
     80    /* Destroy all factories in the list */ 
     81    factory = mgr->factory_list.next; 
     82    while (factory != &mgr->factory_list) { 
     83        pjmedia_codec_factory *next = factory->next; 
     84        (*factory->op->destroy)(); 
     85        factory = next; 
     86    } 
    7887 
    7988    /* Cleanup all pools of all codec default params */ 
     
    111120 
    112121    PJ_ASSERT_RETURN(mgr && factory, PJ_EINVAL); 
     122 
     123    /* Since 2.0 we require codec factory to implement "destroy" op. Please 
     124     * see: https://trac.pjsip.org/repos/ticket/1294 
     125     * 
     126     * Really! Please do see it. 
     127     */ 
     128    PJ_ASSERT_RETURN(factory->op->destroy != NULL, PJ_ENOTSUP); 
    113129 
    114130    /* Enum codecs */ 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia/g711.c

    r2832 r3661  
    112112    &g711_enum_codecs, 
    113113    &g711_alloc_codec, 
    114     &g711_dealloc_codec 
     114    &g711_dealloc_codec, 
     115    &pjmedia_codec_g711_deinit 
    115116}; 
    116117 
  • pjproject/branches/projects/2.0-dev/pjsip-apps/src/samples/encdec.c

    r2394 r3661  
    239239 
    240240    /* Register all codecs */ 
    241 #if PJMEDIA_HAS_G711_CODEC 
    242     CHECK( pjmedia_codec_g711_init(mept) ); 
    243 #endif 
    244 #if PJMEDIA_HAS_GSM_CODEC 
    245     CHECK( pjmedia_codec_gsm_init(mept) ); 
    246 #endif 
    247 #if PJMEDIA_HAS_ILBC_CODEC 
    248     CHECK( pjmedia_codec_ilbc_init(mept, 30) ); 
    249 #endif 
    250 #if PJMEDIA_HAS_SPEEX_CODEC 
    251     CHECK( pjmedia_codec_speex_init(mept, 0, 5, 5) ); 
    252 #endif 
    253 #if PJMEDIA_HAS_G722_CODEC 
    254     CHECK( pjmedia_codec_g722_init(mept) ); 
    255 #endif 
     241    CHECK( pjmedia_codec_register_audio_codecs(mept, NULL) ); 
    256242 
    257243    pj_gettimeofday(&t0); 
  • pjproject/branches/projects/2.0-dev/pjsip-apps/src/samples/jbsim.c

    r3392 r3661  
    473473 
    474474    /* Register codecs */ 
    475 #if defined(PJMEDIA_HAS_GSM_CODEC) && PJMEDIA_HAS_GSM_CODEC != 0 
    476     pjmedia_codec_gsm_init(g_app.endpt); 
    477 #endif 
    478 #if defined(PJMEDIA_HAS_G711_CODEC) && PJMEDIA_HAS_G711_CODEC!=0 
    479     pjmedia_codec_g711_init(g_app.endpt); 
    480 #endif 
    481 #if defined(PJMEDIA_HAS_SPEEX_CODEC) && PJMEDIA_HAS_SPEEX_CODEC!=0 
    482     pjmedia_codec_speex_init(g_app.endpt, 0, PJMEDIA_CODEC_SPEEX_DEFAULT_QUALITY, 
    483                              PJMEDIA_CODEC_SPEEX_DEFAULT_COMPLEXITY); 
    484 #endif 
    485 #if defined(PJMEDIA_HAS_G722_CODEC) && (PJMEDIA_HAS_G722_CODEC != 0) 
    486     pjmedia_codec_g722_init(g_app.endpt); 
    487 #endif 
    488 #if defined(PJMEDIA_HAS_ILBC_CODEC) && PJMEDIA_HAS_ILBC_CODEC != 0 
    489     /* Init ILBC with mode=20 to make the losts occur at the same 
    490      * places as other codecs. 
    491      */ 
    492     pjmedia_codec_ilbc_init(g_app.endpt, 20); 
    493 #endif 
    494 #if defined(PJMEDIA_HAS_INTEL_IPP) && PJMEDIA_HAS_INTEL_IPP != 0 
    495     pjmedia_codec_ipp_init(g_app.endpt); 
    496 #endif 
    497 #if defined(PJMEDIA_HAS_L16_CODEC) && PJMEDIA_HAS_L16_CODEC != 0 
    498     pjmedia_codec_l16_init(g_app.endpt, 0); 
    499 #endif 
     475    pjmedia_codec_register_audio_codecs(g_app.endpt, NULL); 
    500476 
    501477    /* Create the loop transport */ 
  • pjproject/branches/projects/2.0-dev/pjsip-apps/src/samples/pcaputil.c

    r3392 r3661  
    229229 
    230230    /* Initialize all codecs */ 
    231 #if PJMEDIA_HAS_SPEEX_CODEC 
    232     T( pjmedia_codec_speex_init(app.mept, 0, 10, 10) ); 
    233 #endif /* PJMEDIA_HAS_SPEEX_CODEC */ 
    234  
    235 #if PJMEDIA_HAS_ILBC_CODEC 
    236     T( pjmedia_codec_ilbc_init(app.mept, 30) ); 
    237 #endif /* PJMEDIA_HAS_ILBC_CODEC */ 
    238  
    239 #if PJMEDIA_HAS_GSM_CODEC 
    240     T( pjmedia_codec_gsm_init(app.mept) ); 
    241 #endif /* PJMEDIA_HAS_GSM_CODEC */ 
    242  
    243 #if PJMEDIA_HAS_G711_CODEC 
    244     T( pjmedia_codec_g711_init(app.mept) ); 
    245 #endif  /* PJMEDIA_HAS_G711_CODEC */ 
    246  
    247 #if PJMEDIA_HAS_G722_CODEC 
    248     T( pjmedia_codec_g722_init(app.mept) ); 
    249 #endif  /* PJMEDIA_HAS_G722_CODEC */ 
    250  
    251 #if PJMEDIA_HAS_L16_CODEC 
    252     T( pjmedia_codec_l16_init(app.mept, 0) ); 
    253 #endif  /* PJMEDIA_HAS_L16_CODEC */ 
     231    T( pjmedia_codec_register_audio_codecs(app.mept, NULL) ); 
    254232 
    255233    /* Create SRTP transport is needed */ 
  • pjproject/branches/projects/2.0-dev/pjsip-apps/src/samples/pjsip-perf.c

    r2408 r3661  
    929929 
    930930    /* Must register all codecs to be supported */ 
    931 #if defined(PJMEDIA_HAS_G711_CODEC) && PJMEDIA_HAS_G711_CODEC!=0 
    932     pjmedia_codec_g711_init(app.med_endpt); 
    933 #endif 
    934 #if defined(PJMEDIA_HAS_GSM_CODEC) && PJMEDIA_HAS_GSM_CODEC!=0 
    935     pjmedia_codec_gsm_init(app.med_endpt); 
    936 #endif 
    937 #if defined(PJMEDIA_HAS_SPEEX_CODEC) && PJMEDIA_HAS_SPEEX_CODEC!=0 
    938     pjmedia_codec_speex_init(app.med_endpt, PJMEDIA_SPEEX_NO_UWB, 3, 3); 
    939 #endif 
    940 #if defined(PJMEDIA_HAS_G722_CODEC) && PJMEDIA_HAS_G722_CODEC!=0 
    941     pjmedia_codec_g722_init(app.med_endpt); 
    942 #endif 
     931    pjmedia_codec_register_audio_codecs(app.med_endpt, NULL); 
    943932 
    944933    /* Init dummy socket addresses */ 
  • pjproject/branches/projects/2.0-dev/pjsip-apps/src/samples/streamutil.c

    r3514 r3661  
    101101static pj_status_t init_codecs(pjmedia_endpt *med_endpt) 
    102102{ 
    103     pj_status_t status; 
    104  
    105     /* To suppress warning about unused var when all codecs are disabled */ 
    106     PJ_UNUSED_ARG(status); 
    107  
    108 #if defined(PJMEDIA_HAS_G711_CODEC) && PJMEDIA_HAS_G711_CODEC!=0 
    109     status = pjmedia_codec_g711_init(med_endpt); 
    110     PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 
    111 #endif 
    112  
    113 #if defined(PJMEDIA_HAS_GSM_CODEC) && PJMEDIA_HAS_GSM_CODEC!=0 
    114     status = pjmedia_codec_gsm_init(med_endpt); 
    115     PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 
    116 #endif 
    117  
    118 #if defined(PJMEDIA_HAS_SPEEX_CODEC) && PJMEDIA_HAS_SPEEX_CODEC!=0 
    119     status = pjmedia_codec_speex_init(med_endpt, 0, -1, -1); 
    120     PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 
    121 #endif 
    122  
    123 #if defined(PJMEDIA_HAS_G722_CODEC) && PJMEDIA_HAS_G722_CODEC!=0 
    124     status = pjmedia_codec_g722_init(med_endpt); 
    125     PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 
    126 #endif 
    127  
    128 #if defined(PJMEDIA_HAS_L16_CODEC) && PJMEDIA_HAS_L16_CODEC!=0 
    129     status = pjmedia_codec_l16_init(med_endpt, 0); 
    130     PJ_ASSERT_RETURN(status == PJ_SUCCESS, status); 
    131 #endif 
    132  
    133     return PJ_SUCCESS; 
     103    return pjmedia_codec_register_audio_codecs(med_endpt, NULL); 
    134104} 
    135105 
  • pjproject/branches/projects/2.0-dev/pjsip/src/pjsua-lib/pjsua_media.c

    r3659 r3661  
    6767    pj_str_t codec_id = {NULL, 0}; 
    6868    unsigned opt; 
     69    pjmedia_audio_codec_config codec_cfg; 
    6970    pj_status_t status; 
    7071 
     
    113114    } 
    114115 
    115     /* Register all codecs */ 
    116  
    117 #if PJMEDIA_HAS_SPEEX_CODEC 
    118     /* Register speex. */ 
    119     status = pjmedia_codec_speex_init(pjsua_var.med_endpt,   
    120                                       0,  
    121                                       pjsua_var.media_cfg.quality,   
    122                                       -1); 
    123     if (status != PJ_SUCCESS) { 
    124         pjsua_perror(THIS_FILE, "Error initializing Speex codec", 
    125                      status); 
    126         return status; 
    127     } 
    128  
    129     /* Set speex/16000 to higher priority*/ 
    130     codec_id = pj_str("speex/16000"); 
    131     pjmedia_codec_mgr_set_codec_priority(  
    132         pjmedia_endpt_get_codec_mgr(pjsua_var.med_endpt), 
    133         &codec_id, PJMEDIA_CODEC_PRIO_NORMAL+2); 
    134  
    135     /* Set speex/8000 to next higher priority*/ 
    136     codec_id = pj_str("speex/8000"); 
    137     pjmedia_codec_mgr_set_codec_priority(  
    138         pjmedia_endpt_get_codec_mgr(pjsua_var.med_endpt), 
    139         &codec_id, PJMEDIA_CODEC_PRIO_NORMAL+1); 
    140  
    141  
    142  
    143 #endif /* PJMEDIA_HAS_SPEEX_CODEC */ 
    144  
    145 #if PJMEDIA_HAS_ILBC_CODEC 
    146     /* Register iLBC. */ 
    147     status = pjmedia_codec_ilbc_init( pjsua_var.med_endpt,  
    148                                       pjsua_var.media_cfg.ilbc_mode); 
    149     if (status != PJ_SUCCESS) { 
    150         pjsua_perror(THIS_FILE, "Error initializing iLBC codec", 
    151                      status); 
    152         return status; 
    153     } 
    154 #endif /* PJMEDIA_HAS_ILBC_CODEC */ 
    155  
    156 #if PJMEDIA_HAS_GSM_CODEC 
    157     /* Register GSM */ 
    158     status = pjmedia_codec_gsm_init(pjsua_var.med_endpt); 
    159     if (status != PJ_SUCCESS) { 
    160         pjsua_perror(THIS_FILE, "Error initializing GSM codec", 
    161                      status); 
    162         return status; 
    163     } 
    164 #endif /* PJMEDIA_HAS_GSM_CODEC */ 
    165  
    166 #if PJMEDIA_HAS_G711_CODEC 
    167     /* Register PCMA and PCMU */ 
    168     status = pjmedia_codec_g711_init(pjsua_var.med_endpt); 
    169     if (status != PJ_SUCCESS) { 
    170         pjsua_perror(THIS_FILE, "Error initializing G711 codec", 
    171                      status); 
    172         return status; 
    173     } 
    174 #endif  /* PJMEDIA_HAS_G711_CODEC */ 
    175  
    176 #if PJMEDIA_HAS_G722_CODEC 
    177     status = pjmedia_codec_g722_init( pjsua_var.med_endpt ); 
    178     if (status != PJ_SUCCESS) { 
    179         pjsua_perror(THIS_FILE, "Error initializing G722 codec", 
    180                      status); 
    181         return status; 
    182     } 
    183 #endif  /* PJMEDIA_HAS_G722_CODEC */ 
    184  
    185 #if PJMEDIA_HAS_INTEL_IPP 
    186     /* Register IPP codecs */ 
    187     status = pjmedia_codec_ipp_init(pjsua_var.med_endpt); 
    188     if (status != PJ_SUCCESS) { 
    189         pjsua_perror(THIS_FILE, "Error initializing IPP codecs", 
    190                      status); 
    191         return status; 
    192     } 
    193  
    194 #endif /* PJMEDIA_HAS_INTEL_IPP */ 
     116    /* 
     117     * Register all codecs 
     118     */ 
     119    pjmedia_audio_codec_config_default(&codec_cfg); 
     120    codec_cfg.speex.quality = pjsua_var.media_cfg.quality; 
     121    codec_cfg.speex.complexity = -1; 
     122    codec_cfg.ilbc.mode = pjsua_var.media_cfg.ilbc_mode; 
    195123 
    196124#if PJMEDIA_HAS_PASSTHROUGH_CODECS 
     
    200128        unsigned ext_fmt_cnt = 0; 
    201129        pjmedia_format ext_fmts[32]; 
    202         pjmedia_codec_passthrough_setting setting; 
    203130 
    204131        /* List extended formats supported by audio devices */ 
     
    237164 
    238165        /* Init the passthrough codec with supported formats only */ 
    239         setting.fmt_cnt = ext_fmt_cnt; 
    240         setting.fmts = ext_fmts; 
    241         setting.ilbc_mode = cfg->ilbc_mode; 
    242         status = pjmedia_codec_passthrough_init2(pjsua_var.med_endpt, &setting); 
    243         if (status != PJ_SUCCESS) { 
    244             pjsua_perror(THIS_FILE, "Error initializing passthrough codecs", 
    245                          status); 
    246             return status; 
    247         } 
     166        codec_cfg.passthrough.setting.fmt_cnt = ext_fmt_cnt; 
     167        codec_cfg.passthrough.setting.fmts = ext_fmts; 
     168        codec_cfg.passthrough.setting.ilbc_mode = cfg->ilbc_mode; 
    248169    } 
    249170#endif /* PJMEDIA_HAS_PASSTHROUGH_CODECS */ 
    250171 
    251 #if PJMEDIA_HAS_G7221_CODEC 
    252     /* Register G722.1 codecs */ 
    253     status = pjmedia_codec_g7221_init(pjsua_var.med_endpt); 
     172    /* Register all codecs */ 
     173    status = pjmedia_codec_register_audio_codecs(pjsua_var.med_endpt, 
     174                                                 &codec_cfg); 
    254175    if (status != PJ_SUCCESS) { 
    255         pjsua_perror(THIS_FILE, "Error initializing G722.1 codec", 
    256                      status); 
     176        PJ_PERROR(1,(THIS_FILE, status, "Error registering codecs")); 
    257177        return status; 
    258178    } 
    259 #endif /* PJMEDIA_HAS_G7221_CODEC */ 
    260  
    261 #if PJMEDIA_HAS_L16_CODEC 
    262     /* Register L16 family codecs, but disable all */ 
    263     status = pjmedia_codec_l16_init(pjsua_var.med_endpt, 0); 
    264     if (status != PJ_SUCCESS) { 
    265         pjsua_perror(THIS_FILE, "Error initializing L16 codecs", 
    266                      status); 
    267         return status; 
    268     } 
     179 
     180    /* Set speex/16000 to higher priority*/ 
     181    codec_id = pj_str("speex/16000"); 
     182    pjmedia_codec_mgr_set_codec_priority( 
     183        pjmedia_endpt_get_codec_mgr(pjsua_var.med_endpt), 
     184        &codec_id, PJMEDIA_CODEC_PRIO_NORMAL+2); 
     185 
     186    /* Set speex/8000 to next higher priority*/ 
     187    codec_id = pj_str("speex/8000"); 
     188    pjmedia_codec_mgr_set_codec_priority( 
     189        pjmedia_endpt_get_codec_mgr(pjsua_var.med_endpt), 
     190        &codec_id, PJMEDIA_CODEC_PRIO_NORMAL+1); 
    269191 
    270192    /* Disable ALL L16 codecs */ 
     
    273195        pjmedia_endpt_get_codec_mgr(pjsua_var.med_endpt), 
    274196        &codec_id, PJMEDIA_CODEC_PRIO_DISABLED); 
    275  
    276 #endif  /* PJMEDIA_HAS_L16_CODEC */ 
    277197 
    278198 
     
    519439            pjsua_vid_subsys_destroy(); 
    520440#       endif 
    521         /* Shutdown all codecs: */ 
    522 #       if PJMEDIA_HAS_SPEEX_CODEC 
    523             pjmedia_codec_speex_deinit(); 
    524 #       endif /* PJMEDIA_HAS_SPEEX_CODEC */ 
    525  
    526 #       if PJMEDIA_HAS_GSM_CODEC 
    527             pjmedia_codec_gsm_deinit(); 
    528 #       endif /* PJMEDIA_HAS_GSM_CODEC */ 
    529  
    530 #       if PJMEDIA_HAS_G711_CODEC 
    531             pjmedia_codec_g711_deinit(); 
    532 #       endif   /* PJMEDIA_HAS_G711_CODEC */ 
    533  
    534 #       if PJMEDIA_HAS_G722_CODEC 
    535             pjmedia_codec_g722_deinit(); 
    536 #       endif   /* PJMEDIA_HAS_G722_CODEC */ 
    537  
    538 #       if PJMEDIA_HAS_INTEL_IPP 
    539             pjmedia_codec_ipp_deinit(); 
    540 #       endif   /* PJMEDIA_HAS_INTEL_IPP */ 
    541  
    542 #       if PJMEDIA_HAS_PASSTHROUGH_CODECS 
    543             pjmedia_codec_passthrough_deinit(); 
    544 #       endif /* PJMEDIA_HAS_PASSTHROUGH_CODECS */ 
    545  
    546 #       if PJMEDIA_HAS_G7221_CODEC 
    547             pjmedia_codec_g7221_deinit(); 
    548 #       endif /* PJMEDIA_HAS_G7221_CODEC */ 
    549  
    550 #       if PJMEDIA_HAS_L16_CODEC 
    551             pjmedia_codec_l16_deinit(); 
    552 #       endif   /* PJMEDIA_HAS_L16_CODEC */ 
    553441 
    554442        pjmedia_endpt_destroy(pjsua_var.med_endpt); 
Note: See TracChangeset for help on using the changeset viewer.