Changeset 223 for pjproject/trunk/pjmedia/src/pjmedia/conference.c
- Timestamp:
- Feb 23, 2006 1:49:28 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/trunk/pjmedia/src/pjmedia/conference.c
r222 r223 54 54 pjmedia_port_op rx_setting; /**< Can we receive from this port */ 55 55 pjmedia_port_op tx_setting; /**< Can we transmit to this port */ 56 int listener_cnt; /**< Number of listeners. */ 56 57 pj_bool_t *listeners; /**< Array of listeners. */ 57 58 pjmedia_vad *vad; /**< VAD for this port. */ … … 468 469 src_port->listeners[sink_slot] = 1; 469 470 ++conf->connect_cnt; 471 ++src_port->listener_cnt; 470 472 471 473 if (conf->connect_cnt == 1) … … 506 508 src_port->listeners[sink_slot] = 0; 507 509 --conf->connect_cnt; 510 --src_port->listener_cnt; 508 511 509 512 PJ_LOG(4,(THIS_FILE,"Port %.*s stop transmitting to port %.*s", … … 557 560 if (conf_port->listeners[port] != 0) { 558 561 --conf->connect_cnt; 562 --conf_port->listener_cnt; 559 563 conf_port->listeners[port] = 0; 560 564 } … … 564 568 conf_port = conf->ports[port]; 565 569 for (i=0; i<conf->max_ports; ++i) { 566 if (conf_port->listeners[i]) 570 if (conf_port->listeners[i]) { 567 571 --conf->connect_cnt; 572 --conf_port->listener_cnt; 573 } 568 574 } 569 575 … … 694 700 695 701 /* Get frame from this port. 696 * If port has rx_buffer , then get the frame from the rx_buffer697 * instead.702 * If port has rx_buffer (e.g. sound port), then get the frame 703 * from the rx_buffer instead. 698 704 */ 699 if (i==0 /*conf_port->cur_rx_buf*/) {705 if (i==0) { 700 706 pj_int16_t *rx_buf; 701 707 702 if (conf_port->rx_read == conf_port->rx_write) 703 conf_port->rx_read = (conf_port->rx_write+RX_BUF_COUNT-RX_BUF_COUNT/2) % RX_BUF_COUNT; 708 if (conf_port->rx_read == conf_port->rx_write) { 709 conf_port->rx_read = 710 (conf_port->rx_write+RX_BUF_COUNT-RX_BUF_COUNT/2) % 711 RX_BUF_COUNT; 712 } 704 713 705 714 rx_buf = conf_port->rx_buf[conf_port->rx_read]; … … 708 717 } 709 718 conf_port->rx_read = (conf_port->rx_read+1) % RX_BUF_COUNT; 719 710 720 } else { 711 721 pjmedia_frame frame; … … 715 725 frame.size = size; 716 726 pjmedia_port_get_frame(conf_port->port, &frame); 727 728 if (frame.type == PJMEDIA_FRAME_TYPE_NONE) 729 continue; 717 730 } 718 731 719 732 /* Skip (after receiving the frame) if this port is muted. */ 720 733 if (conf_port->rx_setting == PJMEDIA_PORT_MUTE) 734 continue; 735 736 /* Also skip if this port doesn't have listeners. */ 737 if (conf_port->listener_cnt == 0) 721 738 continue; 722 739 … … 728 745 729 746 /* Skip if we don't have signal. */ 730 if (silence) {731 TRACE_(("sil:%d ", i));732 continue;733 }747 //if (silence) { 748 // TRACE_(("sil:%d ", i)); 749 // continue; 750 //} 734 751 735 752 /* Convert the buffer to unsigned value */ … … 743 760 unsigned k; 744 761 745 if ( conf_port->listeners[j]== 0)762 if (listener == 0) 746 763 continue; 747 764 … … 768 785 if (!conf_port) 769 786 continue; 787 788 if (conf_port->tx_setting == PJMEDIA_PORT_MUTE) { 789 frame.type = PJMEDIA_FRAME_TYPE_NONE; 790 frame.buf = NULL; 791 frame.size = 0; 792 793 if (conf_port->port) 794 pjmedia_port_put_frame(conf_port->port, &frame); 795 796 continue; 797 798 } else if (conf_port->tx_setting != PJMEDIA_PORT_ENABLE) { 799 continue; 800 } 770 801 771 802 // … … 780 811 conf_port->tx_buf2 : conf_port->tx_buf1); 781 812 782 if (!conf_port->sources) { 783 for (j=0; j<conf->samples_per_frame; ++j) 784 target_buf[j] = 0; 785 } else { 813 if (conf_port->sources) { 786 814 for (j=0; j<conf->samples_per_frame; ++j) { 787 815 target_buf[j] = unsigned2pcm(conf_port->sum_buf[j] / conf_port->sources); … … 792 820 conf_port->cur_tx_buf = target_buf; 793 821 794 if (conf_port->tx_setting != PJMEDIA_PORT_ENABLE)795 continue;796 797 822 pj_memset(&frame, 0, sizeof(frame)); 798 frame.type = PJMEDIA_FRAME_TYPE_AUDIO; 823 if (conf_port->sources) 824 frame.type = PJMEDIA_FRAME_TYPE_AUDIO; 825 else 826 frame.type = PJMEDIA_FRAME_TYPE_NONE; 827 799 828 frame.buf = conf_port->cur_tx_buf; 800 829 frame.size = conf->samples_per_frame * conf->bits_per_sample / 8;
Note: See TracChangeset
for help on using the changeset viewer.