summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pjmedia/src/pjmedia/wav_player.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/pjmedia/src/pjmedia/wav_player.c b/pjmedia/src/pjmedia/wav_player.c
index 64b81e38..048acfd3 100644
--- a/pjmedia/src/pjmedia/wav_player.c
+++ b/pjmedia/src/pjmedia/wav_player.c
@@ -328,7 +328,7 @@ PJ_DEF(pj_status_t) pjmedia_wav_player_port_create( pj_pool_t *pool,
pj_file_close(fport->fd);
return PJMEDIA_EWAVEUNSUPP;
}
- if (wave_hdr.data_hdr.len < 400) {
+ if (wave_hdr.data_hdr.len < 200) {
pj_file_close(fport->fd);
return PJMEDIA_EWAVETOOSHORT;
}
@@ -351,6 +351,13 @@ PJ_DEF(pj_status_t) pjmedia_wav_player_port_create( pj_pool_t *pool,
pj_strdup2(pool, &fport->base.info.name, filename);
+ /* If file is shorter than buffer size, adjust buffer size to file
+ * size. Otherwise EOF callback will be called multiple times when
+ * fill_buffer() is called.
+ */
+ if (wave_hdr.data_hdr.len < (unsigned)buff_size)
+ buff_size = wave_hdr.data_hdr.len;
+
/* Create file buffer.
*/
fport->bufsize = buff_size;