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
This commit is contained in:
paulc 2007-05-25 19:50:23 +00:00
parent c16cab6c64
commit b6f5e45674
1 changed files with 13 additions and 2 deletions

View File

@ -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);