diff options
author | Benny Prijono <bennylp@teluu.com> | 2014-03-14 04:09:50 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2014-03-14 04:09:50 +0000 |
commit | 1e47fd78f11dab4b2f6cffa766417f111434f734 (patch) | |
tree | 016d93a205659ea85c7d315412307e580911668e /pjmedia/src | |
parent | 9ff22c2ff305ee03b10d1d611eab060e5097cbe5 (diff) |
Closed #1748: enhancements to WAV player API
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@4793 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src')
-rw-r--r-- | pjmedia/src/pjmedia/wav_player.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/pjmedia/src/pjmedia/wav_player.c b/pjmedia/src/pjmedia/wav_player.c index 78a02e04..1e9a92ca 100644 --- a/pjmedia/src/pjmedia/wav_player.c +++ b/pjmedia/src/pjmedia/wav_player.c @@ -425,6 +425,44 @@ PJ_DEF(pj_status_t) pjmedia_wav_player_port_create( pj_pool_t *pool, /* + * Get additional info about the file player. + */ +PJ_DEF(pj_status_t) pjmedia_wav_player_get_info( + pjmedia_port *port, + pjmedia_wav_player_info *info) +{ + struct file_reader_port *fport; + PJ_ASSERT_RETURN(port && info, PJ_EINVAL); + + pj_bzero(info, sizeof(*info)); + + /* Check that this is really a player port */ + PJ_ASSERT_RETURN(port->info.signature == SIGNATURE, PJ_EINVALIDOP); + + fport = (struct file_reader_port*) port; + + if (fport->fmt_tag == PJMEDIA_WAVE_FMT_TAG_PCM) { + info->fmt_id = PJMEDIA_FORMAT_PCM; + info->payload_bits_per_sample = 16; + } else if (fport->fmt_tag == PJMEDIA_WAVE_FMT_TAG_ULAW) { + info->fmt_id = PJMEDIA_FORMAT_ULAW; + info->payload_bits_per_sample = 8; + } else if (fport->fmt_tag == PJMEDIA_WAVE_FMT_TAG_ALAW) { + info->fmt_id = PJMEDIA_FORMAT_ALAW; + info->payload_bits_per_sample = 8; + } else { + pj_assert(!"Unsupported format"); + return PJ_ENOTSUP; + } + + info->size_bytes = pjmedia_wav_player_get_len(port); + info->size_samples = info->size_bytes / + (info->payload_bits_per_sample / 8); + + return PJ_SUCCESS; +} + +/* * Get the data length, in bytes. */ PJ_DEF(pj_ssize_t) pjmedia_wav_player_get_len(pjmedia_port *port) @@ -484,7 +522,7 @@ PJ_DEF(pj_status_t) pjmedia_wav_player_port_set_pos(pjmedia_port *port, /* - * Get the file play position of WAV player. + * Get the file play position of WAV player (in bytes). */ PJ_DEF(pj_ssize_t) pjmedia_wav_player_port_get_pos( pjmedia_port *port ) { |