Ignore:
Timestamp:
Jul 19, 2011 3:42:28 AM (13 years ago)
Author:
nanang
Message:

Re #1326: Initial code integration from branch 2.0-dev to trunk as "2.0-pre-alpha-svn".

Location:
pjproject/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk

  • pjproject/trunk/pjmedia/src/pjmedia/sound_port.c

    r3553 r3664  
    4545    pjmedia_port        *port; 
    4646 
     47    pjmedia_clock_src    cap_clocksrc, 
     48                         play_clocksrc; 
     49 
    4750    unsigned             clock_rate; 
    4851    unsigned             channel_count; 
     
    7174    pj_status_t status; 
    7275 
     76    pjmedia_clock_src_update(&snd_port->play_clocksrc, &frame->timestamp); 
     77 
    7378    port = snd_port->port; 
    7479    if (port == NULL) 
     
    128133    pjmedia_port *port; 
    129134 
     135    pjmedia_clock_src_update(&snd_port->cap_clocksrc, &frame->timestamp); 
     136 
    130137    port = snd_port->port; 
    131138    if (port == NULL) 
     
    138145 
    139146    pjmedia_port_put_frame(port, frame); 
     147 
    140148 
    141149    return PJ_SUCCESS; 
     
    424432    pjmedia_snd_port *snd_port; 
    425433    pj_status_t status; 
     434    unsigned ptime_usec; 
    426435 
    427436    PJ_ASSERT_RETURN(pool && prm && p_port, PJ_EINVAL); 
     
    440449    pj_memcpy(&snd_port->aud_param, prm, sizeof(snd_port->aud_param)); 
    441450    snd_port->options = prm->options; 
     451 
     452    ptime_usec = prm->base.samples_per_frame * 1000 / prm->base.channel_count / 
     453                 prm->base.clock_rate * 1000; 
     454    pjmedia_clock_src_init(&snd_port->cap_clocksrc, PJMEDIA_TYPE_AUDIO, 
     455                           snd_port->clock_rate, ptime_usec); 
     456    pjmedia_clock_src_init(&snd_port->play_clocksrc, PJMEDIA_TYPE_AUDIO, 
     457                           snd_port->clock_rate, ptime_usec); 
    442458     
    443459    /* Start sound device immediately. 
     
    640656 
    641657/* 
     658 * Get clock source. 
     659 */ 
     660PJ_DEF(pjmedia_clock_src *) 
     661pjmedia_snd_port_get_clock_src( pjmedia_snd_port *snd_port, 
     662                                pjmedia_dir dir ) 
     663{ 
     664    return (dir == PJMEDIA_DIR_CAPTURE? &snd_port->cap_clocksrc: 
     665            &snd_port->play_clocksrc); 
     666} 
     667 
     668 
     669/* 
    642670 * Connect a port. 
    643671 */ 
     
    645673                                              pjmedia_port *port) 
    646674{ 
    647     pjmedia_port_info *pinfo; 
     675    pjmedia_audio_format_detail *afd; 
    648676 
    649677    PJ_ASSERT_RETURN(snd_port && port, PJ_EINVAL); 
     678 
     679    afd = pjmedia_format_get_audio_format_detail(&port->info.fmt, PJ_TRUE); 
    650680 
    651681    /* Check that port has the same configuration as the sound device 
    652682     * port. 
    653683     */ 
    654     pinfo = &port->info; 
    655     if (pinfo->clock_rate != snd_port->clock_rate) 
     684    if (afd->clock_rate != snd_port->clock_rate) 
    656685        return PJMEDIA_ENCCLOCKRATE; 
    657686 
    658     if (pinfo->samples_per_frame != snd_port->samples_per_frame) 
     687    if (PJMEDIA_AFD_SPF(afd) != snd_port->samples_per_frame) 
    659688        return PJMEDIA_ENCSAMPLESPFRAME; 
    660689 
    661     if (pinfo->channel_count != snd_port->channel_count) 
     690    if (afd->channel_count != snd_port->channel_count) 
    662691        return PJMEDIA_ENCCHANNEL; 
    663692 
    664     if (pinfo->bits_per_sample != snd_port->bits_per_sample) 
     693    if (afd->bits_per_sample != snd_port->bits_per_sample) 
    665694        return PJMEDIA_ENCBITS; 
    666695 
Note: See TracChangeset for help on using the changeset viewer.