if(!m_finished1)
{
- m_reader1->read(length, m_finished1, buffer);
+ int len = length;
+
+ m_reader1->read(len, m_finished1, buffer);
+
+ if(len < length)
+ {
+ AUD_Specs specs1, specs2;
+ specs1 = m_reader1->getSpecs();
+ specs2 = m_reader2->getSpecs();
+ if(memcmp(&specs1, &specs2, sizeof(AUD_Specs)))
+ length = len;
+ else
+ {
+ int len2 = length - len;
+ m_reader2->read(len2, eos, buffer + specs1.channels * len);
+ length = len + len2;
+ }
+ }
}
else
{
Factory_sine(PyTypeObject* type, PyObject* args)
{
float frequency;
- int rate = 44100;
+ double rate = 44100;
- if(!PyArg_ParseTuple(args, "f|i:sine", &frequency, &rate))
+ if(!PyArg_ParseTuple(args, "f|d:sine", &frequency, &rate))
return NULL;
Factory *self;
try
{
AUD_DeviceSpecs specs = (*reinterpret_cast<AUD_Reference<AUD_IDevice>*>(self->device))->getSpecs();
- return Py_BuildValue("i", specs.rate);
+ return Py_BuildValue("d", specs.rate);
}
catch(AUD_Exception& e)
{