Ignore:
Timestamp:
Jun 30, 2009 1:37:26 PM (11 years ago)
Author:
nanang
Message:

Ticket #909:

  • Added new audio device VAS for Symbian platform.
  • Updated symsndtest to use the latest audio device framework.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip-apps/src/symsndtest/app_main.cpp

    r2506 r2821  
    1818 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  
    1919 */ 
     20#include <pjmedia-audiodev/audiodev.h> 
    2021#include <pjmedia/delaybuf.h> 
    21 #include <pjmedia/sound.h> 
     22#include <pj/assert.h> 
    2223#include <pj/errno.h> 
    2324#include <pj/os.h> 
     
    3738 
    3839static pj_caching_pool cp; 
    39 static pjmedia_snd_stream *strm; 
     40static pjmedia_aud_stream *strm; 
    4041static unsigned rec_cnt, play_cnt; 
    4142static pj_time_val t_start; 
     
    8687 
    8788    /* Init sound subsystem */ 
    88     status = pjmedia_snd_init(&cp.factory); 
     89    status = pjmedia_aud_subsys_init(&cp.factory); 
    8990    if (status != PJ_SUCCESS) { 
    9091        app_perror("pjmedia_snd_init()", status); 
     
    9495    } 
    9596 
    96     count = pjmedia_snd_get_dev_count(); 
     97    count = pjmedia_aud_dev_count(); 
    9798    PJ_LOG(3,(THIS_FILE, "Device count: %d", count)); 
    9899    for (i=0; i<count; ++i) { 
    99         const pjmedia_snd_dev_info *info; 
    100  
    101         info = pjmedia_snd_get_dev_info(i); 
     100        pjmedia_aud_dev_info info; 
     101        pj_status_t status; 
     102 
     103        status = pjmedia_aud_dev_get_info(i, &info); 
     104        pj_assert(status == PJ_SUCCESS); 
    102105        PJ_LOG(3, (THIS_FILE, "%d: %s %d/%d %dHz", 
    103                    i, info->name, info->input_count, info->output_count, 
    104                    info->default_samples_per_sec)); 
     106                   i, info.name, info.input_count, info.output_count, 
     107                   info.default_samples_per_sec)); 
    105108    } 
    106109 
     
    131134/* Sound capture callback */ 
    132135static pj_status_t rec_cb(void *user_data, 
    133                           pj_uint32_t timestamp, 
    134                           void *input, 
    135                           unsigned size) 
     136                          pjmedia_frame *frame) 
    136137{ 
    137138    PJ_UNUSED_ARG(user_data); 
    138     PJ_UNUSED_ARG(timestamp); 
    139     PJ_UNUSED_ARG(size); 
    140  
    141     pjmedia_delay_buf_put(delaybuf, (pj_int16_t*)input); 
    142  
    143     if (size != SAMPLES_PER_FRAME*2) { 
     139 
     140    pjmedia_delay_buf_put(delaybuf, (pj_int16_t*)frame->buf); 
     141 
     142    if (frame->size != SAMPLES_PER_FRAME*2) { 
    144143                PJ_LOG(3, (THIS_FILE, "Size captured = %u", 
    145                            size)); 
     144                           frame->size)); 
    146145    } 
    147146 
     
    152151/* Play cb */ 
    153152static pj_status_t play_cb(void *user_data, 
    154                            pj_uint32_t timestamp, 
    155                            void *output, 
    156                            unsigned size) 
     153                           pjmedia_frame *frame) 
    157154{ 
    158155    PJ_UNUSED_ARG(user_data); 
    159     PJ_UNUSED_ARG(timestamp); 
    160     PJ_UNUSED_ARG(size); 
    161  
    162     pjmedia_delay_buf_get(delaybuf, (pj_int16_t*)output); 
     156 
     157    pjmedia_delay_buf_get(delaybuf, (pj_int16_t*)frame->buf); 
     158    frame->size = SAMPLES_PER_FRAME*2; 
     159    frame->type = PJMEDIA_FRAME_TYPE_AUDIO; 
    163160 
    164161    ++play_cnt; 
     
    169166static pj_status_t snd_start(unsigned flag) 
    170167{ 
     168    pjmedia_aud_param param; 
    171169    pj_status_t status; 
    172170 
     
    176174    } 
    177175 
    178     if (flag==PJMEDIA_DIR_CAPTURE_PLAYBACK) 
    179         status = pjmedia_snd_open(-1, -1, CLOCK_RATE, CHANNEL_COUNT, 
    180                                   SAMPLES_PER_FRAME, BITS_PER_SAMPLE, 
    181                                   &rec_cb, &play_cb, NULL, &strm); 
    182     else if (flag==PJMEDIA_DIR_CAPTURE) 
    183         status = pjmedia_snd_open_rec(-1, CLOCK_RATE, CHANNEL_COUNT, 
    184                                       SAMPLES_PER_FRAME, BITS_PER_SAMPLE, 
    185                                       &rec_cb, NULL, &strm); 
    186     else 
    187         status = pjmedia_snd_open_player(-1, CLOCK_RATE, CHANNEL_COUNT, 
    188                                          SAMPLES_PER_FRAME, BITS_PER_SAMPLE, 
    189                                          &play_cb, NULL, &strm); 
    190  
     176    pjmedia_aud_dev_default_param(0, &param); 
     177    param.channel_count = CHANNEL_COUNT; 
     178    param.clock_rate = CLOCK_RATE; 
     179    param.samples_per_frame = SAMPLES_PER_FRAME; 
     180    param.dir = (pjmedia_dir) flag; 
     181 
     182    status = pjmedia_aud_stream_create(&param, &rec_cb, &play_cb, NULL, &strm); 
    191183    if (status != PJ_SUCCESS) { 
    192184        app_perror("snd open", status); 
     
    199191    pjmedia_delay_buf_reset(delaybuf); 
    200192 
    201     status = pjmedia_snd_stream_start(strm); 
     193    status = pjmedia_aud_stream_start(strm); 
    202194    if (status != PJ_SUCCESS) { 
    203195        app_perror("snd start", status); 
    204         pjmedia_snd_stream_close(strm); 
     196        pjmedia_aud_stream_destroy(strm); 
    205197        strm = NULL; 
    206198        return status; 
     
    221213    } 
    222214 
    223     status = pjmedia_snd_stream_stop(strm); 
     215    status = pjmedia_aud_stream_stop(strm); 
    224216    if (status != PJ_SUCCESS) { 
    225217        app_perror("snd failed to stop", status); 
    226218    } 
    227     status = pjmedia_snd_stream_close(strm); 
     219    status = pjmedia_aud_stream_destroy(strm); 
    228220    strm = NULL; 
    229221 
     
    244236        snd_stop(); 
    245237 
    246     pjmedia_snd_deinit(); 
     238    pjmedia_aud_subsys_shutdown(); 
    247239    pjmedia_delay_buf_destroy(delaybuf); 
    248240    pj_pool_release(pool); 
Note: See TracChangeset for help on using the changeset viewer.