diff options
-rw-r--r-- | pjmedia/src/pjmedia/wav_player.c | 9 |
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; |