Changeset 3631


Ignore:
Timestamp:
Jul 13, 2011 2:37:14 AM (13 years ago)
Author:
ming
Message:

Re #1304: Video port refactoring: fix frame handling when renderer's role is active, change API to get/set clocksource to be unidir

Location:
pjproject/branches/projects/2.0-dev
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • pjproject/branches/projects/2.0-dev/pjmedia/include/pjmedia/vid_port.h

    r3617 r3631  
    142142 * 
    143143 * @param vid_port  The video port. 
    144  * @param dir       Video port's direction. 
    145144 * 
    146145 * @return          The clock source. 
    147146 */ 
    148147PJ_DECL(pjmedia_clock_src *) 
    149 pjmedia_vid_port_get_clock_src( pjmedia_vid_port *vid_port, 
    150                                 pjmedia_dir dir ); 
     148pjmedia_vid_port_get_clock_src( pjmedia_vid_port *vid_port ); 
    151149 
    152150/** 
     
    154152 * 
    155153 * @param vid_port  The video port. 
    156  * @param dir       Video port's direction. 
    157154 * @param clocksrc  The clock source. 
    158155 * 
     
    161158PJ_DECL(pj_status_t) 
    162159pjmedia_vid_port_set_clock_src( pjmedia_vid_port *vid_port, 
    163                                 pjmedia_dir dir, 
    164160                                pjmedia_clock_src *clocksrc ); 
    165161 
  • pjproject/branches/projects/2.0-dev/pjmedia/src/pjmedia/vid_port.c

    r3623 r3631  
    390390 
    391391PJ_DEF(pjmedia_clock_src *) 
    392 pjmedia_vid_port_get_clock_src( pjmedia_vid_port *vid_port, 
    393                                 pjmedia_dir dir ) 
     392pjmedia_vid_port_get_clock_src( pjmedia_vid_port *vid_port ) 
    394393{ 
    395394    PJ_ASSERT_RETURN(vid_port, NULL); 
     
    399398PJ_DECL(pj_status_t) 
    400399pjmedia_vid_port_set_clock_src( pjmedia_vid_port *vid_port, 
    401                                 pjmedia_dir dir, 
    402400                                pjmedia_clock_src *clocksrc) 
    403401{ 
     
    505503    PJ_LOG(4,(THIS_FILE, "Closing %s..", vp->dev_name.ptr)); 
    506504 
    507     if (vp->conv) { 
    508         pjmedia_converter_destroy(vp->conv); 
    509         vp->conv = NULL; 
    510     } 
    511505    if (vp->clock) { 
    512506        pjmedia_clock_destroy(vp->clock); 
     
    525519        pj_mutex_destroy(vp->frm_mutex); 
    526520        vp->frm_mutex = NULL; 
     521    } 
     522    if (vp->conv) { 
     523        pjmedia_converter_destroy(vp->conv); 
     524        vp->conv = NULL; 
    527525    } 
    528526    pj_pool_release(vp->pool); 
     
    723721        return; 
    724722     
    725     status = pjmedia_vid_dev_stream_put_frame(vp->strm, &frame); 
     723    if (frame.size > 0) 
     724        status = pjmedia_vid_dev_stream_put_frame(vp->strm, &frame); 
    726725} 
    727726 
     
    742741        if (vp->client_port) 
    743742            status = pjmedia_port_put_frame(vp->client_port,  
    744                                           (vp->conv? &frame_: frame)); 
     743                                            (vp->conv? &frame_: frame)); 
    745744        if (status != PJ_SUCCESS) 
    746745            return status; 
     
    767766    pj_status_t status = PJ_SUCCESS; 
    768767     
     768    pj_bzero(frame, sizeof(pjmedia_frame)); 
    769769    if (vp->role==ROLE_ACTIVE) { 
    770770        unsigned frame_ts = vp->clocksrc.clock_rate / 1000 * 
     
    877877        pjmedia_clock_src_update(&vp->clocksrc, NULL); 
    878878 
    879         frame = vp->frm_buf; 
    880         if (convert_frame(vp, vp->frm_buf, frame) != PJ_SUCCESS) 
     879        status = convert_frame(vp, vp->frm_buf, frame); 
     880        if (status != PJ_SUCCESS) 
    881881            return status; 
     882 
     883        if (!vp->conv) 
     884            pj_memcpy(frame, vp->frm_buf, sizeof(*frame)); 
    882885    } else { 
    883886        /* The stream is active while we are passive so we need to get the 
  • pjproject/branches/projects/2.0-dev/pjsip-apps/src/samples/aviplay.c

    r3617 r3631  
    407407            /* Synchronize video rendering and audio playback */ 
    408408            pjmedia_vid_port_set_clock_src( 
    409                 renderer, PJMEDIA_DIR_RENDER, 
     409                renderer, 
    410410                pjmedia_snd_port_get_clock_src( 
    411411                    snd_port, PJMEDIA_DIR_PLAYBACK)); 
Note: See TracChangeset for help on using the changeset viewer.