From 5931dc59c08af2cf1f23518f700e9107effa9e59 Mon Sep 17 00:00:00 2001 From: Benny Prijono Date: Wed, 21 Nov 2007 14:12:01 +0000 Subject: Ticket #417: added pjlib API to retrieve the native thread handle from pj_thread_t git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1589 74dad513-b988-da41-8d7b-12977e46ad98 --- build.symbian/pjlibU.def | 374 +++++++++++++++++++------------------ build.symbian/pjmediaU.def | 262 +++++++++++++------------- pjlib/include/pj/os.h | 13 ++ pjlib/src/pj/os_core_symbian.cpp | 17 ++ pjlib/src/pj/os_core_unix.c | 14 ++ pjlib/src/pj/os_core_win32.c | 15 ++ pjmedia/include/pjmedia/endpoint.h | 20 ++ pjmedia/src/pjmedia/endpoint.c | 22 +++ 8 files changed, 422 insertions(+), 315 deletions(-) diff --git a/build.symbian/pjlibU.def b/build.symbian/pjlibU.def index 8e2cf97a..11c34792 100644 --- a/build.symbian/pjlibU.def +++ b/build.symbian/pjlibU.def @@ -111,188 +111,192 @@ EXPORTS pj_inet_addr2 @ 110 NONAME pj_inet_aton @ 111 NONAME pj_inet_ntoa @ 112 NONAME - pj_init @ 113 NONAME - pj_ioqueue_accept @ 114 NONAME - pj_ioqueue_connect @ 115 NONAME - pj_ioqueue_create @ 116 NONAME - pj_ioqueue_destroy @ 117 NONAME - pj_ioqueue_get_user_data @ 118 NONAME - pj_ioqueue_is_pending @ 119 NONAME - pj_ioqueue_name @ 120 NONAME - pj_ioqueue_op_key_init @ 121 NONAME - pj_ioqueue_poll @ 122 NONAME - pj_ioqueue_post_completion @ 123 NONAME - pj_ioqueue_recv @ 124 NONAME - pj_ioqueue_recvfrom @ 125 NONAME - pj_ioqueue_register_sock @ 126 NONAME - pj_ioqueue_send @ 127 NONAME - pj_ioqueue_sendto @ 128 NONAME - pj_ioqueue_set_lock @ 129 NONAME - pj_ioqueue_set_user_data @ 130 NONAME - pj_ioqueue_unregister @ 131 NONAME - pj_leave_critical_section @ 132 NONAME - pj_list_erase @ 133 NONAME - pj_list_find_node @ 134 NONAME - pj_list_insert_after @ 135 NONAME - pj_list_insert_before @ 136 NONAME - pj_list_insert_nodes_after @ 137 NONAME - pj_list_insert_nodes_before @ 138 NONAME - pj_list_merge_first @ 139 NONAME - pj_list_merge_last @ 140 NONAME - pj_list_search @ 141 NONAME - pj_list_size @ 142 NONAME - pj_lock_acquire @ 143 NONAME - pj_lock_create_null_mutex @ 144 NONAME - pj_lock_create_recursive_mutex @ 145 NONAME - pj_lock_create_semaphore @ 146 NONAME - pj_lock_create_simple_mutex @ 147 NONAME - pj_lock_destroy @ 148 NONAME - pj_lock_release @ 149 NONAME - pj_lock_tryacquire @ 150 NONAME - pj_log @ 151 NONAME - pj_log_1 @ 152 NONAME - pj_log_2 @ 153 NONAME - pj_log_3 @ 154 NONAME - pj_log_4 @ 155 NONAME - pj_log_5 @ 156 NONAME - pj_log_get_decor @ 157 NONAME - pj_log_get_level @ 158 NONAME - pj_log_get_log_func @ 159 NONAME - pj_log_set_decor @ 160 NONAME - pj_log_set_level @ 161 NONAME - pj_log_set_log_func @ 162 NONAME - pj_log_write @ 163 NONAME - pj_mutex_create @ 164 NONAME - pj_mutex_create_recursive @ 165 NONAME - pj_mutex_create_simple @ 166 NONAME - pj_mutex_destroy @ 167 NONAME - pj_mutex_lock @ 168 NONAME - pj_mutex_trylock @ 169 NONAME - pj_mutex_unlock @ 170 NONAME - pj_ntohl @ 171 NONAME - pj_ntohs @ 172 NONAME - pj_pool_alloc @ 173 NONAME - pj_pool_alloc_from_block @ 174 NONAME - pj_pool_allocate_find @ 175 NONAME - pj_pool_calloc @ 176 NONAME - pj_pool_create @ 177 NONAME - pj_pool_create_int @ 178 NONAME - pj_pool_create_on_buf @ 179 NONAME - pj_pool_destroy_int @ 180 NONAME - pj_pool_factory_default_policy @ 181 NONAME - pj_pool_factory_get_default_policy @ 182 NONAME - pj_pool_get_capacity @ 183 NONAME - pj_pool_get_used_size @ 184 NONAME - pj_pool_getobjname @ 185 NONAME - pj_pool_init_int @ 186 NONAME - pj_pool_release @ 187 NONAME - pj_pool_reset @ 188 NONAME - pj_rand @ 189 NONAME - pj_rbtree_erase @ 190 NONAME - pj_rbtree_find @ 191 NONAME - pj_rbtree_first @ 192 NONAME - pj_rbtree_init @ 193 NONAME - pj_rbtree_insert @ 194 NONAME - pj_rbtree_last @ 195 NONAME - pj_rbtree_max_height @ 196 NONAME - pj_rbtree_min_height @ 197 NONAME - pj_rbtree_next @ 198 NONAME - pj_rbtree_prev @ 199 NONAME - pj_register_strerror @ 200 NONAME - pj_rwmutex_create @ 201 NONAME - pj_rwmutex_destroy @ 202 NONAME - pj_rwmutex_lock_read @ 203 NONAME - pj_rwmutex_lock_write @ 204 NONAME - pj_rwmutex_unlock_read @ 205 NONAME - pj_rwmutex_unlock_write @ 206 NONAME - pj_sem_create @ 207 NONAME - pj_sem_destroy @ 208 NONAME - pj_sem_post @ 209 NONAME - pj_sem_trywait @ 210 NONAME - pj_sem_wait @ 211 NONAME - pj_set_netos_error @ 212 NONAME - pj_set_os_error @ 213 NONAME - pj_shutdown @ 214 NONAME - pj_sock_accept @ 215 NONAME - pj_sock_bind @ 216 NONAME - pj_sock_bind_in @ 217 NONAME - pj_sock_close @ 218 NONAME - pj_sock_connect @ 219 NONAME - pj_sock_getpeername @ 220 NONAME - pj_sock_getsockname @ 221 NONAME - pj_sock_getsockopt @ 222 NONAME - pj_sock_listen @ 223 NONAME - pj_sock_recv @ 224 NONAME - pj_sock_recvfrom @ 225 NONAME - pj_sock_select @ 226 NONAME - pj_sock_send @ 227 NONAME - pj_sock_sendto @ 228 NONAME - pj_sock_setsockopt @ 229 NONAME - pj_sock_shutdown @ 230 NONAME - pj_sock_socket @ 231 NONAME - pj_sockaddr_in_init @ 232 NONAME - pj_sockaddr_in_set_str_addr @ 233 NONAME - pj_srand @ 234 NONAME - pj_str @ 235 NONAME - pj_strassign @ 236 NONAME - pj_strcat @ 237 NONAME - pj_strcat2 @ 238 NONAME - pj_strcmp @ 239 NONAME - pj_strcmp2 @ 240 NONAME - pj_strcpy @ 241 NONAME - pj_strcpy2 @ 242 NONAME - pj_strdup @ 243 NONAME - pj_strdup2 @ 244 NONAME - pj_strdup2_with_null @ 245 NONAME - pj_strdup3 @ 246 NONAME - pj_strdup_with_null @ 247 NONAME - pj_strerror @ 248 NONAME - pj_stricmp @ 249 NONAME - pj_stricmp2 @ 250 NONAME - pj_strltrim @ 251 NONAME - pj_strncmp @ 252 NONAME - pj_strncmp2 @ 253 NONAME - pj_strncpy @ 254 NONAME - pj_strncpy_with_null @ 255 NONAME - pj_strnicmp @ 256 NONAME - pj_strnicmp2 @ 257 NONAME - pj_strrtrim @ 258 NONAME - pj_strtoul @ 259 NONAME - pj_strtoul2 @ 260 NONAME - pj_strtrim @ 261 NONAME - pj_symbianos_poll @ 262 NONAME - pj_symbianos_set_params @ 263 NONAME - pj_thread_create @ 264 NONAME - pj_thread_destroy @ 265 NONAME - pj_thread_get_name @ 266 NONAME - pj_thread_join @ 267 NONAME - pj_thread_local_alloc @ 268 NONAME - pj_thread_local_free @ 269 NONAME - pj_thread_local_get @ 270 NONAME - pj_thread_local_set @ 271 NONAME - pj_thread_register @ 272 NONAME - pj_thread_resume @ 273 NONAME - pj_thread_sleep @ 274 NONAME - pj_thread_this @ 275 NONAME - pj_time_decode @ 276 NONAME - pj_time_encode @ 277 NONAME - pj_time_gmt_to_local @ 278 NONAME - pj_time_local_to_gmt @ 279 NONAME - pj_time_val_normalize @ 280 NONAME - pj_timer_entry_init @ 281 NONAME - pj_timer_heap_cancel @ 282 NONAME - pj_timer_heap_count @ 283 NONAME - pj_timer_heap_create @ 284 NONAME - pj_timer_heap_destroy @ 285 NONAME - pj_timer_heap_earliest_time @ 286 NONAME - pj_timer_heap_mem_size @ 287 NONAME - pj_timer_heap_poll @ 288 NONAME - pj_timer_heap_schedule @ 289 NONAME - pj_timer_heap_set_lock @ 290 NONAME - pj_timer_heap_set_max_timed_out_per_poll @ 291 NONAME - pj_unicode_to_ansi @ 292 NONAME - pj_utoa @ 293 NONAME - pj_utoa_pad @ 294 NONAME - platform_strerror @ 295 NONAME - snprintf @ 296 NONAME - vsnprintf @ 297 NONAME + pj_inet_ntop @ 113 NONAME + pj_inet_pton @ 114 NONAME + pj_init @ 115 NONAME + pj_ioqueue_accept @ 116 NONAME + pj_ioqueue_connect @ 117 NONAME + pj_ioqueue_create @ 118 NONAME + pj_ioqueue_destroy @ 119 NONAME + pj_ioqueue_get_user_data @ 120 NONAME + pj_ioqueue_is_pending @ 121 NONAME + pj_ioqueue_name @ 122 NONAME + pj_ioqueue_op_key_init @ 123 NONAME + pj_ioqueue_poll @ 124 NONAME + pj_ioqueue_post_completion @ 125 NONAME + pj_ioqueue_recv @ 126 NONAME + pj_ioqueue_recvfrom @ 127 NONAME + pj_ioqueue_register_sock @ 128 NONAME + pj_ioqueue_send @ 129 NONAME + pj_ioqueue_sendto @ 130 NONAME + pj_ioqueue_set_lock @ 131 NONAME + pj_ioqueue_set_user_data @ 132 NONAME + pj_ioqueue_unregister @ 133 NONAME + pj_leave_critical_section @ 134 NONAME + pj_list_erase @ 135 NONAME + pj_list_find_node @ 136 NONAME + pj_list_insert_after @ 137 NONAME + pj_list_insert_before @ 138 NONAME + pj_list_insert_nodes_after @ 139 NONAME + pj_list_insert_nodes_before @ 140 NONAME + pj_list_merge_first @ 141 NONAME + pj_list_merge_last @ 142 NONAME + pj_list_search @ 143 NONAME + pj_list_size @ 144 NONAME + pj_lock_acquire @ 145 NONAME + pj_lock_create_null_mutex @ 146 NONAME + pj_lock_create_recursive_mutex @ 147 NONAME + pj_lock_create_semaphore @ 148 NONAME + pj_lock_create_simple_mutex @ 149 NONAME + pj_lock_destroy @ 150 NONAME + pj_lock_release @ 151 NONAME + pj_lock_tryacquire @ 152 NONAME + pj_log @ 153 NONAME + pj_log_1 @ 154 NONAME + pj_log_2 @ 155 NONAME + pj_log_3 @ 156 NONAME + pj_log_4 @ 157 NONAME + pj_log_5 @ 158 NONAME + pj_log_get_decor @ 159 NONAME + pj_log_get_level @ 160 NONAME + pj_log_get_log_func @ 161 NONAME + pj_log_set_decor @ 162 NONAME + pj_log_set_level @ 163 NONAME + pj_log_set_log_func @ 164 NONAME + pj_log_write @ 165 NONAME + pj_mutex_create @ 166 NONAME + pj_mutex_create_recursive @ 167 NONAME + pj_mutex_create_simple @ 168 NONAME + pj_mutex_destroy @ 169 NONAME + pj_mutex_lock @ 170 NONAME + pj_mutex_trylock @ 171 NONAME + pj_mutex_unlock @ 172 NONAME + pj_ntohl @ 173 NONAME + pj_ntohs @ 174 NONAME + pj_pool_alloc @ 175 NONAME + pj_pool_alloc_from_block @ 176 NONAME + pj_pool_allocate_find @ 177 NONAME + pj_pool_calloc @ 178 NONAME + pj_pool_create @ 179 NONAME + pj_pool_create_int @ 180 NONAME + pj_pool_create_on_buf @ 181 NONAME + pj_pool_destroy_int @ 182 NONAME + pj_pool_factory_default_policy @ 183 NONAME + pj_pool_factory_get_default_policy @ 184 NONAME + pj_pool_get_capacity @ 185 NONAME + pj_pool_get_used_size @ 186 NONAME + pj_pool_getobjname @ 187 NONAME + pj_pool_init_int @ 188 NONAME + pj_pool_release @ 189 NONAME + pj_pool_reset @ 190 NONAME + pj_rand @ 191 NONAME + pj_rbtree_erase @ 192 NONAME + pj_rbtree_find @ 193 NONAME + pj_rbtree_first @ 194 NONAME + pj_rbtree_init @ 195 NONAME + pj_rbtree_insert @ 196 NONAME + pj_rbtree_last @ 197 NONAME + pj_rbtree_max_height @ 198 NONAME + pj_rbtree_min_height @ 199 NONAME + pj_rbtree_next @ 200 NONAME + pj_rbtree_prev @ 201 NONAME + pj_register_strerror @ 202 NONAME + pj_rwmutex_create @ 203 NONAME + pj_rwmutex_destroy @ 204 NONAME + pj_rwmutex_lock_read @ 205 NONAME + pj_rwmutex_lock_write @ 206 NONAME + pj_rwmutex_unlock_read @ 207 NONAME + pj_rwmutex_unlock_write @ 208 NONAME + pj_sem_create @ 209 NONAME + pj_sem_destroy @ 210 NONAME + pj_sem_post @ 211 NONAME + pj_sem_trywait @ 212 NONAME + pj_sem_wait @ 213 NONAME + pj_set_netos_error @ 214 NONAME + pj_set_os_error @ 215 NONAME + pj_shutdown @ 216 NONAME + pj_sock_accept @ 217 NONAME + pj_sock_bind @ 218 NONAME + pj_sock_bind_in @ 219 NONAME + pj_sock_close @ 220 NONAME + pj_sock_connect @ 221 NONAME + pj_sock_getpeername @ 222 NONAME + pj_sock_getsockname @ 223 NONAME + pj_sock_getsockopt @ 224 NONAME + pj_sock_listen @ 225 NONAME + pj_sock_recv @ 226 NONAME + pj_sock_recvfrom @ 227 NONAME + pj_sock_select @ 228 NONAME + pj_sock_send @ 229 NONAME + pj_sock_sendto @ 230 NONAME + pj_sock_setsockopt @ 231 NONAME + pj_sock_shutdown @ 232 NONAME + pj_sock_socket @ 233 NONAME + pj_sockaddr_in_init @ 234 NONAME + pj_sockaddr_in_set_str_addr @ 235 NONAME + pj_srand @ 236 NONAME + pj_str @ 237 NONAME + pj_strassign @ 238 NONAME + pj_strcat @ 239 NONAME + pj_strcat2 @ 240 NONAME + pj_strcmp @ 241 NONAME + pj_strcmp2 @ 242 NONAME + pj_strcpy @ 243 NONAME + pj_strcpy2 @ 244 NONAME + pj_strdup @ 245 NONAME + pj_strdup2 @ 246 NONAME + pj_strdup2_with_null @ 247 NONAME + pj_strdup3 @ 248 NONAME + pj_strdup_with_null @ 249 NONAME + pj_strerror @ 250 NONAME + pj_stricmp @ 251 NONAME + pj_stricmp2 @ 252 NONAME + pj_strltrim @ 253 NONAME + pj_strncmp @ 254 NONAME + pj_strncmp2 @ 255 NONAME + pj_strncpy @ 256 NONAME + pj_strncpy_with_null @ 257 NONAME + pj_strnicmp @ 258 NONAME + pj_strnicmp2 @ 259 NONAME + pj_strrtrim @ 260 NONAME + pj_strtoul @ 261 NONAME + pj_strtoul2 @ 262 NONAME + pj_strtrim @ 263 NONAME + pj_symbianos_poll @ 264 NONAME + pj_symbianos_set_params @ 265 NONAME + pj_thread_create @ 266 NONAME + pj_thread_destroy @ 267 NONAME + pj_thread_get_name @ 268 NONAME + pj_thread_get_os_handle @ 269 NONAME + pj_thread_is_registered @ 270 NONAME + pj_thread_join @ 271 NONAME + pj_thread_local_alloc @ 272 NONAME + pj_thread_local_free @ 273 NONAME + pj_thread_local_get @ 274 NONAME + pj_thread_local_set @ 275 NONAME + pj_thread_register @ 276 NONAME + pj_thread_resume @ 277 NONAME + pj_thread_sleep @ 278 NONAME + pj_thread_this @ 279 NONAME + pj_time_decode @ 280 NONAME + pj_time_encode @ 281 NONAME + pj_time_gmt_to_local @ 282 NONAME + pj_time_local_to_gmt @ 283 NONAME + pj_time_val_normalize @ 284 NONAME + pj_timer_entry_init @ 285 NONAME + pj_timer_heap_cancel @ 286 NONAME + pj_timer_heap_count @ 287 NONAME + pj_timer_heap_create @ 288 NONAME + pj_timer_heap_destroy @ 289 NONAME + pj_timer_heap_earliest_time @ 290 NONAME + pj_timer_heap_mem_size @ 291 NONAME + pj_timer_heap_poll @ 292 NONAME + pj_timer_heap_schedule @ 293 NONAME + pj_timer_heap_set_lock @ 294 NONAME + pj_timer_heap_set_max_timed_out_per_poll @ 295 NONAME + pj_unicode_to_ansi @ 296 NONAME + pj_utoa @ 297 NONAME + pj_utoa_pad @ 298 NONAME + platform_strerror @ 299 NONAME + snprintf @ 300 NONAME + vsnprintf @ 301 NONAME diff --git a/build.symbian/pjmediaU.def b/build.symbian/pjmediaU.def index 9d9ff36f..f1cfcc02 100644 --- a/build.symbian/pjmediaU.def +++ b/build.symbian/pjmediaU.def @@ -55,133 +55,135 @@ EXPORTS pjmedia_endpt_dump @ 54 NONAME pjmedia_endpt_get_codec_mgr @ 55 NONAME pjmedia_endpt_get_ioqueue @ 56 NONAME - pjmedia_ice_create @ 57 NONAME - pjmedia_ice_destroy @ 58 NONAME - pjmedia_ice_get_comp @ 59 NONAME - pjmedia_ice_get_init_status @ 60 NONAME - pjmedia_ice_init_ice @ 61 NONAME - pjmedia_ice_modify_sdp @ 62 NONAME - pjmedia_ice_simulate_lost @ 63 NONAME - pjmedia_ice_start_ice @ 64 NONAME - pjmedia_ice_start_init @ 65 NONAME - pjmedia_ice_stop_ice @ 66 NONAME - pjmedia_jbuf_create @ 67 NONAME - pjmedia_jbuf_destroy @ 68 NONAME - pjmedia_jbuf_get_frame @ 69 NONAME - pjmedia_jbuf_get_state @ 70 NONAME - pjmedia_jbuf_put_frame @ 71 NONAME - pjmedia_jbuf_reset @ 72 NONAME - pjmedia_jbuf_set_adaptive @ 73 NONAME - pjmedia_jbuf_set_fixed @ 74 NONAME - pjmedia_master_port_create @ 75 NONAME - pjmedia_master_port_destroy @ 76 NONAME - pjmedia_master_port_get_dport @ 77 NONAME - pjmedia_master_port_get_uport @ 78 NONAME - pjmedia_master_port_set_dport @ 79 NONAME - pjmedia_master_port_set_uport @ 80 NONAME - pjmedia_master_port_start @ 81 NONAME - pjmedia_master_port_stop @ 82 NONAME - pjmedia_mem_capture_create @ 83 NONAME - pjmedia_mem_capture_get_size @ 84 NONAME - pjmedia_mem_capture_set_eof_cb @ 85 NONAME - pjmedia_mem_player_create @ 86 NONAME - pjmedia_mem_player_set_eof_cb @ 87 NONAME - pjmedia_null_port_create @ 88 NONAME - pjmedia_plc_create @ 89 NONAME - pjmedia_plc_generate @ 90 NONAME - pjmedia_plc_save @ 91 NONAME - pjmedia_port_destroy @ 92 NONAME - pjmedia_port_get_frame @ 93 NONAME - pjmedia_port_info_init @ 94 NONAME - pjmedia_port_put_frame @ 95 NONAME - pjmedia_resample_create @ 96 NONAME - pjmedia_resample_destroy @ 97 NONAME - pjmedia_resample_get_input_size @ 98 NONAME - pjmedia_resample_port_create @ 99 NONAME - pjmedia_resample_run @ 100 NONAME - pjmedia_rtcp_build_rtcp @ 101 NONAME - pjmedia_rtcp_fini @ 102 NONAME - pjmedia_rtcp_get_ntp_time @ 103 NONAME - pjmedia_rtcp_init @ 104 NONAME - pjmedia_rtcp_rx_rtcp @ 105 NONAME - pjmedia_rtcp_rx_rtp @ 106 NONAME - pjmedia_rtcp_tx_rtp @ 107 NONAME - pjmedia_rtp_decode_rtp @ 108 NONAME - pjmedia_rtp_encode_rtp @ 109 NONAME - pjmedia_rtp_session_init @ 110 NONAME - pjmedia_rtp_session_update @ 111 NONAME - pjmedia_session_check_dtmf @ 112 NONAME - pjmedia_session_create @ 113 NONAME - pjmedia_session_destroy @ 114 NONAME - pjmedia_session_dial_dtmf @ 115 NONAME - pjmedia_session_enum_streams @ 116 NONAME - pjmedia_session_get_dtmf @ 117 NONAME - pjmedia_session_get_info @ 118 NONAME - pjmedia_session_get_port @ 119 NONAME - pjmedia_session_get_stream_stat @ 120 NONAME - pjmedia_session_info_from_sdp @ 121 NONAME - pjmedia_session_pause @ 122 NONAME - pjmedia_session_pause_stream @ 123 NONAME - pjmedia_session_resume @ 124 NONAME - pjmedia_session_resume_stream @ 125 NONAME - pjmedia_session_set_dtmf_callback @ 126 NONAME - pjmedia_silence_det_apply @ 127 NONAME - pjmedia_silence_det_create @ 128 NONAME - pjmedia_silence_det_detect @ 129 NONAME - pjmedia_silence_det_disable @ 130 NONAME - pjmedia_silence_det_set_adaptive @ 131 NONAME - pjmedia_silence_det_set_fixed @ 132 NONAME - pjmedia_silence_det_set_name @ 133 NONAME - pjmedia_silence_det_set_params @ 134 NONAME - pjmedia_snd_port_connect @ 135 NONAME - pjmedia_snd_port_create @ 136 NONAME - pjmedia_snd_port_create_player @ 137 NONAME - pjmedia_snd_port_create_rec @ 138 NONAME - pjmedia_snd_port_destroy @ 139 NONAME - pjmedia_snd_port_disconnect @ 140 NONAME - pjmedia_snd_port_get_ec_tail @ 141 NONAME - pjmedia_snd_port_get_port @ 142 NONAME - pjmedia_snd_port_get_snd_stream @ 143 NONAME - pjmedia_snd_port_set_ec @ 144 NONAME - pjmedia_splitcomb_create @ 145 NONAME - pjmedia_splitcomb_create_rev_channel @ 146 NONAME - pjmedia_splitcomb_set_channel @ 147 NONAME - pjmedia_stream_check_dtmf @ 148 NONAME - pjmedia_stream_create @ 149 NONAME - pjmedia_stream_destroy @ 150 NONAME - pjmedia_stream_dial_dtmf @ 151 NONAME - pjmedia_stream_get_dtmf @ 152 NONAME - pjmedia_stream_get_port @ 153 NONAME - pjmedia_stream_get_stat @ 154 NONAME - pjmedia_stream_get_transport @ 155 NONAME - pjmedia_stream_info_from_sdp @ 156 NONAME - pjmedia_stream_pause @ 157 NONAME - pjmedia_stream_resume @ 158 NONAME - pjmedia_stream_set_dtmf_callback @ 159 NONAME - pjmedia_stream_start @ 160 NONAME - pjmedia_strerror @ 161 NONAME - pjmedia_tonegen_create @ 162 NONAME - pjmedia_tonegen_create2 @ 163 NONAME - pjmedia_tonegen_get_digit_map @ 164 NONAME - pjmedia_tonegen_is_busy @ 165 NONAME - pjmedia_tonegen_play @ 166 NONAME - pjmedia_tonegen_play_digits @ 167 NONAME - pjmedia_tonegen_set_digit_map @ 168 NONAME - pjmedia_tonegen_stop @ 169 NONAME - pjmedia_transport_udp_attach @ 170 NONAME - pjmedia_transport_udp_close @ 171 NONAME - pjmedia_transport_udp_create @ 172 NONAME - pjmedia_transport_udp_create2 @ 173 NONAME - pjmedia_transport_udp_get_info @ 174 NONAME - pjmedia_transport_udp_simulate_lost @ 175 NONAME - pjmedia_wav_player_port_create @ 176 NONAME - pjmedia_wav_player_port_get_pos @ 177 NONAME - pjmedia_wav_player_port_set_pos @ 178 NONAME - pjmedia_wav_player_set_eof_cb @ 179 NONAME - pjmedia_wav_playlist_create @ 180 NONAME - pjmedia_wav_playlist_set_eof_cb @ 181 NONAME - pjmedia_wav_writer_port_create @ 182 NONAME - pjmedia_wav_writer_port_get_pos @ 183 NONAME - pjmedia_wav_writer_port_set_cb @ 184 NONAME - pjmedia_wave_hdr_file_to_host @ 185 NONAME - pjmedia_wave_hdr_host_to_file @ 186 NONAME + pjmedia_endpt_get_thread @ 57 NONAME + pjmedia_endpt_get_thread_count @ 58 NONAME + pjmedia_ice_create @ 59 NONAME + pjmedia_ice_destroy @ 60 NONAME + pjmedia_ice_get_comp @ 61 NONAME + pjmedia_ice_get_init_status @ 62 NONAME + pjmedia_ice_init_ice @ 63 NONAME + pjmedia_ice_modify_sdp @ 64 NONAME + pjmedia_ice_simulate_lost @ 65 NONAME + pjmedia_ice_start_ice @ 66 NONAME + pjmedia_ice_start_init @ 67 NONAME + pjmedia_ice_stop_ice @ 68 NONAME + pjmedia_jbuf_create @ 69 NONAME + pjmedia_jbuf_destroy @ 70 NONAME + pjmedia_jbuf_get_frame @ 71 NONAME + pjmedia_jbuf_get_state @ 72 NONAME + pjmedia_jbuf_put_frame @ 73 NONAME + pjmedia_jbuf_reset @ 74 NONAME + pjmedia_jbuf_set_adaptive @ 75 NONAME + pjmedia_jbuf_set_fixed @ 76 NONAME + pjmedia_master_port_create @ 77 NONAME + pjmedia_master_port_destroy @ 78 NONAME + pjmedia_master_port_get_dport @ 79 NONAME + pjmedia_master_port_get_uport @ 80 NONAME + pjmedia_master_port_set_dport @ 81 NONAME + pjmedia_master_port_set_uport @ 82 NONAME + pjmedia_master_port_start @ 83 NONAME + pjmedia_master_port_stop @ 84 NONAME + pjmedia_mem_capture_create @ 85 NONAME + pjmedia_mem_capture_get_size @ 86 NONAME + pjmedia_mem_capture_set_eof_cb @ 87 NONAME + pjmedia_mem_player_create @ 88 NONAME + pjmedia_mem_player_set_eof_cb @ 89 NONAME + pjmedia_null_port_create @ 90 NONAME + pjmedia_plc_create @ 91 NONAME + pjmedia_plc_generate @ 92 NONAME + pjmedia_plc_save @ 93 NONAME + pjmedia_port_destroy @ 94 NONAME + pjmedia_port_get_frame @ 95 NONAME + pjmedia_port_info_init @ 96 NONAME + pjmedia_port_put_frame @ 97 NONAME + pjmedia_resample_create @ 98 NONAME + pjmedia_resample_destroy @ 99 NONAME + pjmedia_resample_get_input_size @ 100 NONAME + pjmedia_resample_port_create @ 101 NONAME + pjmedia_resample_run @ 102 NONAME + pjmedia_rtcp_build_rtcp @ 103 NONAME + pjmedia_rtcp_fini @ 104 NONAME + pjmedia_rtcp_get_ntp_time @ 105 NONAME + pjmedia_rtcp_init @ 106 NONAME + pjmedia_rtcp_rx_rtcp @ 107 NONAME + pjmedia_rtcp_rx_rtp @ 108 NONAME + pjmedia_rtcp_tx_rtp @ 109 NONAME + pjmedia_rtp_decode_rtp @ 110 NONAME + pjmedia_rtp_encode_rtp @ 111 NONAME + pjmedia_rtp_session_init @ 112 NONAME + pjmedia_rtp_session_update @ 113 NONAME + pjmedia_session_check_dtmf @ 114 NONAME + pjmedia_session_create @ 115 NONAME + pjmedia_session_destroy @ 116 NONAME + pjmedia_session_dial_dtmf @ 117 NONAME + pjmedia_session_enum_streams @ 118 NONAME + pjmedia_session_get_dtmf @ 119 NONAME + pjmedia_session_get_info @ 120 NONAME + pjmedia_session_get_port @ 121 NONAME + pjmedia_session_get_stream_stat @ 122 NONAME + pjmedia_session_info_from_sdp @ 123 NONAME + pjmedia_session_pause @ 124 NONAME + pjmedia_session_pause_stream @ 125 NONAME + pjmedia_session_resume @ 126 NONAME + pjmedia_session_resume_stream @ 127 NONAME + pjmedia_session_set_dtmf_callback @ 128 NONAME + pjmedia_silence_det_apply @ 129 NONAME + pjmedia_silence_det_create @ 130 NONAME + pjmedia_silence_det_detect @ 131 NONAME + pjmedia_silence_det_disable @ 132 NONAME + pjmedia_silence_det_set_adaptive @ 133 NONAME + pjmedia_silence_det_set_fixed @ 134 NONAME + pjmedia_silence_det_set_name @ 135 NONAME + pjmedia_silence_det_set_params @ 136 NONAME + pjmedia_snd_port_connect @ 137 NONAME + pjmedia_snd_port_create @ 138 NONAME + pjmedia_snd_port_create_player @ 139 NONAME + pjmedia_snd_port_create_rec @ 140 NONAME + pjmedia_snd_port_destroy @ 141 NONAME + pjmedia_snd_port_disconnect @ 142 NONAME + pjmedia_snd_port_get_ec_tail @ 143 NONAME + pjmedia_snd_port_get_port @ 144 NONAME + pjmedia_snd_port_get_snd_stream @ 145 NONAME + pjmedia_snd_port_set_ec @ 146 NONAME + pjmedia_splitcomb_create @ 147 NONAME + pjmedia_splitcomb_create_rev_channel @ 148 NONAME + pjmedia_splitcomb_set_channel @ 149 NONAME + pjmedia_stream_check_dtmf @ 150 NONAME + pjmedia_stream_create @ 151 NONAME + pjmedia_stream_destroy @ 152 NONAME + pjmedia_stream_dial_dtmf @ 153 NONAME + pjmedia_stream_get_dtmf @ 154 NONAME + pjmedia_stream_get_port @ 155 NONAME + pjmedia_stream_get_stat @ 156 NONAME + pjmedia_stream_get_transport @ 157 NONAME + pjmedia_stream_info_from_sdp @ 158 NONAME + pjmedia_stream_pause @ 159 NONAME + pjmedia_stream_resume @ 160 NONAME + pjmedia_stream_set_dtmf_callback @ 161 NONAME + pjmedia_stream_start @ 162 NONAME + pjmedia_strerror @ 163 NONAME + pjmedia_tonegen_create @ 164 NONAME + pjmedia_tonegen_create2 @ 165 NONAME + pjmedia_tonegen_get_digit_map @ 166 NONAME + pjmedia_tonegen_is_busy @ 167 NONAME + pjmedia_tonegen_play @ 168 NONAME + pjmedia_tonegen_play_digits @ 169 NONAME + pjmedia_tonegen_set_digit_map @ 170 NONAME + pjmedia_tonegen_stop @ 171 NONAME + pjmedia_transport_udp_attach @ 172 NONAME + pjmedia_transport_udp_close @ 173 NONAME + pjmedia_transport_udp_create @ 174 NONAME + pjmedia_transport_udp_create2 @ 175 NONAME + pjmedia_transport_udp_get_info @ 176 NONAME + pjmedia_transport_udp_simulate_lost @ 177 NONAME + pjmedia_wav_player_port_create @ 178 NONAME + pjmedia_wav_player_port_get_pos @ 179 NONAME + pjmedia_wav_player_port_set_pos @ 180 NONAME + pjmedia_wav_player_set_eof_cb @ 181 NONAME + pjmedia_wav_playlist_create @ 182 NONAME + pjmedia_wav_playlist_set_eof_cb @ 183 NONAME + pjmedia_wav_writer_port_create @ 184 NONAME + pjmedia_wav_writer_port_get_pos @ 185 NONAME + pjmedia_wav_writer_port_set_cb @ 186 NONAME + pjmedia_wave_hdr_file_to_host @ 187 NONAME + pjmedia_wave_hdr_host_to_file @ 188 NONAME diff --git a/pjlib/include/pj/os.h b/pjlib/include/pj/os.h index 3529c463..f640df21 100644 --- a/pjlib/include/pj/os.h +++ b/pjlib/include/pj/os.h @@ -137,6 +137,19 @@ PJ_DECL(pj_status_t) pj_thread_register ( const char *thread_name, PJ_DECL(pj_bool_t) pj_thread_is_registered(void); +/** + * Return native handle from pj_thread_t for manipulation using native + * OS APIs. + * + * @param thread PJLIB thread descriptor. + * + * @return Native thread handle. For example, when the + * backend thread uses pthread, this function will + * return pointer to pthread_t, and on Windows, + * this function will return HANDLE. + */ +PJ_DECL(void*) pj_thread_get_os_handle(pj_thread_t *thread); + /** * Get thread name. * diff --git a/pjlib/src/pj/os_core_symbian.cpp b/pjlib/src/pj/os_core_symbian.cpp index 8f96ce09..f656cb68 100644 --- a/pjlib/src/pj/os_core_symbian.cpp +++ b/pjlib/src/pj/os_core_symbian.cpp @@ -446,6 +446,23 @@ PJ_DEF(pj_bool_t) pj_symbianos_poll(int priority, int ms_timeout) } +/* + * pj_thread_is_registered() + */ +PJ_DEF(pj_bool_t) pj_thread_is_registered(void) +{ + return PJ_FALSE; +} + +/* + * pj_thread_get_os_handle() + */ +PJ_DEF(void*) pj_thread_get_os_handle(pj_thread_t *thread) +{ + PJ_UNUSED_ARG(thread); + return NULL; +} + /* * pj_thread_register(..) */ diff --git a/pjlib/src/pj/os_core_unix.c b/pjlib/src/pj/os_core_unix.c index e901036a..5a246df5 100644 --- a/pjlib/src/pj/os_core_unix.c +++ b/pjlib/src/pj/os_core_unix.c @@ -238,6 +238,20 @@ PJ_DEF(pj_bool_t) pj_thread_is_registered(void) #endif } +/* + * Get native thread handle + */ +PJ_DEF(void*) pj_thread_get_os_handle(pj_thread_t *thread) +{ + PJ_ASSERT_RETURN(thread, NULL); + +#if PJ_HAS_THREADS + return &thread->thread; +#else + pj_assert("pj_thread_is_registered() called in non-threading mode!"); + return NULL; +#endif +} /* * pj_thread_register(..) diff --git a/pjlib/src/pj/os_core_win32.c b/pjlib/src/pj/os_core_win32.c index b9484ff5..fcacaf4b 100644 --- a/pjlib/src/pj/os_core_win32.c +++ b/pjlib/src/pj/os_core_win32.c @@ -244,6 +244,21 @@ PJ_DEF(pj_bool_t) pj_thread_is_registered(void) return pj_thread_local_get(thread_tls_id) != 0; } +/* + * Get native thread handle + */ +PJ_DEF(void*) pj_thread_get_os_handle(pj_thread_t *thread) +{ + PJ_ASSERT_RETURN(thread, NULL); + +#if PJ_HAS_THREADS + return thread->hthread; +#else + pj_assert("pj_thread_is_registered() called in non-threading mode!"); + return NULL; +#endif +} + /* * pj_thread_register(..) */ diff --git a/pjmedia/include/pjmedia/endpoint.h b/pjmedia/include/pjmedia/endpoint.h index feaaa93f..e4521efd 100644 --- a/pjmedia/include/pjmedia/endpoint.h +++ b/pjmedia/include/pjmedia/endpoint.h @@ -86,6 +86,26 @@ PJ_DECL(pj_status_t) pjmedia_endpt_destroy(pjmedia_endpt *endpt); PJ_DECL(pj_ioqueue_t*) pjmedia_endpt_get_ioqueue(pjmedia_endpt *endpt); +/** + * Get the number of worker threads on the media endpoint + * + * @param endpt The media endpoint instance. + * @return The number of worker threads on the media endpoint + */ +PJ_DECL(unsigned) pjmedia_endpt_get_thread_count(pjmedia_endpt *endpt); + +/** + * Get a reference to one of the worker threads of the media endpoint + * + * @param endpt The media endpoint instance. + * @param index The index of the thread: 0<= index < thread_cnt + * + * @return pj_thread_t or NULL + */ +PJ_DECL(pj_thread_t*) pjmedia_endpt_get_thread(pjmedia_endpt *endpt, + unsigned index); + + /** * Request the media endpoint to create pool. * diff --git a/pjmedia/src/pjmedia/endpoint.c b/pjmedia/src/pjmedia/endpoint.c index d9296f1c..dbeefe7f 100644 --- a/pjmedia/src/pjmedia/endpoint.c +++ b/pjmedia/src/pjmedia/endpoint.c @@ -226,6 +226,28 @@ PJ_DEF(pj_ioqueue_t*) pjmedia_endpt_get_ioqueue(pjmedia_endpt *endpt) return endpt->ioqueue; } +/** + * Get the number of worker threads in media endpoint. + */ +PJ_DEF(unsigned) pjmedia_endpt_get_thread_count(pjmedia_endpt *endpt) +{ + PJ_ASSERT_RETURN(endpt, 0); + return endpt->thread_cnt; +} + +/** + * Get a reference to one of the worker threads of the media endpoint + */ +PJ_DEF(pj_thread_t*) pjmedia_endpt_get_thread(pjmedia_endpt *endpt, + unsigned index) +{ + PJ_ASSERT_RETURN(endpt, NULL); + PJ_ASSERT_RETURN(index < endpt->thread_cnt, NULL); + + /* here should be an assert on index >= 0 < endpt->thread_cnt */ + + return endpt->thread[index]; +} /** * Worker thread proc. -- cgit v1.2.3