diff options
author | Nanang Izzuddin <nanang@teluu.com> | 2008-06-27 16:18:13 +0000 |
---|---|---|
committer | Nanang Izzuddin <nanang@teluu.com> | 2008-06-27 16:18:13 +0000 |
commit | cc9f73832038bdab140af1818635f15a391f3398 (patch) | |
tree | c5e14fbff6d3c3f1c9f97fc25ba19d56da96123c /pjmedia/src | |
parent | 41171475ee587b18522664d5db1cdb2b7604d0f4 (diff) |
Ticket #543:
- Fixed bug of calculating clock interval which should include channel count
- Added L16 codecs including stereo
- Added WAV files for stereo tests
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@2075 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src')
-rw-r--r-- | pjmedia/src/pjmedia/clock_thread.c | 4 | ||||
-rw-r--r-- | pjmedia/src/pjmedia/master_port.c | 17 |
2 files changed, 15 insertions, 6 deletions
diff --git a/pjmedia/src/pjmedia/clock_thread.c b/pjmedia/src/pjmedia/clock_thread.c index 9329bc2b..457e58b0 100644 --- a/pjmedia/src/pjmedia/clock_thread.c +++ b/pjmedia/src/pjmedia/clock_thread.c @@ -55,6 +55,7 @@ static int clock_thread(void *arg); */ PJ_DEF(pj_status_t) pjmedia_clock_create( pj_pool_t *pool, unsigned clock_rate, + unsigned channel_count, unsigned samples_per_frame, unsigned options, pjmedia_clock_callback *cb, @@ -74,7 +75,8 @@ PJ_DEF(pj_status_t) pjmedia_clock_create( pj_pool_t *pool, if (status != PJ_SUCCESS) return status; - clock->interval.u64 = samples_per_frame * clock->freq.u64 / clock_rate; + clock->interval.u64 = samples_per_frame * clock->freq.u64 / + channel_count / clock_rate; clock->next_tick.u64 = 0; clock->timestamp.u64 = 0; clock->max_jump = MAX_JUMP_MSEC * clock->freq.u64 / 1000; diff --git a/pjmedia/src/pjmedia/master_port.c b/pjmedia/src/pjmedia/master_port.c index 6ab95215..b264dec9 100644 --- a/pjmedia/src/pjmedia/master_port.c +++ b/pjmedia/src/pjmedia/master_port.c @@ -52,6 +52,7 @@ PJ_DEF(pj_status_t) pjmedia_master_port_create( pj_pool_t *pool, { pjmedia_master_port *m; unsigned clock_rate; + unsigned channel_count; unsigned samples_per_frame; unsigned bytes_per_frame; pj_status_t status; @@ -64,15 +65,20 @@ PJ_DEF(pj_status_t) pjmedia_master_port_create( pj_pool_t *pool, PJ_ASSERT_RETURN(u_port->info.clock_rate == d_port->info.clock_rate, PJMEDIA_ENCCLOCKRATE); - /* Both ports MUST have equal ptime */ - PJ_ASSERT_RETURN(u_port->info.clock_rate/u_port->info.samples_per_frame== - d_port->info.clock_rate/d_port->info.samples_per_frame, + /* Both ports MUST have equal samples per frame */ + PJ_ASSERT_RETURN(u_port->info.samples_per_frame== + d_port->info.samples_per_frame, PJMEDIA_ENCSAMPLESPFRAME); + /* Both ports MUST have equal channel count */ + PJ_ASSERT_RETURN(u_port->info.channel_count == d_port->info.channel_count, + PJMEDIA_ENCCHANNEL); + /* Get clock_rate and samples_per_frame from one of the port. */ clock_rate = u_port->info.clock_rate; samples_per_frame = u_port->info.samples_per_frame; + channel_count = u_port->info.channel_count; /* Get the bytes_per_frame value, to determine the size of the @@ -102,8 +108,9 @@ PJ_DEF(pj_status_t) pjmedia_master_port_create( pj_pool_t *pool, return status; /* Create media clock */ - status = pjmedia_clock_create(pool, clock_rate, samples_per_frame, - options, &clock_callback, m, &m->clock); + status = pjmedia_clock_create(pool, clock_rate, channel_count, + samples_per_frame, options, &clock_callback, + m, &m->clock); if (status != PJ_SUCCESS) { pj_lock_destroy(m->lock); return status; |