summaryrefslogtreecommitdiff
path: root/pjsip-apps
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2006-04-03 09:43:36 +0000
committerBenny Prijono <bennylp@teluu.com>2006-04-03 09:43:36 +0000
commit36172a516bdefa411c3cb77dfb6d44e07e3383f3 (patch)
treef53d2e1d1035b5c916b66cc104ad5b14dac63046 /pjsip-apps
parentbcd6ef00a511ababa0917773628c490a592ef088 (diff)
Added DirectSound sound implementation
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@371 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps')
-rw-r--r--pjsip-apps/build/sample_debug.dsp2
-rw-r--r--pjsip-apps/src/samples/debug.c2
-rw-r--r--pjsip-apps/src/samples/sndinfo.c41
3 files changed, 42 insertions, 3 deletions
diff --git a/pjsip-apps/build/sample_debug.dsp b/pjsip-apps/build/sample_debug.dsp
index d725d171..a6af92cb 100644
--- a/pjsip-apps/build/sample_debug.dsp
+++ b/pjsip-apps/build/sample_debug.dsp
@@ -50,7 +50,7 @@ BSC32=bscmake.exe
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
-# ADD LINK32 ole32.lib user32.lib dsound.lib dxguid.lib netapi32.lib mswsock.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386 /out:"../bin/samples/sampledebug_vc6.exe"
+# ADD LINK32 ole32.lib user32.lib dsound.lib dxguid.lib netapi32.lib mswsock.lib ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /map /machine:I386 /out:"../bin/samples/sampledebug_vc6.exe"
!ELSEIF "$(CFG)" == "sample_debug - Win32 Debug"
diff --git a/pjsip-apps/src/samples/debug.c b/pjsip-apps/src/samples/debug.c
index 7e295392..44523301 100644
--- a/pjsip-apps/src/samples/debug.c
+++ b/pjsip-apps/src/samples/debug.c
@@ -27,5 +27,5 @@
* E.g.:
* #include "playfile.c"
*/
-#include "resampleplay.c"
+#include "playfile.c"
diff --git a/pjsip-apps/src/samples/sndinfo.c b/pjsip-apps/src/samples/sndinfo.c
index 7c9f599e..07e5df66 100644
--- a/pjsip-apps/src/samples/sndinfo.c
+++ b/pjsip-apps/src/samples/sndinfo.c
@@ -75,11 +75,37 @@ static void enum_devices(void)
static int play_counter;
static int rec_counter;
+static int min_delay = 0xFFFF, max_delay;
+static char play_delays[1000];
static pj_status_t play_cb(void *user_data, pj_uint32_t timestamp,
void *output, unsigned size)
{
+ static pj_time_val last_cb;
+
++play_counter;
+
+ if (last_cb.sec == 0 && last_cb.msec == 0) {
+ pj_gettimeofday(&last_cb);
+ } else {
+ pj_time_val now, saved;
+ int delay;
+
+ pj_gettimeofday(&now);
+ saved = now;
+ PJ_TIME_VAL_SUB(now, last_cb);
+ delay = PJ_TIME_VAL_MSEC(now);
+
+ if (delay < min_delay)
+ min_delay = delay;
+ if (delay > max_delay)
+ max_delay = delay;
+
+ last_cb = saved;
+
+ play_delays[play_counter-1] = delay;
+ }
+
return PJ_SUCCESS;
}
@@ -98,7 +124,7 @@ static void app_perror(const char *title, pj_status_t status)
printf( "%s: %s (err=%d)\n",
title, errmsg, status);
}
-
+
static int open_device(int dev_id, pjmedia_dir dir,
int clock_rate, int nchannel, int bits)
{
@@ -106,6 +132,7 @@ static int open_device(int dev_id, pjmedia_dir dir,
unsigned nsamples;
pjmedia_snd_stream *strm;
const char *dirtype;
+ unsigned i;
switch (dir) {
case PJMEDIA_DIR_CAPTURE:
@@ -165,6 +192,18 @@ static int open_device(int dev_id, pjmedia_dir dir,
}
puts("Success.");
+
+ printf("Delay: ");
+ for (i=0; i<play_counter; ++i)
+ printf("%d ", play_delays[i]);
+
+ puts("");
+ if (dir & PJMEDIA_DIR_PLAYBACK) {
+ printf("Callback interval: min interval=%d ms, max interval=%d ms\n",
+ min_delay, max_delay);
+ }
+
+
return 0;
}