Ignore:
Timestamp:
Aug 5, 2016 7:26:18 AM (6 years ago)
Author:
riza
Message:

Re #1910: Implement option to regularly send video keyframe in the beginning of video call session.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/src/pjmedia/vid_stream.c

    r5234 r5410  
    155155 
    156156    pj_bool_t                force_keyframe;/**< Forced to encode keyframe? */ 
     157    unsigned                 num_keyframe;  /**< The number of keyframe needed  
     158                                                 to be sent, after the stream 
     159                                                 is created. */ 
     160    pj_timestamp             last_keyframe_tx;   
     161                                            /**< Timestamp of the last  
     162                                                 keyframe. */ 
     163 
    157164 
    158165#if defined(PJMEDIA_STREAM_ENABLE_KA) && PJMEDIA_STREAM_ENABLE_KA!=0 
     
    851858    frame_out.size = 0; 
    852859 
     860    /* Check if need to send keyframe. */ 
     861    if (stream->num_keyframe) { 
     862        unsigned elapse_time; 
     863        pj_timestamp now; 
     864 
     865        pj_get_timestamp(&now); 
     866 
     867        elapse_time = pj_elapsed_msec(&stream->last_keyframe_tx, &now); 
     868 
     869        if (elapse_time > stream->info.sk_cfg.interval) 
     870        { 
     871            stream->force_keyframe = PJ_TRUE; 
     872            if (--stream->num_keyframe) 
     873                stream->last_keyframe_tx = now; 
     874        } 
     875    } 
     876 
    853877    /* Init encoding option */ 
    854878    pj_bzero(&enc_opt, sizeof(enc_opt)); 
     
    14601484    stream->use_ka = info->use_ka; 
    14611485#endif 
     1486    stream->num_keyframe = info->sk_cfg.count; 
    14621487 
    14631488    /* Build random RTCP CNAME. CNAME has user@host format */ 
     
    20102035 
    20112036 
     2037/* 
     2038 * Initialize the video stream send keyframe with default settings. 
     2039 */ 
     2040PJ_DEF(void) 
     2041pjmedia_vid_stream_sk_config_default(pjmedia_vid_stream_sk_config *cfg) 
     2042{ 
     2043    pj_bzero(cfg, sizeof(*cfg)); 
     2044    cfg->count = PJMEDIA_VID_STREAM_START_KEYFRAME_CNT; 
     2045    cfg->interval = PJMEDIA_VID_STREAM_START_KEYFRAME_INTERVAL_MSEC; 
     2046} 
     2047 
     2048 
    20122049#endif /* PJMEDIA_HAS_VIDEO */ 
Note: See TracChangeset for help on using the changeset viewer.