diff options
author | Benny Prijono <bennylp@teluu.com> | 2007-05-02 13:19:33 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2007-05-02 13:19:33 +0000 |
commit | 4b5a9b5ec7f7dd042d7fb40bccdf4ee44d28122b (patch) | |
tree | c8728026a511ac2e105bd0f9c944a42d11882fc9 | |
parent | 8bb2ecb06d7e994b4b5c94af831fb02c465ecb49 (diff) |
Fixed nullsound in Symbian
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1243 74dad513-b988-da41-8d7b-12977e46ad98
-rw-r--r-- | build.symbian/pjproject.cww | 115 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/nullsound.c | 115 | ||||
-rw-r--r-- | pjsip-apps/src/symbian_ua/ua.cpp | 1 |
3 files changed, 182 insertions, 49 deletions
diff --git a/build.symbian/pjproject.cww b/build.symbian/pjproject.cww index 112e0d76..70321762 100644 --- a/build.symbian/pjproject.cww +++ b/build.symbian/pjproject.cww @@ -315,10 +315,9 @@ <SESSION>-1</SESSION>
<EDOCTYPE>1</EDOCTYPE>
<PATH USERELATIVEPATHS = "true">..\pjsip-apps\src\symbian_ua\ua.cpp</PATH>
- <MAXIMIZED>true</MAXIMIZED>
<FRAMELOC>
<X>4</X>
- <Y>4</Y>
+ <Y>23</Y>
</FRAMELOC>
<FRAMESIZE>
<W>731</W>
@@ -338,6 +337,109 @@ </DOCKINFO>
</WINDOW>
<WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>1</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">..\pjsip\src\pjsua-lib\pjsua_media.c</PATH>
+ <FRAMELOC>
+ <X>10</X>
+ <Y>40</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>630</W>
+ <H>410</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>0</STATUS>
+ <ROW></ROW>
+ <COLUMN></COLUMN>
+ <DOCKBARID></DOCKBARID>
+ <PCTWIDTH></PCTWIDTH>
+ <HGT></HGT>
+ <GROUPID>
+ <GIDHIGHPART></GIDHIGHPART>
+ <GIDLOWPART></GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>1</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">..\pjmedia\src\pjmedia\nullsound.c</PATH>
+ <FRAMELOC>
+ <X>10</X>
+ <Y>40</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>630</W>
+ <H>410</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>0</STATUS>
+ <ROW></ROW>
+ <COLUMN></COLUMN>
+ <DOCKBARID></DOCKBARID>
+ <PCTWIDTH></PCTWIDTH>
+ <HGT></HGT>
+ <GROUPID>
+ <GIDHIGHPART></GIDHIGHPART>
+ <GIDLOWPART></GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>1</EDOCTYPE>
+ <PATH USERELATIVEPATHS = "true">..\pjmedia\include\pjmedia\sound.h</PATH>
+ <FRAMELOC>
+ <X>10</X>
+ <Y>40</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>630</W>
+ <H>410</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>0</STATUS>
+ <ROW></ROW>
+ <COLUMN></COLUMN>
+ <DOCKBARID></DOCKBARID>
+ <PCTWIDTH></PCTWIDTH>
+ <HGT></HGT>
+ <GROUPID>
+ <GIDHIGHPART></GIDHIGHPART>
+ <GIDLOWPART></GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ </WINDOW>
+ <WINDOW>
+ <SESSION>-1</SESSION>
+ <EDOCTYPE>20</EDOCTYPE>
+ <MAXIMIZED>true</MAXIMIZED>
+ <FRAMELOC>
+ <X>0</X>
+ <Y>0</Y>
+ </FRAMELOC>
+ <FRAMESIZE>
+ <W>824</W>
+ <H>1521</H>
+ </FRAMESIZE>
+ <DOCKINFO>
+ <STATUS>0</STATUS>
+ <ROW></ROW>
+ <COLUMN></COLUMN>
+ <DOCKBARID></DOCKBARID>
+ <PCTWIDTH></PCTWIDTH>
+ <HGT></HGT>
+ <GROUPID>
+ <GIDHIGHPART></GIDHIGHPART>
+ <GIDLOWPART></GIDLOWPART>
+ </GROUPID>
+ </DOCKINFO>
+ <SYMBOLICSWINSETTINGS EXECUTABLEPATH = "C:\Symbian\9.1\S60_3rd\EPOC32\RELEASE\WINSCW\UDEB\euser.dll" MACHINENAME = "Local Windows PC"/>
+ <SYMBOLICSWINSETTINGS EXECUTABLEPATH = "C:\Symbian\9.1\S60_3rd\EPOC32\RELEASE\WINSCW\UDEB\ekern.exe" MACHINENAME = "Local Windows PC"/>
+ <SYMBOLICSWINSETTINGS EXECUTABLEPATH = "C:\WINDOWS\system32\ntdll.dll" MACHINENAME = "Local Windows PC"/>
+ </WINDOW>
+ <WINDOW>
<SESSION>-2147483648</SESSION>
<EDOCTYPE>36</EDOCTYPE>
<DEFAULT>true</DEFAULT>
@@ -371,8 +473,8 @@ <Y>23</Y>
</FRAMELOC>
<FRAMESIZE>
- <W>792</W>
- <H>1413</H>
+ <W>816</W>
+ <H>1494</H>
</FRAMESIZE>
<DOCKINFO>
<STATUS>0</STATUS>
@@ -386,12 +488,13 @@ <GIDLOWPART></GIDLOWPART>
</GROUPID>
</DOCKINFO>
+ <SYMBOLICSWINSETTINGS EXECUTABLEPATH = "C:\Symbian\9.1\S60_3rd\EPOC32\RELEASE\WINSCW\UDEB\euser.dll" MACHINENAME = "Local Windows PC"/>
+ <SYMBOLICSWINSETTINGS EXECUTABLEPATH = "C:\Symbian\9.1\S60_3rd\EPOC32\RELEASE\WINSCW\UDEB\ekern.exe" MACHINENAME = "Local Windows PC"/>
+ <SYMBOLICSWINSETTINGS EXECUTABLEPATH = "C:\WINDOWS\system32\ntdll.dll" MACHINENAME = "Local Windows PC"/>
</WINDOW>
<WINDOW>
<SESSION>-2147483648</SESSION>
<EDOCTYPE>23</EDOCTYPE>
- <DEFAULT>true</DEFAULT>
- <MAXIMIZED>true</MAXIMIZED>
<FRAMELOC>
<X>6</X>
<Y>81</Y>
diff --git a/pjmedia/src/pjmedia/nullsound.c b/pjmedia/src/pjmedia/nullsound.c index 7512fc5e..2e95c3c2 100644 --- a/pjmedia/src/pjmedia/nullsound.c +++ b/pjmedia/src/pjmedia/nullsound.c @@ -19,6 +19,7 @@ #include <pjmedia/sound.h> #include <pjmedia/errno.h> #include <pj/assert.h> +#include <pj/pool.h> #if PJMEDIA_SOUND_IMPLEMENTATION==PJMEDIA_SOUND_NULL_SOUND @@ -30,10 +31,32 @@ static pjmedia_snd_dev_info null_info = 8000 }; +static pj_pool_factory *pool_factory; + +struct pjmedia_snd_stream +{ + pj_pool_t *pool; + pjmedia_dir dir; + int rec_id; + int play_id; + unsigned clock_rate; + unsigned channel_count; + unsigned samples_per_frame; + unsigned bits_per_sample; + pjmedia_snd_rec_cb rec_cb; + pjmedia_snd_play_cb play_cb; + void *user_data; +}; + PJ_DEF(pj_status_t) pjmedia_snd_init(pj_pool_factory *factory) { - PJ_UNUSED_ARG(factory); + pool_factory = factory; + return PJ_SUCCESS; +} + +PJ_DEF(pj_status_t) pjmedia_snd_deinit(void) +{ return PJ_SUCCESS; } @@ -57,17 +80,9 @@ PJ_DEF(pj_status_t) pjmedia_snd_open_rec( int index, void *user_data, pjmedia_snd_stream **p_snd_strm) { - PJ_UNUSED_ARG(index); - PJ_UNUSED_ARG(clock_rate); - PJ_UNUSED_ARG(channel_count); - PJ_UNUSED_ARG(samples_per_frame); - PJ_UNUSED_ARG(bits_per_sample); - PJ_UNUSED_ARG(rec_cb); - PJ_UNUSED_ARG(user_data); - - *p_snd_strm = (void*)1; - - return PJ_SUCCESS; + return pjmedia_snd_open(index, -2, clock_rate, channel_count, + samples_per_frame, bits_per_sample, + rec_cb, NULL, user_data, p_snd_strm); } PJ_DEF(pj_status_t) pjmedia_snd_open_player( int index, @@ -79,17 +94,9 @@ PJ_DEF(pj_status_t) pjmedia_snd_open_player( int index, void *user_data, pjmedia_snd_stream **p_snd_strm ) { - PJ_UNUSED_ARG(index); - PJ_UNUSED_ARG(clock_rate); - PJ_UNUSED_ARG(channel_count); - PJ_UNUSED_ARG(samples_per_frame); - PJ_UNUSED_ARG(bits_per_sample); - PJ_UNUSED_ARG(play_cb); - PJ_UNUSED_ARG(user_data); - - *p_snd_strm = (void*)1; - - return PJ_SUCCESS; + return pjmedia_snd_open(-2, index, clock_rate, channel_count, + samples_per_frame, bits_per_sample, + NULL, play_cb, user_data, p_snd_strm); } PJ_DEF(pj_status_t) pjmedia_snd_open( int rec_id, @@ -103,17 +110,35 @@ PJ_DEF(pj_status_t) pjmedia_snd_open( int rec_id, void *user_data, pjmedia_snd_stream **p_snd_strm) { - PJ_UNUSED_ARG(rec_id); - PJ_UNUSED_ARG(play_id); - PJ_UNUSED_ARG(clock_rate); - PJ_UNUSED_ARG(channel_count); - PJ_UNUSED_ARG(samples_per_frame); - PJ_UNUSED_ARG(bits_per_sample); - PJ_UNUSED_ARG(rec_cb); - PJ_UNUSED_ARG(play_cb); - PJ_UNUSED_ARG(user_data); - - *p_snd_strm = (void*)1; + pj_pool_t *pool; + pjmedia_snd_stream *snd_strm; + + pool = pj_pool_create(pool_factory, NULL, 128, 128, NULL); + snd_strm = PJ_POOL_ZALLOC_T(pool, pjmedia_snd_stream); + + snd_strm->pool = pool; + + if (rec_id == -1) rec_id = 0; + if (play_id == -1) play_id = 0; + + if (rec_id != -2 && play_id != -2) + snd_strm->dir = PJMEDIA_DIR_CAPTURE_PLAYBACK; + else if (rec_id != -2) + snd_strm->dir = PJMEDIA_DIR_CAPTURE; + else if (play_id != -2) + snd_strm->dir = PJMEDIA_DIR_PLAYBACK; + + snd_strm->rec_id = rec_id; + snd_strm->play_id = play_id; + snd_strm->clock_rate = clock_rate; + snd_strm->channel_count = channel_count; + snd_strm->samples_per_frame = samples_per_frame; + snd_strm->bits_per_sample = bits_per_sample; + snd_strm->rec_cb = rec_cb; + snd_strm->play_cb = play_cb; + snd_strm->user_data = user_data; + + *p_snd_strm = snd_strm; return PJ_SUCCESS; } @@ -135,21 +160,25 @@ PJ_DEF(pj_status_t) pjmedia_snd_stream_get_info(pjmedia_snd_stream *strm, pjmedia_snd_stream_info *pi) { - PJ_ASSERT_RETURN(strm && pi, PJ_EINVAL); - return PJ_EINVALIDOP; + pj_bzero(pi, sizeof(pjmedia_snd_stream_info)); + pi->dir = strm->dir; + pi->play_id = strm->play_id; + pi->rec_id = strm->rec_id; + pi->clock_rate = strm->clock_rate; + pi->channel_count = strm->channel_count; + pi->samples_per_frame = strm->samples_per_frame; + pi->bits_per_sample = strm->bits_per_sample; + pi->rec_latency = 0; + pi->play_latency = 0; + + return PJ_SUCCESS; } PJ_DEF(pj_status_t) pjmedia_snd_stream_close(pjmedia_snd_stream *stream) { - PJ_UNUSED_ARG(stream); + pj_pool_release(stream->pool); return PJ_SUCCESS; } -PJ_DEF(pj_status_t) pjmedia_snd_deinit(void) -{ - return PJ_SUCCESS; -} - - #endif /* PJMEDIA_SOUND_IMPLEMENTATION */ diff --git a/pjsip-apps/src/symbian_ua/ua.cpp b/pjsip-apps/src/symbian_ua/ua.cpp index 87735499..8044226d 100644 --- a/pjsip-apps/src/symbian_ua/ua.cpp +++ b/pjsip-apps/src/symbian_ua/ua.cpp @@ -143,6 +143,7 @@ static pj_status_t app_startup(char *url) pjsua_media_config med_cfg; pjsua_config_default(&cfg); + cfg.max_calls = 2; cfg.thread_cnt = 0; // Disable threading on Symbian cfg.cb.on_incoming_call = &on_incoming_call; cfg.cb.on_call_media_state = &on_call_media_state; |