From b6f5e45674b1ea13ac0715ca049425f4c1ab3f57 Mon Sep 17 00:00:00 2001 From: paulc Date: Fri, 25 May 2007 19:50:23 +0000 Subject: [PATCH] Added feature (default enabled) to pad files to full buffer size. git-svn-id: http://yate.null.ro/svn/yate/trunk@1339 acf43c95-373e-0410-b603-e72c3f656dc1 --- modules/wavefile.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/wavefile.cpp b/modules/wavefile.cpp index ed2ef698..8b321ff6 100644 --- a/modules/wavefile.cpp +++ b/modules/wavefile.cpp @@ -139,6 +139,7 @@ private: }; bool s_asyncDelete = true; +bool s_dataPadding = true; INIT_PLUGIN(WaveFileDriver); @@ -346,8 +347,17 @@ void WaveSource::run() } break; } - if (r < (int)m_data.length()) - m_data.assign(m_data.data(),r); + if (r < (int)m_data.length()) { + // if desired and possible extend last byte to fill buffer + if (s_dataPadding && ((m_format == "mulaw") || (m_format == "alaw"))) { + unsigned char* d = (unsigned char*)m_data.data(); + unsigned char last = d[r-1]; + while (r < (int)m_data.length()) + d[r++] = last; + } + else + m_data.assign(m_data.data(),r); + } if (m_swap) { uint16_t* p = (uint16_t*)m_data.data(); for (int i = 0; i < r; i+= 2) { @@ -1024,6 +1034,7 @@ void WaveFileDriver::initialize() Output("Initializing module WaveFile"); setup(); s_asyncDelete = Engine::config().getBoolValue("hacks","asyncdelete",true); + s_dataPadding = Engine::config().getBoolValue("hacks","datapadding",true); if (!m_handler) { m_handler = new AttachHandler; Engine::install(m_handler);