summaryrefslogtreecommitdiff
path: root/pjsip-apps
diff options
context:
space:
mode:
authorNanang Izzuddin <nanang@teluu.com>2009-03-27 15:15:46 +0000
committerNanang Izzuddin <nanang@teluu.com>2009-03-27 15:15:46 +0000
commit719e60cc3290dce849349bcd305f77dc5b545fa1 (patch)
tree9406c48e056f06c5a26f04af8037c3a74d40e2d2 /pjsip-apps
parent1f28fd97cb1f090464e23addd0e8e415d67cf92f (diff)
Ticket #771 (auddev-misc):
Updated audio test tool: - Fixed playback report on avg interval. - Added feature to set/get capture & playback latecies setting. - Minor update on drift calculation, improve a bit readibility for debugging. git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2555 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps')
-rw-r--r--pjsip-apps/src/samples/auddemo.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/pjsip-apps/src/samples/auddemo.c b/pjsip-apps/src/samples/auddemo.c
index d3301fed..a6d8f920 100644
--- a/pjsip-apps/src/samples/auddemo.c
+++ b/pjsip-apps/src/samples/auddemo.c
@@ -29,6 +29,8 @@
static unsigned dev_count;
+static unsigned playback_lat = PJMEDIA_SND_DEFAULT_PLAY_LATENCY;
+static unsigned capture_lat = PJMEDIA_SND_DEFAULT_REC_LATENCY;
static void app_perror(const char *title, pj_status_t status)
{
@@ -178,6 +180,12 @@ static void test_device(pjmedia_dir dir, unsigned rec_id, unsigned play_id,
param.channel_count = chnum;
param.samples_per_frame = clock_rate * chnum * ptime / 1000;
+ /* Latency settings */
+ param.flags |= (PJMEDIA_AUD_DEV_CAP_INPUT_LATENCY |
+ PJMEDIA_AUD_DEV_CAP_OUTPUT_LATENCY);
+ param.input_latency_ms = capture_lat;
+ param.output_latency_ms = playback_lat;
+
PJ_LOG(3,(THIS_FILE, "Performing test.."));
status = pjmedia_aud_test(&param, &result);
@@ -383,6 +391,10 @@ static void print_menu(void)
puts(" CH: # of channels");
puts(" r RID [FILE] Record capture device RID to WAV file");
puts(" p PID [FILE] Playback WAV file to device ID PID");
+ puts(" d [RLAT [PLAT]] Get/set sound device latencies (in ms):");
+ puts(" Specify no param to get current latencies setting");
+ puts(" RLAT : record latency (-1 for default)");
+ puts(" PLAT : playback latency (-1 for default)");
puts(" v Toggle log verbosity");
puts(" q Quit");
puts("");
@@ -520,6 +532,26 @@ int main()
}
break;
+ case 'd':
+ /* latencies */
+ {
+ int rec_lat, play_lat;
+
+ if (sscanf(line+2, "%d %d", &rec_lat, &play_lat) == 2) {
+ capture_lat = (unsigned)
+ (rec_lat>=0? rec_lat:PJMEDIA_SND_DEFAULT_REC_LATENCY);
+ playback_lat = (unsigned)
+ (play_lat >= 0? play_lat : PJMEDIA_SND_DEFAULT_PLAY_LATENCY);
+ printf("Recording latency=%ums, playback latency=%ums",
+ capture_lat, playback_lat);
+ } else {
+ printf("Current latencies: record=%ums, playback=%ums",
+ capture_lat, playback_lat);
+ }
+ puts("");
+ }
+ break;
+
case 'v':
if (pj_log_get_level() <= 3) {
pj_log_set_level(5);