Changeset 1942 for pjproject/trunk/pjmedia/src/pjmedia/jbuf.c
- Timestamp:
- Apr 28, 2008 6:05:49 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/jbuf.c
r1922 r1942 68 68 int jb_status; // status is 'init' until the first 'put' operation 69 69 70 70 int jb_max_size; // Maximum frames buffered ever 71 71 }; 72 72 … … 369 369 jb->jb_status = JB_STATUS_INITIALIZING; 370 370 jb->jb_max_hist_level = 0; 371 jb->jb_max_size = 0; 371 372 372 373 jb_framelist_remove_head(&jb->jb_framelist, … … 384 385 static void jbuf_calculate_jitter(pjmedia_jbuf *jb) 385 386 { 386 int diff; 387 int diff, cur_size; 388 389 /* Update jb_max_size */ 390 cur_size = jb_framelist_size(&jb->jb_framelist); 391 if (cur_size > jb->jb_max_size) 392 jb->jb_max_size = cur_size; 387 393 388 394 /* Only apply burst-level calculation on PUT operation since if VAD is … … 414 420 415 421 TRACE__((jb->name.ptr,"jb updated(1), prefetch=%d, size=%d", 416 jb->jb_prefetch, jb_framelist_size(&jb->jb_framelist)));422 jb->jb_prefetch, cur_size)); 417 423 418 424 jb->jb_stable_hist = 0; … … 433 439 434 440 TRACE__((jb->name.ptr,"jb updated(2), prefetch=%d, size=%d", 435 jb->jb_prefetch, jb_framelist_size(&jb->jb_framelist)));441 jb->jb_prefetch, cur_size)); 436 442 } 437 443 … … 443 449 444 450 /* These code is used for shortening the delay in the jitter buffer. */ 445 diff = jb_framelist_size(&jb->jb_framelist)- jb->jb_prefetch;451 diff = cur_size - jb->jb_prefetch; 446 452 if (diff > SAFE_SHRINKING_DIFF) { 447 453 /* Shrink slowly */ … … 471 477 pj_size_t frame_size, 472 478 int frame_seq) 479 { 480 pjmedia_jbuf_put_frame2(jb, frame, frame_size, frame_seq, NULL); 481 } 482 483 PJ_DEF(void) pjmedia_jbuf_put_frame2(pjmedia_jbuf *jb, 484 const void *frame, 485 pj_size_t frame_size, 486 int frame_seq, 487 pj_bool_t *discarded) 473 488 { 474 489 pj_size_t min_frame_size; … … 494 509 495 510 while (jb_framelist_put_at(&jb->jb_framelist, 496 frame_seq,frame,min_frame_size) == PJ_FALSE)511 frame_seq,frame,min_frame_size) == PJ_FALSE) 497 512 { 498 513 jb_framelist_remove_head(&jb->jb_framelist, … … 503 518 jb->jb_prefetch_cnt += seq_diff; 504 519 520 if (discarded) 521 *discarded = PJ_FALSE; 505 522 } 506 523 else 507 524 { 508 jb_framelist_put_at(&jb->jb_framelist,frame_seq,frame,min_frame_size); 525 pj_bool_t res; 526 res = jb_framelist_put_at(&jb->jb_framelist,frame_seq,frame, 527 min_frame_size); 528 if (discarded) 529 *discarded = !res; 509 530 } 510 531 } … … 591 612 state->max_prefetch = jb->jb_max_prefetch; 592 613 state->size = jb_framelist_size(&jb->jb_framelist); 614 state->max_size = jb->jb_max_size; 593 615 594 616 return PJ_SUCCESS;
Note: See TracChangeset
for help on using the changeset viewer.