Changeset 438 for pjproject/trunk/pjmedia/src/pjmedia/session.c
- Timestamp:
- May 13, 2006 10:46:23 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/session.c
r435 r438 65 65 pj_pool_t *pool, 66 66 pjmedia_endpt *endpt, 67 const pjmedia_sock_info *skinfo, 67 68 const pjmedia_sdp_session *local, 68 69 const pjmedia_sdp_session *remote, 69 70 unsigned stream_idx) 70 71 { 72 pjmedia_codec_mgr *mgr; 71 73 const pjmedia_sdp_attr *attr; 72 74 const pjmedia_sdp_media *local_m; … … 86 88 87 89 90 /* Get codec manager. */ 91 mgr = pjmedia_endpt_get_codec_mgr(endpt); 92 93 /* Keep SDP shortcuts */ 88 94 local_m = local->media[stream_idx]; 89 95 rem_m = remote->media[stream_idx]; … … 216 222 } 217 223 218 } else { 219 pjmedia_codec_mgr *mgr; 220 pjmedia_codec_info *p_info; 221 222 mgr = pjmedia_endpt_get_codec_mgr(endpt); 224 } else { 225 const pjmedia_codec_info *p_info; 223 226 224 227 status = pjmedia_codec_mgr_get_codec_info( mgr, pt, &p_info); … … 302 305 303 306 307 /* Now that we have codec info, get the codec param. */ 308 si->param = pj_pool_alloc(pool, sizeof(*si->param)); 309 status = pjmedia_codec_mgr_get_default_param(mgr, &si->fmt, si->param); 310 if (status != PJ_SUCCESS) 311 return status; 304 312 305 313 /* Get incomming payload type for telephone-events */ … … 335 343 } 336 344 345 /* Copy skinfo */ 346 if (skinfo) 347 si->sock_info = *skinfo; 337 348 338 349 /* Leave SSRC to random. */ 339 350 si->ssrc = pj_rand(); 340 351 341 /* Leave jitter buffer parameter. */ 342 352 /* Set default jitter buffer parameter. */ 353 si->jb_init = si->jb_max = si->jb_min_pre = si->jb_max_pre = -1; 354 355 return PJ_SUCCESS; 356 } 357 358 359 /* 360 * Initialize session info from SDP session descriptors. 361 */ 362 PJ_DEF(pj_status_t) 363 pjmedia_session_info_from_sdp( pj_pool_t *pool, 364 pjmedia_endpt *endpt, 365 unsigned max_streams, 366 pjmedia_session_info *si, 367 const pjmedia_sock_info skinfo[], 368 const pjmedia_sdp_session *local, 369 const pjmedia_sdp_session *remote) 370 { 371 unsigned i; 372 373 PJ_ASSERT_RETURN(pool && endpt && si && local && remote, PJ_EINVAL); 374 375 si->stream_cnt = max_streams; 376 if (si->stream_cnt > local->media_count) 377 si->stream_cnt = local->media_count; 378 379 for (i=0; i<si->stream_cnt; ++i) { 380 pj_status_t status; 381 382 status = pjmedia_stream_info_from_sdp( &si->stream_info[i], pool, 383 endpt, 384 (skinfo ? &skinfo[i] : NULL), 385 local, remote, i); 386 if (status != PJ_SUCCESS) 387 return status; 388 389 } 390 343 391 return PJ_SUCCESS; 344 392 } … … 349 397 */ 350 398 PJ_DEF(pj_status_t) pjmedia_session_create( pjmedia_endpt *endpt, 351 unsigned stream_cnt, 352 const pjmedia_sock_info skinfo[], 353 const pjmedia_sdp_session *local_sdp, 354 const pjmedia_sdp_session *rem_sdp, 399 const pjmedia_session_info *si, 355 400 void *user_data, 356 401 pjmedia_session **p_session ) … … 362 407 363 408 /* Verify arguments. */ 364 PJ_ASSERT_RETURN(endpt && stream_cnt && skinfo && 365 local_sdp && rem_sdp && p_session, PJ_EINVAL); 409 PJ_ASSERT_RETURN(endpt && si && p_session, PJ_EINVAL); 366 410 367 411 /* Create pool for the session. */ … … 374 418 session->pool = pool; 375 419 session->endpt = endpt; 376 session->stream_cnt = s tream_cnt;420 session->stream_cnt = si->stream_cnt; 377 421 session->user_data = user_data; 378 379 /* Stream count is the lower number of stream_cnt or SDP m= lines count */ 380 if (stream_cnt < local_sdp->media_count) 381 stream_cnt = local_sdp->media_count; 382 383 /* 384 * Create streams: 385 */ 386 for (i=0; i<(int)stream_cnt; ++i) { 387 388 pjmedia_stream_info *si = &session->stream_info[i]; 389 390 /* Build stream info based on media line in local SDP */ 391 status = pjmedia_stream_info_from_sdp(si, session->pool, endpt, 392 local_sdp, rem_sdp, i); 393 if (status != PJ_SUCCESS) 394 return status; 395 396 /* Assign sockinfo */ 397 si->sock_info = skinfo[i]; 398 } 422 423 /* Copy stream info (this simple memcpy may break sometime) */ 424 pj_memcpy(session->stream_info, si->stream_info, 425 si->stream_cnt * sizeof(pjmedia_session_info)); 399 426 400 427 /* 401 428 * Now create and start the stream! 402 429 */ 403 for (i=0; i<(int)stream_cnt; ++i) { 404 430 for (i=0; i<(int)si->stream_cnt; ++i) { 431 432 /* Create the stream */ 405 433 status = pjmedia_stream_create(endpt, session->pool, 406 434 &session->stream_info[i],
Note: See TracChangeset
for help on using the changeset viewer.