diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2009-03-27 15:15:46 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2009-03-27 15:15:46 +0000 |
commit | 719e60cc3290dce849349bcd305f77dc5b545fa1 (patch) | |
tree | 9406c48e056f06c5a26f04af8037c3a74d40e2d2 /pjsip-apps/src/samples | |
parent | 1f28fd97cb1f090464e23addd0e8e415d67cf92f (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/src/samples')
-rw-r--r-- | pjsip-apps/src/samples/auddemo.c | 32 |
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(¶m, &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); |