void VideoRecorderNode::BufferReceived(BBuffer* inBuffer) { INFO("VideoRecorderNode::BufferReceived():\n"); if( RunMode() == B_OFFLINE ) { // int32 destinationID = inBuffer->Header()->destination; SetOfflineTime( inBuffer->Header()->start_time ); } status_t err; media_timed_event event(inBuffer->Header()->start_time, BTimedEventQueue::B_HANDLE_BUFFER, inBuffer, BTimedEventQueue::B_RECYCLE_BUFFER ); err = EventQueue()->AddEvent( event ); if( err ) inBuffer->Recycle(); }
void StepMotionBlurFilter::BufferReceived(BBuffer* pBuffer) { ASSERT(pBuffer); // check buffer destination if(pBuffer->Header()->destination != m_input.destination.id) { PRINT(("StepMotionBlurFilter::BufferReceived():\n" "\tBad destination.\n")); pBuffer->Recycle(); return; } if((RunMode() != B_OFFLINE) && (pBuffer->Header()->time_source != TimeSource()->ID())) { PRINT(("* timesource mismatch\n")); } // check output if(m_output.destination == media_destination::null || !m_outputEnabled) { pBuffer->Recycle(); return; } // process and retransmit buffer filterBuffer(pBuffer); status_t err = SendBuffer(pBuffer, m_output.source, m_output.destination); if (err < B_OK) { PRINT(("StepMotionBlurFilter::BufferReceived():\n" "\tSendBuffer() failed: %s\n", strerror(err))); pBuffer->Recycle(); } if (RunMode() == B_OFFLINE) SetOfflineTime(pBuffer->Header()->start_time); // sent! }
void FlipTransition::BufferReceived(BBuffer* pBuffer) { ASSERT(pBuffer); // check buffer destination if ((pBuffer->Header()->destination != first_input.destination.id) && (pBuffer->Header()->destination != second_input.destination.id)) { PRINT(("FlipTransition::BufferReceived():\n" "\tBad destination.\n")); pBuffer->Recycle(); return; } if ((RunMode() != B_OFFLINE) && (pBuffer->Header()->time_source != TimeSource()->ID())) { PRINT(("* timesource mismatch\n")); } // check output if (m_output.destination == media_destination::null || !m_outputEnabled) { pBuffer->Recycle(); return; } if (pBuffer->Header()->destination != first_input.destination.id) {// buffer vient de la premiere entree firstInputBufferHere = true; firstBuffer = pBuffer; PRINT(("First Buffer Received\n")); } else {// buffer vient de la 2eme entree secondInputBufferHere = true; secondBuffer = pBuffer; PRINT(("Second Buffer Received\n")); } if (firstInputBufferHere && secondInputBufferHere) // que ce passe-t-il si l'un des producteurs n'est plus valable ? { // process and retransmit buffer MakeTransition(firstBuffer, secondBuffer); status_t err = SendBuffer(transitionBuffer, m_output.source, m_output.destination); if (err < B_OK) { PRINT(("FlipTransition::BufferReceived():\n" "\tSendBuffer() failed: %s\n", strerror(err))); transitionBuffer->Recycle(); } firstBuffer->Recycle(); secondBuffer->Recycle(); firstInputBufferHere = false; secondInputBufferHere = false; if (RunMode() == B_OFFLINE) { SetOfflineTime(transitionBuffer->Header()->start_time); // RequestAdditionalBuffer(first_input.source, OfflineTime()); // RequestAdditionalBuffer(second_input.source, OfflineTime()); } // sent! } }