Changeset 3292


Ignore:
Timestamp:
Aug 24, 2010 10:45:01 AM (9 years ago)
Author:
nanang
Message:

Fix #1114:

  • Fixed bytes_per_frame calculation in stream port.
  • Fixed sample streamutil.c to use codec info/param for codec bandwidth calculation (was using bytes_per_frame info of stream port).
  • Doc fix for bytes_per_frame field in pjmedia_port_info.
Location:
pjproject/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjmedia/include/pjmedia/port.h

    r2506 r3292  
    219219    unsigned        bits_per_sample;    /**< Bits/sample                    */ 
    220220    unsigned        samples_per_frame;  /**< No of samples per frame.       */ 
    221     unsigned        bytes_per_frame;    /**< No of samples per frame.       */ 
     221    unsigned        bytes_per_frame;    /**< No of bytes per frame.         */ 
    222222} pjmedia_port_info; 
    223223 
  • pjproject/trunk/pjmedia/src/pjmedia/stream.c

    r3237 r3292  
    20312031                                          stream->codec_param.setting.frm_per_pkt / 
    20322032                                          1000; 
    2033     stream->port.info.bytes_per_frame = stream->codec_param.info.max_bps *  
    2034                                         stream->codec_param.info.frm_ptime * 
    2035                                         stream->codec_param.setting.frm_per_pkt / 
    2036                                         8 / 1000; 
    2037     if ((stream->codec_param.info.max_bps * stream->codec_param.info.frm_ptime * 
    2038         stream->codec_param.setting.frm_per_pkt) % 8000 != 0) 
    2039     { 
    2040         ++stream->port.info.bytes_per_frame; 
    2041     } 
    2042  
    20432033    stream->port.info.format.id = stream->codec_param.info.fmt_id; 
    20442034    if (stream->codec_param.info.fmt_id == PJMEDIA_FORMAT_L16) { 
     2035        /* Raw format */ 
     2036        stream->port.info.bytes_per_frame = stream->port.info.samples_per_frame * 
     2037                                            stream->port.info.bits_per_sample / 8; 
     2038 
    20452039        stream->port.put_frame = &put_frame; 
    20462040        stream->port.get_frame = &get_frame; 
    20472041    } else { 
     2042        /* Encoded format */ 
     2043        stream->port.info.bytes_per_frame = stream->codec_param.info.max_bps *  
     2044                                            stream->codec_param.info.frm_ptime * 
     2045                                            stream->codec_param.setting.frm_per_pkt / 
     2046                                            8 / 1000; 
     2047        if ((stream->codec_param.info.max_bps * stream->codec_param.info.frm_ptime * 
     2048            stream->codec_param.setting.frm_per_pkt) % 8000 != 0) 
     2049        { 
     2050            ++stream->port.info.bytes_per_frame; 
     2051        } 
    20482052        stream->port.info.format.bitrate = stream->codec_param.info.avg_bps; 
    20492053        stream->port.info.format.vad = (stream->codec_param.setting.vad != 0); 
     2054 
    20502055        stream->port.put_frame = &put_frame; 
    20512056        stream->port.get_frame = &get_frame_ext; 
  • pjproject/trunk/pjsip-apps/src/samples/streamutil.c

    r2408 r3292  
    9090 
    9191/* Prototype */ 
    92 static void print_stream_stat(pjmedia_stream *stream); 
     92static void print_stream_stat(pjmedia_stream *stream,  
     93                              const pjmedia_codec_param *codec_param); 
    9394 
    9495/* Prototype for LIBSRTP utility in file datatypes.c */ 
     
    274275    /* Default values */ 
    275276    const pjmedia_codec_info *codec_info; 
     277    pjmedia_codec_param codec_param; 
    276278    pjmedia_dir dir = PJMEDIA_DIR_DECODING; 
    277279    pj_sockaddr_in remote_addr; 
     
    488490        goto on_exit; 
    489491 
     492    /* Get codec default param for info */ 
     493    status = pjmedia_codec_mgr_get_default_param( 
     494                                    pjmedia_endpt_get_codec_mgr(med_endpt),  
     495                                    codec_info,  
     496                                    &codec_param); 
     497    /* Should be ok, as create_stream() above succeeded */ 
     498    pj_assert(status == PJ_SUCCESS); 
    490499 
    491500    /* Get the port interface of the stream */ 
     
    623632 
    624633        if (tmp[0] == 's') 
    625             print_stream_stat(stream); 
     634            print_stream_stat(stream, &codec_param); 
    626635        else if (tmp[0] == 'q') 
    627636            break; 
     
    724733 * Print stream statistics 
    725734 */ 
    726 static void print_stream_stat(pjmedia_stream *stream) 
     735static void print_stream_stat(pjmedia_stream *stream, 
     736                              const pjmedia_codec_param *codec_param) 
    727737{ 
    728738    char duration[80], last_update[80]; 
     
    753763        port->info.clock_rate, 
    754764        port->info.samples_per_frame * 1000 / port->info.clock_rate, 
    755         good_number(bps, port->info.bytes_per_frame * port->info.clock_rate / 
    756                     port->info.samples_per_frame), 
    757         good_number(ipbps, (port->info.bytes_per_frame+32) *  
    758                             port->info.clock_rate / port->info.clock_rate)); 
     765        good_number(bps, (codec_param->info.avg_bps+7)/8), 
     766        good_number(ipbps, ((codec_param->info.avg_bps+7)/8) +  
     767                           (40 * 1000 / 
     768                            codec_param->setting.frm_per_pkt / 
     769                            codec_param->info.frm_ptime))); 
    759770 
    760771    if (stat.rx.update_cnt == 0) 
Note: See TracChangeset for help on using the changeset viewer.