summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-05-02 13:19:33 +0000
committerBenny Prijono <bennylp@teluu.com>2007-05-02 13:19:33 +0000
commit4b5a9b5ec7f7dd042d7fb40bccdf4ee44d28122b (patch)
treec8728026a511ac2e105bd0f9c944a42d11882fc9
parent8bb2ecb06d7e994b4b5c94af831fb02c465ecb49 (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.cww115
-rw-r--r--pjmedia/src/pjmedia/nullsound.c115
-rw-r--r--pjsip-apps/src/symbian_ua/ua.cpp1
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;