// figure processing latency by doing 'dry runs' of filterBuffer() bigtime_t StepMotionBlurFilter::calcProcessingLatency() { PRINT(("StepMotionBlurFilter::calcProcessingLatency()\n")); if(m_output.destination == media_destination::null) { PRINT(("\tNot connected.\n")); return 0LL; } // allocate a temporary buffer group BBufferGroup* pTestGroup = new BBufferGroup(m_output.format.u.raw_video.display.line_width * m_output.format.u.raw_video.display.line_count *4, 1); // fetch a buffer BBuffer* pBuffer = pTestGroup->RequestBuffer(m_output.format.u.raw_video.display.line_width * m_output.format.u.raw_video.display.line_count * 4); ASSERT(pBuffer); pBuffer->Header()->type = B_MEDIA_RAW_VIDEO; pBuffer->Header()->size_used = m_output.format.u.raw_video.display.line_width * m_output.format.u.raw_video.display.line_count * 4; // run the test bigtime_t preTest = system_time(); filterBuffer(pBuffer); bigtime_t elapsed = system_time()-preTest; // clean up pBuffer->Recycle(); delete pTestGroup; // reset filter state initFilter(); return elapsed; }
// figure processing latency by doing 'dry runs' of filterBuffer() bigtime_t FlangerNode::calcProcessingLatency() { PRINT(("FlangerNode::calcProcessingLatency()\n")); if(m_output.destination == media_destination::null) { PRINT(("\tNot connected.\n")); return 0LL; } // allocate a temporary buffer group BBufferGroup* pTestGroup = new BBufferGroup( m_output.format.u.raw_audio.buffer_size, 1); // fetch a buffer BBuffer* pBuffer = pTestGroup->RequestBuffer( m_output.format.u.raw_audio.buffer_size); ASSERT(pBuffer); pBuffer->Header()->type = B_MEDIA_RAW_AUDIO; pBuffer->Header()->size_used = m_output.format.u.raw_audio.buffer_size; // run the test bigtime_t preTest = system_time(); filterBuffer(pBuffer); bigtime_t elapsed = system_time()-preTest; // clean up pBuffer->Recycle(); delete pTestGroup; // reset filter state initFilter(); return elapsed; }
// figure processing latency by doing 'dry runs' of processBuffer() bigtime_t AudioFilterNode::calcProcessingLatency() { PRINT(("AudioFilterNode::calcProcessingLatency()\n")); ASSERT(m_input.source != media_source::null); ASSERT(m_output.destination != media_destination::null); ASSERT(m_op); // initialize filter m_op->init(); size_t maxSize = max_c( m_input.format.u.raw_audio.buffer_size, m_output.format.u.raw_audio.buffer_size); // allocate a temporary buffer group BBufferGroup* testGroup = new BBufferGroup( maxSize, 1); // fetch a buffer big enough for in-place processing BBuffer* buffer = testGroup->RequestBuffer( maxSize, -1); ASSERT(buffer); buffer->Header()->type = B_MEDIA_RAW_AUDIO; buffer->Header()->size_used = m_input.format.u.raw_audio.buffer_size; // run the test bigtime_t preTest = system_time(); processBuffer(buffer, buffer); bigtime_t elapsed = system_time()-preTest; // clean up buffer->Recycle(); delete testGroup; // reset filter state m_op->init(); return elapsed;// + 100000LL; }
int main() { // app_server connection (no need to run it) BApplication app("application/x-vnd-test"); BBufferGroup * group; status_t s; int32 count; BBuffer *buffer; /* printf("using default constructor:\n"); group = new BBufferGroup(); s = group->InitCheck(); printf("InitCheck: status = %ld\n",s); s = group->CountBuffers(&count); printf("CountBuffers: count = %ld, status = %ld\n",count,s); delete group; */ printf("\n"); printf("using size = 1234 constructor:\n"); group = new BBufferGroup(1234); s = group->InitCheck(); printf("InitCheck: status = %ld\n",s); s = group->CountBuffers(&count); printf("CountBuffers: count = %ld, status = %ld\n",count,s); s = group->GetBufferList(1,&buffer); printf("GetBufferList: status = %ld\n",s); printf("Buffer->Data: = %08x\n",(int)buffer->Data()); printf("Buffer->ID: = %d\n",(int)buffer->ID()); printf("Buffer->Size: = %ld\n",buffer->Size()); printf("Buffer->SizeAvailable: = %ld\n",buffer->SizeAvailable()); printf("Buffer->SizeUsed: = %ld\n",buffer->SizeUsed()); printf("\n"); media_buffer_id id = buffer->ID(); BBufferGroup * group2 = new BBufferGroup(1,&id); printf("creating second group with a buffer from first group:\n"); s = group2->InitCheck(); printf("InitCheck: status = %ld\n",s); s = group2->CountBuffers(&count); printf("CountBuffers: count = %ld, status = %ld\n",count,s); buffer = 0; s = group2->GetBufferList(1,&buffer); printf("GetBufferList: status = %ld\n",s); printf("Buffer->Data: = %08x\n",(int)buffer->Data()); printf("Buffer->ID: = %d\n",(int)buffer->ID()); printf("Buffer->Size: = %ld\n",buffer->Size()); printf("Buffer->SizeAvailable: = %ld\n",buffer->SizeAvailable()); printf("Buffer->SizeUsed: = %ld\n",buffer->SizeUsed()); delete group; delete group2; printf("\n"); /* printf("creating a BSmallBuffer:\n"); BSmallBuffer * sb = new BSmallBuffer; printf("sb->Data: = %08x\n",(int)sb->Data()); printf("sb->ID: = %d\n",(int)sb->ID()); printf("sb->Size: = %ld\n",sb->Size()); printf("sb->SizeAvailable: = %ld\n",sb->SizeAvailable()); printf("sb->SizeUsed: = %ld\n",sb->SizeUsed()); printf("sb->SmallBufferSizeLimit: = %ld\n",sb->SmallBufferSizeLimit()); delete sb; */ return 0; }