Changeset 405:f33507802811 in mediastreamer2


Ignore:
Timestamp:
Apr 8, 2009 10:28:46 PM (4 years ago)
Author:
smorlat <smorlat@…>
Branch:
default
Message:
  • merge patch to disable usage of REUSEADDR as a configure option
  • implement reloading of soundcards and webcams.

git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@408 3f6dc0c8-ddfe-455d-9043-3cd528dc4637

Location:
linphone
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • linphone/mediastreamer2/include/mediastreamer2/mssndcard.h

    r253 r405  
    4040struct _MSSndCardManager{ 
    4141        MSList *cards; 
     42        MSList *descs; 
    4243}; 
    4344 
     
    207208void ms_snd_card_manager_register_desc(MSSndCardManager *m, MSSndCardDesc *desc); 
    208209 
     210/** 
     211 * Ask all registered MSSndCardDesc to re-detect their soundcards. 
     212 * @param m The sound card manager. 
     213**/ 
     214void ms_snd_card_manager_reload(MSSndCardManager *m); 
     215 
    209216/** @} */ 
    210217 
  • linphone/mediastreamer2/include/mediastreamer2/mswebcam.h

    r389 r405  
    4040struct _MSWebCamManager{ 
    4141        MSList *cams; 
     42        MSList *descs; 
    4243}; 
    4344 
     
    9596 
    9697/** 
    97  * Destroy a sound card manager object. 
     98 * Destroy the webcam manager object. 
    9899 * 
    99100 */ 
     
    101102 
    102103/** 
    103  * Retreive a sound card object based on its name. 
    104  * 
    105  * @param m    A sound card manager containing sound cards. 
     104 * Retreive a webcam object based on its name. 
     105 * 
     106 * @param m    A webcam manager containing webcam. 
    106107 * @param id   A name for card to search. 
    107108 * 
     
    111112 
    112113/** 
    113  * Retreive the default sound card object. 
    114  * 
    115  * @param m    A sound card manager containing sound cards. 
     114 * Retreive the default webcam object. 
     115 * 
     116 * @param m    A webcam manager containing webcams. 
    116117 * 
    117118 * Returns: MSWebCam if successfull, NULL otherwise. 
     
    129130 
    130131/** 
    131  * Add a sound card object in a webcam  manager's list. 
     132 * Add a webcam object in a webcam  manager's list. 
    132133 * 
    133134 * @param m    A webcam  manager containing webcams 
     
    138139 
    139140/** 
    140  * Add a sound card object on top of list of the webcam  manager's list. 
     141 * Add a webcam object on top of list of the webcam  manager's list. 
    141142 * 
    142143 * @param m    A webcam  manager containing webcams 
     
    148149 
    149150/** 
    150  * Register a sound card description in a sound card manager. 
    151  * 
    152  * @param m      A sound card manager containing sound cards. 
    153  * @param desc   A sound card description object. 
     151 * Register a webcam descriptor in a webcam manager. 
     152 * 
     153 * @param m      A webcam manager containing sound cards. 
     154 * @param desc   A webcam descriptor object. 
    154155 * 
    155156 */ 
    156157void ms_web_cam_manager_register_desc(MSWebCamManager *m, MSWebCamDesc *desc); 
    157158 
     159 
     160/** 
     161 * Ask all registered MSWebCamDesc to detect the webcams again. 
     162 * 
     163 * @param m A webcam manager 
     164**/ 
     165void ms_web_cam_manager_reload(MSWebCamManager *m); 
     166 
    158167/** 
    159168 * Create an INPUT filter based on the selected camera. 
    160169 * 
    161  * @param obj      A sound card object. 
     170 * @param obj      A webcam object. 
    162171 * 
    163172 * Returns: A MSFilter if successfull, NULL otherwise. 
  • linphone/mediastreamer2/src/mssndcard.c

    r265 r405  
    2828        MSSndCardManager *obj=(MSSndCardManager *)ms_new(MSSndCardManager,1); 
    2929        obj->cards=NULL; 
     30        obj->descs=NULL; 
    3031        return obj; 
    3132} 
     
    3536                ms_list_for_each(scm->cards,(void (*)(void*))ms_snd_card_destroy); 
    3637                ms_list_free(scm->cards); 
     38                ms_list_free(scm->descs); 
    3739        } 
    3840        ms_free(scm); 
     
    9799} 
    98100 
    99 void ms_snd_card_manager_register_desc(MSSndCardManager *m, MSSndCardDesc *desc){ 
     101static void card_detect(MSSndCardManager *m, MSSndCardDesc *desc){ 
    100102        if (desc->detect!=NULL) 
    101103                desc->detect(m); 
     104} 
     105 
     106void ms_snd_card_manager_register_desc(MSSndCardManager *m, MSSndCardDesc *desc){ 
     107        m->descs=ms_list_append(m->descs,desc); 
     108        card_detect(m,desc); 
     109} 
     110 
     111void ms_snd_card_manager_reload(MSSndCardManager *m){ 
     112        MSList *elem; 
     113        ms_list_for_each(m->cards,(void (*)(void*))ms_snd_card_destroy); 
     114        ms_list_free(m->cards); 
     115        m->cards=NULL; 
     116        for(elem=m->descs;elem!=NULL;elem=elem->next) 
     117                card_detect(m,(MSSndCardDesc*)elem->data); 
    102118} 
    103119 
  • linphone/mediastreamer2/src/mswebcam.c

    r389 r405  
    3030        MSWebCamManager *obj=(MSWebCamManager *)ms_new(MSWebCamManager,1); 
    3131        obj->cams=NULL; 
     32        obj->descs=NULL; 
    3233        return obj; 
    3334} 
     
    3738                ms_list_for_each(scm->cams,(void (*)(void*))ms_web_cam_destroy); 
    3839                ms_list_free(scm->cams); 
     40                ms_list_free(scm->descs); 
    3941        } 
    4042        ms_free(scm); 
     
    5961 
    6062MSWebCam * ms_web_cam_manager_get_default_cam(MSWebCamManager *m){ 
    61   if (m->cams!=NULL) 
    62         return (MSWebCam*)m->cams->data; 
    63   return NULL; 
     63        if (m->cams!=NULL) 
     64                return (MSWebCam*)m->cams->data; 
     65        return NULL; 
    6466} 
    6567 
     
    7880} 
    7981 
    80 void ms_web_cam_manager_register_desc(MSWebCamManager *m, MSWebCamDesc *desc){ 
     82static void cam_detect(MSWebCamManager *m, MSWebCamDesc *desc){ 
    8183        if (desc->detect!=NULL) 
    8284                desc->detect(m); 
     85} 
     86 
     87void ms_web_cam_manager_register_desc(MSWebCamManager *m, MSWebCamDesc *desc){ 
     88        m->descs=ms_list_append(m->descs,desc); 
     89        cam_detect(m,desc); 
     90} 
     91 
     92void ms_web_cam_manager_reload(MSWebCamManager *m){ 
     93        MSList *elem; 
     94        ms_list_for_each(m->cams,(void (*)(void*))ms_web_cam_destroy); 
     95        ms_list_free(m->cams); 
     96        m->cams=NULL; 
     97        for(elem=m->descs;elem!=NULL;elem=elem->next) 
     98                cam_detect(m,(MSWebCamDesc*)elem->data); 
    8399} 
    84100 
  • linphone/oRTP/configure.ac

    r351 r405  
    203203fi 
    204204 
     205AC_ARG_ENABLE(so-reuseaddr, 
     206                                [  --enable-so-reuseaddr=[yes/no]   enables SO_REUSEADDR socket option in the rtp_session_set_local_addr() function.], 
     207                                [case "${enableval}" in 
     208                                        yes) so_reuseaddr_enabled=yes;; 
     209                                        no) so_reuseaddr_enabled=no;; 
     210                                        *) AC_MSG_ERROR("Bad value for --enable-so-reuseaddr");; 
     211                                esac], 
     212                                [so_reuseaddr_enabled=yes]) 
     213                                 
     214if test "$so_reuseaddr_enabled" = "yes" ; then 
     215        AC_DEFINE(SO_REUSE_ADDR,1,[Defined when SO_REUSEADDR socket option in the rtp_session_set_local_addr() function is enabled]) 
     216fi 
     217 
     218 
    205219dnl Checks for header files. 
    206220AC_HEADER_STDC 
  • linphone/oRTP/src/ortp-config-win32.h

    r0 r405  
    3030 
    3131#define HAVE_SRTP 1 
     32 
     33/* enables SO_REUSEADDR socket option in the rtp_session_set_local_addr() function */ 
     34#define SO_REUSE_ADDR 1 
  • linphone/oRTP/src/rtpsession_inet.c

    r189 r405  
    247247        ortp_socket_t sock; 
    248248        int sockfamily; 
     249        bool_t reuse_addr; 
    249250        if (session->rtp.socket>=0){ 
    250251                /* don't rebind, but close before*/ 
    251252                rtp_session_release_sockets(session); 
    252253        } 
     254#ifdef SO_REUSE_ADDR 
     255        reuse_addr=TRUE; 
     256#else 
     257        reuse_addr=FALSE; 
     258#endif 
    253259        /* try to bind the rtp port */ 
    254260        if (port>0) 
    255                 sock=create_and_bind(addr,port,&sockfamily,TRUE); 
     261                sock=create_and_bind(addr,port,&sockfamily,reuse_addr); 
    256262        else 
    257263                sock=create_and_bind_random(addr,&sockfamily,&port); 
     
    262268                session->rtp.loc_port=port; 
    263269                /*try to bind rtcp port */ 
    264                 sock=create_and_bind(addr,port+1,&sockfamily,TRUE); 
     270                sock=create_and_bind(addr,port+1,&sockfamily,reuse_addr); 
    265271                if (sock!=-1){ 
    266272                        session->rtcp.sockfamily=sockfamily; 
Note: See TracChangeset for help on using the changeset viewer.