} tResult LPFFilter::Init(tInitStage eStage, __exception) { // never miss calling the parent implementation!! RETURN_IF_FAILED(cFilter::Init(eStage, __exception_ptr)) // in StageFirst you can create and register your static pins. if (eStage == StageFirst) { // create and register the input pin cObjectPtr<IMediaDescriptionManager> pDescManager; RETURN_IF_FAILED(_runtime->GetObject(OID_ADTF_MEDIA_DESCRIPTION_MANAGER, IID_ADTF_MEDIA_DESCRIPTION_MANAGER, (tVoid**)&pDescManager, __exception_ptr)); // phase 1 tChar const * strDescSignalValueInput = pDescManager->GetMediaDescription("tSignalValue"); RETURN_IF_POINTER_NULL(strDescSignalValueInput); cObjectPtr<IMediaType> pTypeSignalValueInput = new cMediaType(0, 0, 0, "tSignalValue", strDescSignalValueInput, IMediaDescription::MDF_DDL_DEFAULT_VERSION); RETURN_IF_FAILED(pTypeSignalValueInput->GetInterface(IID_ADTF_MEDIA_TYPE_DESCRIPTION, (tVoid**)&m_pCoderDescSignalInput)); // phase 2 RETURN_IF_FAILED(m_oInputMeas.Create("input_sample", pTypeSignalValueInput, static_cast<IPinEventSink*> (this))); RETURN_IF_FAILED(RegisterPin(&m_oInputMeas)); // create and register the output pin // phase 1 tChar const * strDescSignalValueOutput = pDescManager->GetMediaDescription("tSignalValue"); RETURN_IF_POINTER_NULL(strDescSignalValueOutput); cObjectPtr<IMediaType> pTypeSignalValueOutput = new cMediaType(0, 0, 0, "tSignalValue", strDescSignalValueOutput, IMediaDescription::MDF_DDL_DEFAULT_VERSION); RETURN_IF_FAILED(pTypeSignalValueOutput->GetInterface(IID_ADTF_MEDIA_TYPE_DESCRIPTION, (tVoid**)&m_pCoderDescSignalOutput)); // phase 2
} RPMCalculation::~RPMCalculation() { } tResult RPMCalculation::Init(tInitStage eStage, __exception) { RETURN_IF_FAILED(cFilter::Init(eStage, __exception_ptr)) if (eStage == StageFirst) { cObjectPtr<IMediaDescriptionManager> pDescManager; RETURN_IF_FAILED(_runtime->GetObject(OID_ADTF_MEDIA_DESCRIPTION_MANAGER,IID_ADTF_MEDIA_DESCRIPTION_MANAGER,(tVoid**)&pDescManager,__exception_ptr)); tChar const * strDescSignalValue = pDescManager->GetMediaDescription("tSignalValue"); RETURN_IF_POINTER_NULL(strDescSignalValue); cObjectPtr<IMediaType> pTypeSignalValue = new cMediaType(0, 0, 0, "tSignalValue", strDescSignalValue,IMediaDescription::MDF_DDL_DEFAULT_VERSION); RETURN_IF_FAILED(pTypeSignalValue->GetInterface(IID_ADTF_MEDIA_TYPE_DESCRIPTION, (tVoid**)&m_pCoderDescSignal)); RETURN_IF_FAILED(m_oInputWheelCounterLeft.Create("wheel_speed_sensor_left", pTypeSignalValue, static_cast<IPinEventSink*> (this))); RETURN_IF_FAILED(RegisterPin(&m_oInputWheelCounterLeft)); RETURN_IF_FAILED(m_oInputWheelCounterRight.Create("wheel_speed_sensor_right", pTypeSignalValue, static_cast<IPinEventSink*> (this))); RETURN_IF_FAILED(RegisterPin(&m_oInputWheelCounterRight)); RETURN_IF_FAILED(m_oOutputRPMLeft.Create("RPM_left_Wheel", pTypeSignalValue, static_cast<IPinEventSink*> (this))); RETURN_IF_FAILED(RegisterPin(&m_oOutputRPMLeft)); RETURN_IF_FAILED(m_oOutputRPMRight.Create("RPM_right_Wheel", pTypeSignalValue, static_cast<IPinEventSink*> (this))); RETURN_IF_FAILED(RegisterPin(&m_oOutputRPMRight));