Changeset 2174


Ignore:
Timestamp:
Jul 24, 2008 3:30:44 PM (11 years ago)
Author:
nanang
Message:

Ticket #577: Initial source of sound device wrapper with APS

Location:
pjproject/trunk
Files:
3 added
10 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/build.symbian/bld.inf

    r1979 r2174  
     1#define SND_USE_NULL    0 
     2#define SND_USE_APS     0 
     3 
    14prj_platforms 
    25winscw 
     
    1114pjnath.mmp 
    1215pjsdp.mmp 
    13 //null_audio.mmp 
    14 symbian_audio.mmp 
    1516pjmedia.mmp 
    1617pjsip.mmp 
     
    2425libspeexcodec.mmp 
    2526 
     27/* Sound device impl */ 
     28#if SND_USE_NULL 
     29        null_audio.mmp 
     30#elif SND_USE_APS 
     31        symbian_audio_aps.mmp 
     32#else 
     33        symbian_audio.mmp 
     34#endif 
     35 
    2636/* Applications */ 
    2737//pjlib_test.mmp 
  • pjproject/trunk/build.symbian/symbian_ua.mmp

    r1979 r2174  
     1#define SND_USE_NULL    0 
     2#define SND_USE_APS     0 
     3 
    14TARGET          symbian_ua.exe 
    25TARGETTYPE      exe 
     
    811MACRO           PJ_SYMBIAN=1 
    912 
    10 #if defined(PJ_BUILD_DLL) 
    11         MACRO           PJ_DLL=1 
    12 #endif 
    13  
    1413// Source files 
    1514 
     
    1817 
    1918DOCUMENT ua.h 
     19 
     20START RESOURCE  symbian_ua_reg.rss 
     21        TARGETPATH      \private\10003a3f\apps 
     22END 
    2023 
    2124SYSTEMINCLUDE   ..\pjlib\include 
     
    2831SYSTEMINCLUDE   \epoc32\include\libc 
    2932 
    30 #if defined(PJ_BUILD_DLL) 
    31         LIBRARY         pjsua_lib.lib pjsip_ua.lib 
    32         LIBRARY         pjsip_simple.lib pjsip.lib pjsdp.lib pjmedia.lib 
    33         LIBRARY         pjnath.lib pjlib_util.lib pjlib.lib 
    34         LIBRARY         symbian_audio.lib libsrtp.lib 
    35         LIBRARY         libgsmcodec.lib libspeexcodec.lib 
     33STATICLIBRARY   pjsua_lib.lib pjsip_ua.lib 
     34STATICLIBRARY   pjsip_simple.lib pjsip.lib pjsdp.lib pjmedia.lib 
     35STATICLIBRARY   pjnath.lib pjlib_util.lib pjlib.lib 
     36STATICLIBRARY   libsrtp.lib 
     37STATICLIBRARY   libgsmcodec.lib libspeexcodec.lib 
     38 
     39#if SND_USE_NULL || defined(WINSCW) 
     40    STATICLIBRARY       null_audio.lib 
     41    CAPABILITY          NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment  
     42#elif SND_USE_APS 
     43    STATICLIBRARY       symbian_audio_aps.lib 
     44    LIBRARY             APSSession2.lib 
     45    CAPABILITY          NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment MultimediaDD 
     46    MACRO               PJMEDIA_SYM_SND_USE_APS=1 
    3647#else 
    37         STATICLIBRARY   pjsua_lib.lib pjsip_ua.lib 
    38         STATICLIBRARY   pjsip_simple.lib pjsip.lib pjsdp.lib pjmedia.lib 
    39         STATICLIBRARY   pjnath.lib pjlib_util.lib pjlib.lib 
    40         STATICLIBRARY   symbian_audio.lib libsrtp.lib 
    41         STATICLIBRARY   libgsmcodec.lib libspeexcodec.lib 
     48    STATICLIBRARY       symbian_audio.lib 
     49    LIBRARY             mediaclientaudiostream.lib 
     50    LIBRARY             mediaclientaudioinputstream.lib 
     51    CAPABILITY          NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment  
    4252#endif 
    4353 
     
    4757 
    4858LIBRARY         esock.lib insock.lib charconv.lib euser.lib estlib.lib  
    49 LIBRARY         mediaclientaudiostream.lib 
    50 LIBRARY         mediaclientaudioinputstream.lib 
    51  
    52 CAPABILITY      NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment  
    53  
    54 START RESOURCE  symbian_ua_reg.rss 
    55         TARGETPATH      \private\10003a3f\apps 
    56 END 
    5759 
    5860// The default 8KB seems to be insufficient with all bells and 
  • pjproject/trunk/build.symbian/symsndtest.mmp

    r1640 r2174  
     1#define SND_USE_NULL    0 
     2#define SND_USE_APS     0 
     3 
    14TARGET          symsndtest.exe 
    25TARGETTYPE      exe 
     
    811MACRO           PJ_SYMBIAN=1 
    912 
    10 #if defined(PJ_BUILD_DLL) 
    11         MACRO           PJ_DLL=1 
    12 #endif 
    13  
    1413// Test files 
    1514 
    1615SOURCE  app_main.cpp 
    1716SOURCE  main_symbian.cpp 
     17 
     18START RESOURCE  symsndtest_reg.rss 
     19        TARGETPATH      \private\10003a3f\apps 
     20END 
    1821 
    1922SYSTEMINCLUDE   ..\pjlib\include 
     
    2427 
    2528LIBRARY         charconv.lib euser.lib estlib.lib 
     29LIBRARY         esock.lib insock.lib 
     30STATICLIBRARY   pjlib.lib pjmedia.lib 
    2631 
    27 #if defined(PJ_BUILD_DLL) 
    28         LIBRARY         symbian_audio.lib pjlib.lib  
     32#if SND_USE_NULL || defined(WINSCW) 
     33    STATICLIBRARY       null_audio.lib 
     34    CAPABILITY          NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment  
     35#elif SND_USE_APS 
     36    SOURCEPATH                              ..\pjmedia\src\pjmedia  
     37    SOURCE                                  symbian_sound_aps.cpp  
     38 
     39    SYSTEMINCLUDE                           \epoc32\include\mmf\server  
     40    SYSTEMINCLUDE                           \epoc32\include\mmf\common  
     41    SYSTEMINCLUDE                           \epoc32\include\mda\common  
     42 
     43    //STATICLIBRARY     symbian_audio_aps.lib 
     44    LIBRARY             APSSession2.lib 
     45    CAPABILITY          NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment MultimediaDD 
    2946#else 
    30         STATICLIBRARY   symbian_audio.lib pjlib.lib  
     47    STATICLIBRARY       symbian_audio.lib 
     48    LIBRARY             mediaclientaudiostream.lib 
     49    LIBRARY             mediaclientaudioinputstream.lib 
     50    CAPABILITY          NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment  
    3151#endif 
    32  
    33 LIBRARY         esock.lib insock.lib 
    34 LIBRARY         mediaclientaudiostream.lib 
    35 LIBRARY         mediaclientaudioinputstream.lib 
    3652 
    3753#ifdef WINSCW 
    3854        STATICLIBRARY   eexe.lib ecrt0.lib 
    3955#endif 
    40  
    41 CAPABILITY      NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment  
    42  
    43 START RESOURCE  symsndtest_reg.rss 
    44         TARGETPATH      \private\10003a3f\apps 
    45 END 
    46  
  • pjproject/trunk/pjsip-apps/src/symbian_ua/main_symbian.cpp

    r1504 r2174  
    2727//  Global Variables 
    2828CConsoleBase* console; 
     29 
     30// Needed by APS 
     31TPtrC APP_UID = _L("A000000E"); 
    2932 
    3033 
  • pjproject/trunk/pjsip-apps/src/symbian_ua/ua.cpp

    r2018 r2174  
    327327    log_cfg.console_level = 4; 
    328328    log_cfg.cb = &log_writer; 
     329    //log_cfg.log_filename = pj_str("C:\\data\\symbian_ua.log"); 
    329330 
    330331    pjsua_media_config_default(&med_cfg); 
     
    332333    med_cfg.has_ioqueue = PJ_FALSE; 
    333334    med_cfg.clock_rate = 8000; 
     335#if defined(PJMEDIA_SYM_SND_USE_APS) && (PJMEDIA_SYM_SND_USE_APS==1) 
     336    med_cfg.audio_frame_ptime = 20; 
     337#else 
    334338    med_cfg.audio_frame_ptime = 40; 
     339#endif 
    335340    med_cfg.ec_tail_len = 0; 
    336341    med_cfg.enable_ice = USE_ICE; 
  • pjproject/trunk/pjsip-apps/src/symbian_ua_gui/group/symbian_ua_gui.mmp

    r1980 r2174  
     1#define SND_USE_NULL    0 
     2#define SND_USE_APS     0 
     3 
    14TARGET                  symbian_ua_gui.exe 
    25UID                        0x100039CE 0xEBD12EE4 
     
    3336LIBRARY                 etext.lib gdi.lib egul.lib insock.lib 
    3437LIBRARY                 ecom.lib inetprotutil.lib http.lib esock.lib 
     38LIBRARY                 charconv.lib estlib.lib  
    3539 
    3640STATICLIBRARY   pjsua_lib.lib pjsip_ua.lib 
    3741STATICLIBRARY   pjsip_simple.lib pjsip.lib pjsdp.lib pjmedia.lib 
    3842STATICLIBRARY   pjnath.lib pjlib_util.lib pjlib.lib 
    39 STATICLIBRARY   symbian_audio.lib libsrtp.lib 
     43STATICLIBRARY   libsrtp.lib 
    4044STATICLIBRARY   libgsmcodec.lib 
    4145STATICLIBRARY   libspeexcodec.lib 
    4246 
    43 LIBRARY         charconv.lib estlib.lib  
    44 LIBRARY         mediaclientaudiostream.lib 
    45 LIBRARY         mediaclientaudioinputstream.lib 
     47 
     48#if SND_USE_NULL || defined(WINSCW) 
     49    STATICLIBRARY       null_audio.lib 
     50    CAPABILITY          NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment  
     51#elif SND_USE_APS 
     52    STATICLIBRARY       symbian_audio_aps.lib 
     53    LIBRARY             APSSession2.lib 
     54    CAPABILITY          NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment MultimediaDD 
     55    MACRO               PJMEDIA_SYM_SND_USE_APS=1 
     56#else 
     57    STATICLIBRARY       symbian_audio.lib 
     58    LIBRARY             mediaclientaudiostream.lib 
     59    LIBRARY             mediaclientaudioinputstream.lib 
     60    CAPABILITY          NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment  
     61#endif 
    4662 
    4763LANG                            01 
     
    5773SOURCE symbian_ua_guiContainerView.cpp symbian_ua_guiContainer.cpp symbian_ua_guiAppUi.cpp symbian_ua_guiDocument.cpp symbian_ua_guiApplication.cpp symbian_ua_guiSettingItemList.cpp Symbian_ua_guiSettingItemListSets.cpp symbian_ua_guiSettingItemListView.cpp 
    5874SOURCE symbian_ua.cpp 
    59  
    60 CAPABILITY      NetworkServices LocalServices ReadUserData WriteUserData UserEnvironment  
  • pjproject/trunk/pjsip-apps/src/symbian_ua_gui/src/symbian_ua.cpp

    r2018 r2174  
    324324    med_cfg.has_ioqueue = PJ_FALSE; 
    325325    med_cfg.clock_rate = 8000; 
     326#if defined(PJMEDIA_SYM_SND_USE_APS) && (PJMEDIA_SYM_SND_USE_APS==1) 
     327    med_cfg.audio_frame_ptime = 20; 
     328#else 
    326329    med_cfg.audio_frame_ptime = 40; 
     330#endif 
    327331    med_cfg.ec_tail_len = 0; 
    328332    med_cfg.enable_ice = USE_ICE; 
  • pjproject/trunk/pjsip-apps/src/symbian_ua_gui/src/symbian_ua_guiApplication.cpp

    r1973 r2174  
    1717#endif 
    1818// ]]] end generated region [Generated Includes] 
     19 
     20 
     21// Needed by APS 
     22TPtrC APP_UID = _L("EBD12EE4"); 
    1923 
    2024/** 
  • pjproject/trunk/pjsip-apps/src/symsndtest/app_main.cpp

    r1641 r2174  
    1717 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA  
    1818 */ 
     19#include <pjmedia/delaybuf.h> 
    1920#include <pjmedia/sound.h> 
    2021#include <pj/errno.h> 
     
    2829#define CLOCK_RATE              8000 
    2930#define CHANNEL_COUNT           1 
    30 #define PTIME                   100 
    31 #define SAMPLES_PER_FRAME       (80) 
     31#define PTIME                   20 
     32#define SAMPLES_PER_FRAME       (CLOCK_RATE*PTIME/1000) 
    3233#define BITS_PER_SAMPLE         16 
    33 #define LOOPBACK_BUFF_COUNT 100 
    3434 
    3535extern CConsoleBase* console; 
     
    4040static pj_time_val t_start; 
    4141 
    42  
    43 static pj_int16_t buff_loopback[SAMPLES_PER_FRAME*LOOPBACK_BUFF_COUNT]; 
    44 static pj_uint32_t pointer_w, pointer_r; 
     42pj_pool_t *pool; 
     43pjmedia_delay_buf *delaybuf; 
    4544 
    4645/* Logging callback */ 
     
    7473    pj_log_set_log_func((void (*)(int,const char*,int)) &log_writer); 
    7574    pj_log_set_decor(PJ_LOG_HAS_NEWLINE); 
    76     pj_log_set_level(5); 
     75    pj_log_set_level(3); 
    7776     
    7877    /* Init pjlib */ 
     
    104103                   info->default_samples_per_sec));      
    105104    } 
     105 
     106    /* Create pool */ 
     107    pool = pj_pool_create(&cp.factory, THIS_FILE, 512, 512, NULL); 
     108    if (pool == NULL) { 
     109        app_perror("pj_pool_create()", status); 
     110        pj_caching_pool_destroy(&cp); 
     111        pj_shutdown(); 
     112        return status; 
     113    } 
     114 
     115    /* Init delay buffer */ 
     116    status = pjmedia_delay_buf_create(pool, THIS_FILE, CLOCK_RATE,  
     117                                      SAMPLES_PER_FRAME, CHANNEL_COUNT,  
     118                                      0, 0, &delaybuf); 
     119    if (status != PJ_SUCCESS) { 
     120        app_perror("pjmedia_delay_buf_create()", status); 
     121        //pj_caching_pool_destroy(&cp); 
     122        //pj_shutdown(); 
     123        //return status; 
     124    } 
    106125     
    107126    return PJ_SUCCESS; 
     
    117136    PJ_UNUSED_ARG(user_data); 
    118137    PJ_UNUSED_ARG(timestamp); 
    119     PJ_UNUSED_ARG(input); 
    120138    PJ_UNUSED_ARG(size); 
    121139 
    122     pj_memcpy(&buff_loopback[pointer_w*SAMPLES_PER_FRAME], input, size); 
     140    pjmedia_delay_buf_put(delaybuf, (pj_int16_t*)input); 
    123141 
    124142    if (size != SAMPLES_PER_FRAME*2) { 
    125143                PJ_LOG(3, (THIS_FILE, "Size captured = %u", 
    126144                           size)); 
    127                 pj_bzero(&buff_loopback[pointer_w*SAMPLES_PER_FRAME]+size/2, SAMPLES_PER_FRAME*2 - size); 
    128     } 
    129  
    130     if (++pointer_w >= LOOPBACK_BUFF_COUNT) { 
    131         pointer_w = 0; 
    132     } 
    133      
     145    } 
     146 
    134147    ++rec_cnt; 
    135148    return PJ_SUCCESS; 
     
    144157    PJ_UNUSED_ARG(user_data); 
    145158    PJ_UNUSED_ARG(timestamp); 
    146      
    147     //pj_bzero(output, size); 
    148     pj_memcpy(output, &buff_loopback[pointer_r*SAMPLES_PER_FRAME], SAMPLES_PER_FRAME*2); 
    149  
    150     if (++pointer_r >= LOOPBACK_BUFF_COUNT) { 
    151         pointer_r = 0; 
    152     } 
     159    PJ_UNUSED_ARG(size); 
     160     
     161    pjmedia_delay_buf_get(delaybuf, (pj_int16_t*)output); 
    153162     
    154163    ++play_cnt; 
     
    187196    pj_gettimeofday(&t_start); 
    188197 
     198    pjmedia_delay_buf_reset(delaybuf); 
     199 
    189200    status = pjmedia_snd_stream_start(strm); 
    190201    if (status != PJ_SUCCESS) { 
     
    195206    } 
    196207 
    197     pointer_w = LOOPBACK_BUFF_COUNT/2; 
    198     pointer_r = 0; 
    199      
    200208    return PJ_SUCCESS; 
    201209} 
     
    232240     
    233241    pjmedia_snd_deinit(); 
     242    pjmedia_delay_buf_destroy(delaybuf); 
     243    pj_pool_release(pool); 
    234244    pj_caching_pool_destroy(&cp); 
    235245    pj_shutdown(); 
     
    296306    PJ_LOG(3, (THIS_FILE, "\n\n" 
    297307            "Menu:\n" 
    298             "  b    Start bidir sound\n" 
    299             "  r    Start recorder\n" 
     308            "  a    Start bidir sound\n" 
     309            "  t    Start recorder\n" 
    300310            "  p    Start player\n" 
    301             "  c    Stop & close sound\n" 
    302             "  q    Quit\n")); 
     311            "  d    Stop & close sound\n" 
     312            "  w    Quit\n")); 
    303313} 
    304314 
     
    310320     
    311321    switch (kc) { 
    312     case 'q': 
     322    case 'w': 
    313323            asw_->AsyncStop(); 
    314324            reschedule = PJ_FALSE; 
    315325            break; 
    316     case 'b': 
     326    case 'a': 
    317327        snd_start(PJMEDIA_DIR_CAPTURE_PLAYBACK); 
    318328        break; 
    319     case 'r': 
     329    case 't': 
    320330        snd_start(PJMEDIA_DIR_CAPTURE); 
    321331        break; 
     
    323333        snd_start(PJMEDIA_DIR_PLAYBACK); 
    324334    break; 
    325     case 'c': 
     335    case 'd': 
    326336        snd_stop(); 
    327337        break; 
  • pjproject/trunk/pjsip-apps/src/symsndtest/main_symbian.cpp

    r1428 r2174  
    2727//  Global Variables 
    2828CConsoleBase* console; 
     29 
     30// Needed by APS 
     31TPtrC APP_UID = _L("A000000D"); 
    2932 
    3033int app_main(); 
Note: See TracChangeset for help on using the changeset viewer.