Ignore:
Timestamp:
Jul 19, 2011 3:42:28 AM (13 years ago)
Author:
nanang
Message:

Re #1326: Initial code integration from branch 2.0-dev to trunk as "2.0-pre-alpha-svn".

Location:
pjproject/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk

  • pjproject/trunk/pjmedia/src/pjmedia/port.c

    r3553 r3664  
    2222#include <pj/assert.h> 
    2323#include <pj/log.h> 
     24#include <pj/pool.h> 
    2425 
    2526#define THIS_FILE       "port.c" 
     
    3839                                            unsigned samples_per_frame) 
    3940{ 
     41#define USEC_IN_SEC (pj_uint64_t)1000000 
     42    unsigned frame_time_usec, avg_bps; 
     43 
    4044    pj_bzero(info, sizeof(*info)); 
    4145 
     46    info->signature = signature; 
     47    info->dir = PJMEDIA_DIR_ENCODING_DECODING; 
    4248    info->name = *name; 
    43     info->signature = signature; 
    44     info->type = PJMEDIA_TYPE_AUDIO; 
    45     info->has_info = PJ_TRUE; 
    46     info->need_info = PJ_FALSE; 
    47     info->pt = 0xFF; 
    48     info->encoding_name = pj_str("pcm"); 
    49     info->clock_rate = clock_rate; 
    50     info->channel_count = channel_count; 
    51     info->bits_per_sample = bits_per_sample; 
    52     info->samples_per_frame = samples_per_frame; 
    53     info->bytes_per_frame = samples_per_frame * bits_per_sample / 8; 
     49 
     50    frame_time_usec = (unsigned)(samples_per_frame * USEC_IN_SEC / 
     51                                 channel_count / clock_rate); 
     52    avg_bps = clock_rate * channel_count * bits_per_sample; 
     53 
     54    pjmedia_format_init_audio(&info->fmt, PJMEDIA_FORMAT_L16, clock_rate, 
     55                              channel_count, bits_per_sample, frame_time_usec, 
     56                              avg_bps, avg_bps); 
    5457 
    5558    return PJ_SUCCESS; 
    5659} 
    5760 
     61PJ_DEF(pj_status_t) pjmedia_port_info_init2( pjmedia_port_info *info, 
     62                                             const pj_str_t *name, 
     63                                             unsigned signature, 
     64                                             pjmedia_dir dir, 
     65                                             const pjmedia_format *fmt) 
     66{ 
     67    pj_bzero(info, sizeof(*info)); 
     68    info->signature = signature; 
     69    info->dir = dir; 
     70    info->name = *name; 
     71 
     72    pjmedia_format_copy(&info->fmt, fmt); 
     73 
     74    return PJ_SUCCESS; 
     75} 
     76 
     77/** 
     78 * Get a clock source from the port. 
     79 */ 
     80PJ_DEF(pjmedia_clock_src *) pjmedia_port_get_clock_src( pjmedia_port *port, 
     81                                                        pjmedia_dir dir ) 
     82{ 
     83    if (port && port->get_clock_src) 
     84        return port->get_clock_src(port, dir); 
     85    else 
     86        return NULL; 
     87} 
    5888 
    5989/** 
     
    78108 */ 
    79109PJ_DEF(pj_status_t) pjmedia_port_put_frame( pjmedia_port *port, 
    80                                             const pjmedia_frame *frame ) 
     110                                            pjmedia_frame *frame ) 
    81111{ 
    82112    PJ_ASSERT_RETURN(port && frame, PJ_EINVAL); 
     
    88118} 
    89119 
     120/* 
     121 * Get event publisher 
     122 */ 
     123PJ_DEF(pjmedia_event_publisher*) 
     124pjmedia_port_get_event_publisher(pjmedia_port *port) 
     125{ 
     126    PJ_ASSERT_RETURN(port, NULL); 
     127 
     128    if (port->get_event_pub) 
     129        return (*port->get_event_pub)(port); 
     130 
     131    return NULL; 
     132} 
    90133 
    91134/** 
Note: See TracChangeset for help on using the changeset viewer.