now checks buffer_cycle field for playback and record
clean up git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21758 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
@@ -1241,7 +1241,7 @@ MultiAudioNode::GetParameterValue(int32 id, bigtime_t* last_change, void* value,
|
|||||||
}
|
}
|
||||||
|
|
||||||
for(uint32 i=0; i < (*ioSize/sizeof(float)); i++) {
|
for(uint32 i=0; i < (*ioSize/sizeof(float)); i++) {
|
||||||
PRINT(("B_CONTINUOUS_PARAMETER value[%i] : %f\n", i, ((float*)value)[i]));
|
PRINT(("GetParameterValue B_CONTINUOUS_PARAMETER value[%i] : %f\n", i, ((float*)value)[i]));
|
||||||
}
|
}
|
||||||
} else if(parameter->Type() == BParameter::B_DISCRETE_PARAMETER) {
|
} else if(parameter->Type() == BParameter::B_DISCRETE_PARAMETER) {
|
||||||
|
|
||||||
@@ -1254,7 +1254,7 @@ MultiAudioNode::GetParameterValue(int32 id, bigtime_t* last_change, void* value,
|
|||||||
*ioSize = sizeof(int32);
|
*ioSize = sizeof(int32);
|
||||||
|
|
||||||
for(uint32 i=0; i < (*ioSize/sizeof(int32)); i++) {
|
for(uint32 i=0; i < (*ioSize/sizeof(int32)); i++) {
|
||||||
PRINT(("B_DISCRETE_PARAMETER value[%i] : %i\n", i, ((int32*)value)[i]));
|
PRINT(("GetParameterValue B_DISCRETE_PARAMETER value[%i] : %i\n", i, ((int32*)value)[i]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1284,7 +1284,7 @@ MultiAudioNode::SetParameterValue(int32 id, bigtime_t performance_time, const vo
|
|||||||
|
|
||||||
if(parameter->Type() == BParameter::B_CONTINUOUS_PARAMETER) {
|
if(parameter->Type() == BParameter::B_CONTINUOUS_PARAMETER) {
|
||||||
for(uint32 i=0; i < (size/sizeof(float)); i++) {
|
for(uint32 i=0; i < (size/sizeof(float)); i++) {
|
||||||
PRINT(("B_CONTINUOUS_PARAMETER value[%i] : %f\n", i, ((float*)value)[i]));
|
PRINT(("SetParameterValue B_CONTINUOUS_PARAMETER value[%i] : %f\n", i, ((float*)value)[i]));
|
||||||
}
|
}
|
||||||
MMVI.item_count = 1;
|
MMVI.item_count = 1;
|
||||||
MMV[0].id = id;
|
MMV[0].id = id;
|
||||||
@@ -1298,7 +1298,7 @@ MultiAudioNode::SetParameterValue(int32 id, bigtime_t performance_time, const vo
|
|||||||
|
|
||||||
} else if(parameter->Type() == BParameter::B_DISCRETE_PARAMETER) {
|
} else if(parameter->Type() == BParameter::B_DISCRETE_PARAMETER) {
|
||||||
for(uint32 i=0; i < (size/sizeof(int32)); i++) {
|
for(uint32 i=0; i < (size/sizeof(int32)); i++) {
|
||||||
PRINT(("B_DISCRETE_PARAMETER value[%i] : %i\n", i, ((int32*)value)[i]));
|
PRINT(("SetParameterValue B_DISCRETE_PARAMETER value[%i] : %i\n", i, ((int32*)value)[i]));
|
||||||
}
|
}
|
||||||
BDiscreteParameter *dparameter = (BDiscreteParameter*) parameter;
|
BDiscreteParameter *dparameter = (BDiscreteParameter*) parameter;
|
||||||
|
|
||||||
@@ -1445,10 +1445,12 @@ int32
|
|||||||
MultiAudioNode::RunThread()
|
MultiAudioNode::RunThread()
|
||||||
{
|
{
|
||||||
CALLED();
|
CALLED();
|
||||||
multi_buffer_info MBI;//, oldMBI;
|
multi_buffer_info MBI;
|
||||||
MBI.info_size = sizeof(MBI);
|
MBI.info_size = sizeof(MBI);
|
||||||
MBI._reserved_0 = 0;
|
MBI._reserved_0 = 0;
|
||||||
MBI._reserved_1 = 2;
|
MBI._reserved_1 = 2;
|
||||||
|
MBI.playback_buffer_cycle = 0;
|
||||||
|
MBI.record_buffer_cycle = 0;
|
||||||
|
|
||||||
while ( 1 ) {
|
while ( 1 ) {
|
||||||
//acquire buffer if any
|
//acquire buffer if any
|
||||||
@@ -1456,8 +1458,6 @@ MultiAudioNode::RunThread()
|
|||||||
return B_OK;
|
return B_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
//oldMBI = MBI;
|
|
||||||
|
|
||||||
//send buffer
|
//send buffer
|
||||||
fDevice->DoBufferExchange(&MBI);
|
fDevice->DoBufferExchange(&MBI);
|
||||||
|
|
||||||
@@ -1471,11 +1471,13 @@ MultiAudioNode::RunThread()
|
|||||||
for(int32 i=0; i<fInputs.CountItems(); i++) {
|
for(int32 i=0; i<fInputs.CountItems(); i++) {
|
||||||
input = (node_input *)fInputs.ItemAt(i);
|
input = (node_input *)fInputs.ItemAt(i);
|
||||||
|
|
||||||
if((MBI._reserved_0 == input->fChannelId)
|
if ((MBI._reserved_0 == input->fChannelId)
|
||||||
|
&& MBI.playback_buffer_cycle >= 0
|
||||||
|
&& MBI.playback_buffer_cycle < fDevice->MBL.return_playback_buffers
|
||||||
&& (input->fOldMBI.playback_buffer_cycle != MBI.playback_buffer_cycle
|
&& (input->fOldMBI.playback_buffer_cycle != MBI.playback_buffer_cycle
|
||||||
|| fDevice->MBL.return_playback_buffers == 1)
|
|| fDevice->MBL.return_playback_buffers == 1)
|
||||||
&& (input->fInput.source != media_source::null
|
&& (input->fInput.source != media_source::null
|
||||||
|| input->fChannelId == 0)) {
|
|| input->fChannelId == 0)) {
|
||||||
|
|
||||||
//PRINT(("playback_buffer_cycle ok input : %i %d\n", i, MBI.playback_buffer_cycle));
|
//PRINT(("playback_buffer_cycle ok input : %i %d\n", i, MBI.playback_buffer_cycle));
|
||||||
|
|
||||||
@@ -1491,8 +1493,6 @@ MultiAudioNode::RunThread()
|
|||||||
input->fOldMBI = MBI;
|
input->fOldMBI = MBI;
|
||||||
|
|
||||||
if(input->fBuffer!=NULL) {
|
if(input->fBuffer!=NULL) {
|
||||||
/*memcpy( fDevice->MBL.playback_buffers[input->fBufferCycle][input->fChannelId].base,
|
|
||||||
input->fBuffer->Data(), input->fBuffer->SizeUsed() );*/
|
|
||||||
FillNextBuffer(*input, input->fBuffer);
|
FillNextBuffer(*input, input->fBuffer);
|
||||||
input->fBuffer->Recycle();
|
input->fBuffer->Recycle();
|
||||||
input->fBuffer = NULL;
|
input->fBuffer = NULL;
|
||||||
@@ -1516,7 +1516,9 @@ MultiAudioNode::RunThread()
|
|||||||
|
|
||||||
// make sure we're both started *and* connected before delivering a buffer
|
// make sure we're both started *and* connected before delivering a buffer
|
||||||
if ((RunState() == BMediaEventLooper::B_STARTED) && (output->fOutput.destination != media_destination::null)) {
|
if ((RunState() == BMediaEventLooper::B_STARTED) && (output->fOutput.destination != media_destination::null)) {
|
||||||
if((MBI._reserved_1 == output->fChannelId)
|
if ((MBI._reserved_1 == output->fChannelId)
|
||||||
|
&& MBI.record_buffer_cycle >= 0
|
||||||
|
&& MBI.record_buffer_cycle < fDevice->MBL.return_record_buffers
|
||||||
&& (output->fOldMBI.record_buffer_cycle != MBI.record_buffer_cycle
|
&& (output->fOldMBI.record_buffer_cycle != MBI.record_buffer_cycle
|
||||||
|| fDevice->MBL.return_record_buffers == 1)) {
|
|| fDevice->MBL.return_record_buffers == 1)) {
|
||||||
//PRINT(("record_buffer_cycle ok\n"));
|
//PRINT(("record_buffer_cycle ok\n"));
|
||||||
|
|||||||
Reference in New Issue
Block a user