diff options
author | Benny Prijono <bennylp@teluu.com> | 2008-01-12 14:13:49 +0000 |
---|---|---|
committer | Benny Prijono <bennylp@teluu.com> | 2008-01-12 14:13:49 +0000 |
commit | 81269e7c05c3d0b8fc83f7246b93c4f35a4e573f (patch) | |
tree | 30309b43df3590dc491058662bd698fc3af1ac0d /pjmedia/src | |
parent | b865a833342a8d34ee6ff7d216e364cc5cc55388 (diff) |
Ticket #447: WAV player cuts last data from the WAV file
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1683 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjmedia/src')
-rw-r--r-- | pjmedia/src/pjmedia/wav_player.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/pjmedia/src/pjmedia/wav_player.c b/pjmedia/src/pjmedia/wav_player.c index 78af891d..48b88943 100644 --- a/pjmedia/src/pjmedia/wav_player.c +++ b/pjmedia/src/pjmedia/wav_player.c @@ -156,8 +156,13 @@ static pj_status_t fill_buffer(struct file_port *fport) PJ_LOG(5,(THIS_FILE, "File port %.*s EOF, stopping..", (int)fport->base.info.name.slen, fport->base.info.name.ptr)); + /* Zero remaining buffer */ + pj_bzero(fport->buf+size, size_left); + /* Mark port as EOF */ fport->eof = PJ_TRUE; - return PJ_EEOF; + /* Must return PJ_SUCCESS, otherwise this buffer + * is not read */ + return PJ_SUCCESS; } else { PJ_LOG(5,(THIS_FILE, "File port %.*s EOF, rewinding..", (int)fport->base.info.name.slen, @@ -510,6 +515,13 @@ static pj_status_t file_get_frame(pjmedia_port *this_port, pj_assert(fport->base.info.signature == SIGNATURE); + /* Check EOF */ + if (fport->eof) { + frame->type = PJMEDIA_FRAME_TYPE_NONE; + frame->size = 0; + return PJ_EEOF; + } + //frame_size = fport->base.info.bytes_per_frame; //pj_assert(frame->size == frame_size); frame_size = frame->size; @@ -549,6 +561,7 @@ static pj_status_t file_get_frame(pjmedia_port *this_port, status = fill_buffer(fport); if (status != PJ_SUCCESS) { pj_bzero(((char*)frame->buf)+endread, frame_size-endread); + fport->readpos = fport->buf + fport->bufsize; return status; } |