- Timestamp:
- Feb 5, 2009 12:28:38 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
pjproject/branches/projects/aps-direct/pjmedia/src/pjmedia/symbian_sound_aps.cpp
r2438 r2439 759 759 760 760 switch(strm->setting.format.u32) { 761 762 761 case PJMEDIA_FOURCC_G711U: 763 762 case PJMEDIA_FOURCC_G711A: 764 /* Add header. */ 765 buf.iBuffer.Append(1); 766 buf.iBuffer.Append(0); 767 768 /* Assume frame size is 10ms if frame size hasn't been known. */ 769 if (g711_frame_len == 0) 770 g711_frame_len = 80; 771 772 /* Call parent stream callback to get samples to play. */ 773 while (samples_ready < g711_frame_len) { 774 if (frame->samples_cnt == 0) { 775 frame->base.type = PJMEDIA_FRAME_TYPE_EXTENDED; 776 strm->play_cb(strm->user_data, 0, strm->play_buf, 777 strm->samples_per_frame<<1); 763 { 764 /* Add header. */ 765 buf.iBuffer.Append(1); 766 buf.iBuffer.Append(0); 767 768 /* Assume frame size is 10ms if frame size hasn't been known. */ 769 if (g711_frame_len == 0) 770 g711_frame_len = 80; 771 772 /* Call parent stream callback to get samples to play. */ 773 while (samples_ready < g711_frame_len) { 774 if (frame->samples_cnt == 0) { 775 frame->base.type = PJMEDIA_FRAME_TYPE_EXTENDED; 776 strm->play_cb(strm->user_data, 0, strm->play_buf, 777 strm->samples_per_frame<<1); 778 779 pj_assert(frame->base.type==PJMEDIA_FRAME_TYPE_EXTENDED || 780 frame->base.type==PJMEDIA_FRAME_TYPE_NONE); 781 } 782 783 if (frame->base.type == PJMEDIA_FRAME_TYPE_EXTENDED) { 784 pjmedia_frame_ext_subframe *sf; 785 unsigned samples_cnt; 786 787 sf = pjmedia_frame_ext_get_subframe(frame, 0); 788 samples_cnt = frame->samples_cnt / frame->subframe_cnt; 789 if (sf->data && sf->bitlen) 790 buf.iBuffer.Append((TUint8*)sf->data, sf->bitlen>>3); 791 else { 792 pj_uint8_t silence_code; 793 794 if (strm->setting.format.u32 == PJMEDIA_FOURCC_G711U) 795 silence_code = pjmedia_linear2ulaw(0); 796 else 797 silence_code = pjmedia_linear2alaw(0); 798 799 buf.iBuffer.AppendFill(silence_code, samples_cnt); 800 } 801 samples_ready += samples_cnt; 802 803 pjmedia_frame_ext_pop_subframes(frame, 1); 778 804 779 pj_assert(frame->base.type == PJMEDIA_FRAME_TYPE_EXTENDED || 780 frame->base.type == PJMEDIA_FRAME_TYPE_NONE); 781 } 782 783 if (frame->base.type == PJMEDIA_FRAME_TYPE_EXTENDED) { 784 pjmedia_frame_ext_subframe *sf; 785 unsigned samples_cnt; 786 787 sf = pjmedia_frame_ext_get_subframe(frame, 0); 788 samples_cnt = frame->samples_cnt / frame->subframe_cnt; 789 if (sf->data && sf->bitlen) 790 buf.iBuffer.Append((TUint8*)sf->data, sf->bitlen>>3); 791 else 792 buf.iBuffer.AppendFill(0, samples_cnt); 793 samples_ready += samples_cnt; 794 795 pjmedia_frame_ext_pop_subframes(frame, 1); 796 797 } else { /* PJMEDIA_FRAME_TYPE_NONE */ 798 buf.iBuffer.AppendFill(0, g711_frame_len - samples_ready); 799 samples_ready = g711_frame_len; 800 frame->samples_cnt = 0; 801 frame->subframe_cnt = 0; 805 } else { /* PJMEDIA_FRAME_TYPE_NONE */ 806 pj_uint8_t silence_code; 807 808 if (strm->setting.format.u32 == PJMEDIA_FOURCC_G711U) 809 silence_code = pjmedia_linear2ulaw(0); 810 else 811 silence_code = pjmedia_linear2alaw(0); 812 813 buf.iBuffer.AppendFill(silence_code, 814 g711_frame_len - samples_ready); 815 samples_ready = g711_frame_len; 816 frame->samples_cnt = 0; 817 frame->subframe_cnt = 0; 818 } 802 819 } 803 820 } … … 807 824 break; 808 825 } 809 810 unsigned tes = buf.iBuffer.Length();811 826 } 812 827
Note: See TracChangeset
for help on using the changeset viewer.