summaryrefslogtreecommitdiff
path: root/pjmedia/src
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2008-01-12 14:13:49 +0000
committerBenny Prijono <bennylp@teluu.com>2008-01-12 14:13:49 +0000
commit81269e7c05c3d0b8fc83f7246b93c4f35a4e573f (patch)
tree30309b43df3590dc491058662bd698fc3af1ac0d /pjmedia/src
parentb865a833342a8d34ee6ff7d216e364cc5cc55388 (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.c15
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;
}