/*---------------------------------------------------------------------- | PLT_MediaController::OnEventNotify +---------------------------------------------------------------------*/ NPT_Result PLT_MediaController::OnEventNotify(PLT_Service* service, NPT_List<PLT_StateVariable*>* vars) { if (!service->GetDevice()->GetType().StartsWith("urn:schemas-upnp-org:device:MediaRenderer")) return NPT_FAILURE; if (!m_Delegate) return NPT_SUCCESS; /* make sure device associated to service is still around */ PLT_DeviceDataReference data; NPT_CHECK_WARNING(FindRenderer(service->GetDevice()->GetUUID(), data)); m_Delegate->OnMRStateVariablesChanged(service, vars); return NPT_SUCCESS; }
/*---------------------------------------------------------------------- | PLT_MediaController::GetProtocolInfoSink +---------------------------------------------------------------------*/ NPT_Result PLT_MediaController::GetProtocolInfoSink(PLT_DeviceDataReference& device, NPT_List<NPT_String>& sinks) { PLT_DeviceDataReference renderer; NPT_CHECK_WARNING(FindRenderer(device->GetUUID(), renderer)); // look for ConnectionManager service PLT_Service* serviceCMR; NPT_CHECK_SEVERE(device->FindServiceByType( "urn:schemas-upnp-org:service:ConnectionManager:*", serviceCMR)); NPT_String value; NPT_CHECK_SEVERE(serviceCMR->GetStateVariableValue( "SinkProtocolInfo", value)); sinks = value.Split(","); return NPT_SUCCESS; }
/*---------------------------------------------------------------------- | PLT_MediaController::OnActionResponse +---------------------------------------------------------------------*/ NPT_Result PLT_MediaController::OnActionResponse(NPT_Result res, PLT_ActionReference& action, void* userdata) { if (m_Delegate == NULL) return NPT_SUCCESS; PLT_DeviceDataReference device; NPT_String uuid = action->GetActionDesc().GetService()->GetDevice()->GetUUID(); /* extract action name */ NPT_String actionName = action->GetActionDesc().GetName(); /* AVTransport response ? */ if (actionName.Compare("GetCurrentTransportActions", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; return OnGetCurrentTransportActionsResponse(res, device, action, userdata); } else if (actionName.Compare("GetDeviceCapabilities", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; return OnGetDeviceCapabilitiesResponse(res, device, action, userdata); } else if (actionName.Compare("GetMediaInfo", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; return OnGetMediaInfoResponse(res, device, action, userdata); } else if (actionName.Compare("GetPositionInfo", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; return OnGetPositionInfoResponse(res, device, action, userdata); } else if (actionName.Compare("GetTransportInfo", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; return OnGetTransportInfoResponse(res, device, action, userdata); } else if (actionName.Compare("GetTransportSettings", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; return OnGetTransportSettingsResponse(res, device, action, userdata); } else if (actionName.Compare("Next", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; m_Delegate->OnNextResult(res, device, userdata); } else if (actionName.Compare("Pause", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; m_Delegate->OnPauseResult(res, device, userdata); } else if (actionName.Compare("Play", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; m_Delegate->OnPlayResult(res, device, userdata); } else if (actionName.Compare("Previous", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; m_Delegate->OnPreviousResult(res, device, userdata); } else if (actionName.Compare("Seek", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; m_Delegate->OnSeekResult(res, device, userdata); } else if (actionName.Compare("SetAVTransportURI", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; m_Delegate->OnSetAVTransportURIResult(res, device, userdata); } else if (actionName.Compare("SetPlayMode", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; m_Delegate->OnSetPlayModeResult(res, device, userdata); } else if (actionName.Compare("Stop", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; m_Delegate->OnStopResult(res, device, userdata); } else if (actionName.Compare("GetCurrentConnectionIDs", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; return OnGetCurrentConnectionIDsResponse(res, device, action, userdata); } else if (actionName.Compare("GetCurrentConnectionInfo", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; return OnGetCurrentConnectionInfoResponse(res, device, action, userdata); } else if (actionName.Compare("GetProtocolInfo", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; return OnGetProtocolInfoResponse(res, device, action, userdata); } else if (actionName.Compare("SetMute", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; m_Delegate->OnSetMuteResult(res, device, userdata); } else if (actionName.Compare("GetMute", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; return OnGetMuteResponse(res, device, action, userdata); } else if (actionName.Compare("SetVolume", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; m_Delegate->OnSetVolumeResult(res, device, userdata); } else if (actionName.Compare("GetVolume", true) == 0) { if (NPT_FAILED(FindRenderer(uuid, device))) res = NPT_FAILURE; return OnGetVolumeResponse(res, device, action, userdata); } return NPT_SUCCESS; }
HRESULT FindVideoRenderer(IGraphBuilder *pGB, IBaseFilter **ppFilter) { return FindRenderer(pGB, &MEDIATYPE_Video, ppFilter); }