Ignore:
Timestamp:
Jun 6, 2008 12:15:23 PM (16 years ago)
Author:
nanang
Message:

Added field maximum bitrate to codec param, this is useful for providing safer frame size calculation, especially when peer's bitrate is unknown

File:
1 edited

Legend:

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

    r1983 r1985  
    12641264 
    12651265    channel->out_pkt_size = sizeof(pjmedia_rtp_hdr) +  
    1266                             stream->codec_param.info.avg_bps/8 *  
     1266                            stream->codec_param.info.max_bps *  
    12671267                            PJMEDIA_MAX_FRAME_DURATION_MS /  
    1268                             1000; 
     1268                            8 / 1000; 
    12691269 
    12701270    if (channel->out_pkt_size > PJMEDIA_MAX_MTU) 
     
    13741374    } 
    13751375 
     1376    /* Check for invalid max_bps. */ 
     1377    if (stream->codec_param.info.max_bps < stream->codec_param.info.avg_bps) 
     1378        stream->codec_param.info.max_bps = stream->codec_param.info.avg_bps; 
     1379 
    13761380    /* Check for invalid frame per packet. */ 
    13771381    if (stream->codec_param.setting.frm_per_pkt < 1) 
     
    13851389                                          stream->codec_param.setting.frm_per_pkt / 
    13861390                                          1000; 
    1387     stream->port.info.bytes_per_frame = stream->codec_param.info.avg_bps/8 *  
     1391    stream->port.info.bytes_per_frame = stream->codec_param.info.max_bps *  
    13881392                                        stream->codec_param.info.frm_ptime * 
    13891393                                        stream->codec_param.setting.frm_per_pkt / 
    1390                                         1000; 
     1394                                        8 / 1000; 
     1395    if ((stream->codec_param.info.max_bps * stream->codec_param.info.frm_ptime * 
     1396        stream->codec_param.setting.frm_per_pkt) % 8000 != 0) 
     1397    { 
     1398        ++stream->port.info.bytes_per_frame; 
     1399    } 
    13911400 
    13921401    /* Open the codec: */ 
     
    14421451    } 
    14431452 
    1444     /* Get the frame size: */ 
    1445  
    1446     stream->frame_size = ((stream->codec_param.info.avg_bps + 7) / 8) *  
    1447                           stream->codec_param.info.frm_ptime / 1000; 
    1448  
     1453    /* Get the frame size */ 
     1454    stream->frame_size = stream->codec_param.info.max_bps *  
     1455                         stream->codec_param.info.frm_ptime / 8 / 1000; 
     1456    if ((stream->codec_param.info.max_bps * stream->codec_param.info.frm_ptime)  
     1457        % 8000 != 0) 
     1458    { 
     1459        ++stream->frame_size; 
     1460    } 
    14491461 
    14501462#if defined(PJMEDIA_HANDLE_G722_MPEG_BUG) && (PJMEDIA_HANDLE_G722_MPEG_BUG!=0) 
Note: See TracChangeset for help on using the changeset viewer.