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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 
Note: See TracChangeset for help on using the changeset viewer.