bool CPVRManager::PlayMedia(const CFileItem& item) { if (!g_PVRManager.IsStarted()) { CLog::Log(LOGERROR, "CApplication - %s PVR manager not started to play file '%s'", __FUNCTION__, item.GetPath().c_str()); return false; } CFileItem pvrItem(item); if (URIUtils::IsPVRChannel(item.GetPath()) && !item.HasPVRChannelInfoTag()) pvrItem = *g_PVRChannelGroups->GetByPath(item.GetPath()); else if (URIUtils::IsPVRRecording(item.GetPath()) && !item.HasPVRRecordingInfoTag()) pvrItem = *g_PVRRecordings->GetByPath(item.GetPath()); if (!pvrItem.HasPVRChannelInfoTag() && !pvrItem.HasPVRRecordingInfoTag()) return false; // check parental lock if we want to play a channel if (pvrItem.IsPVRChannel() && !g_PVRManager.CheckParentalLock(*pvrItem.GetPVRChannelInfoTag())) return false; if (!g_application.IsCurrentThread()) { CApplicationMessenger::Get().MediaPlay(pvrItem); return true; } return g_application.PlayFile(pvrItem, false) == PLAYBACK_OK; }
bool CPVRManager::PlayMedia(const CFileItem& item) { if (!g_PVRManager.IsStarted()) { CLog::Log(LOGERROR, "CApplication - %s PVR manager not started to play file '%s'", __FUNCTION__, item.GetPath().c_str()); return false; } CFileItem pvrItem(item); if (URIUtils::IsPVRChannel(item.GetPath()) && !item.HasPVRChannelInfoTag()) pvrItem = *g_PVRChannelGroups->GetByPath(item.GetPath()); else if (URIUtils::IsPVRRecording(item.GetPath()) && !item.HasPVRRecordingInfoTag()) pvrItem = *g_PVRRecordings->GetByPath(item.GetPath()); if (!pvrItem.HasPVRChannelInfoTag() && !pvrItem.HasPVRRecordingInfoTag()) return false; // check parental lock if we want to play a channel if (pvrItem.IsPVRChannel() && !g_PVRManager.CheckParentalLock(pvrItem.GetPVRChannelInfoTag())) return false; if (!g_application.IsCurrentThread()) { CFileItemList *l = new CFileItemList; //don't delete, l->Add(std::make_shared<CFileItem>(pvrItem)); CApplicationMessenger::GetInstance().PostMsg(TMSG_MEDIA_PLAY, -1, -1, static_cast<void*>(l)); return true; } return g_application.PlayFile(pvrItem, "videoplayer", false) == PLAYBACK_OK; }
CPVRClientPtr CPVRManager::GetClient(const CFileItem &item) const { int iClientID = PVR_INVALID_CLIENT_ID; if (item.HasPVRChannelInfoTag()) iClientID = item.GetPVRChannelInfoTag()->ClientID(); else if (item.HasPVRRecordingInfoTag()) iClientID = item.GetPVRRecordingInfoTag()->m_iClientId; else if (item.HasPVRTimerInfoTag()) iClientID = item.GetPVRTimerInfoTag()->m_iClientId; else if (item.HasEPGInfoTag()) iClientID = item.GetEPGInfoTag()->ClientID(); else if (URIUtils::IsPVRChannel(item.GetPath())) { const std::shared_ptr<CFileItem> channelItem = m_channelGroups->GetByPath(item.GetPath()); if (channelItem) iClientID = channelItem->GetPVRChannelInfoTag()->ClientID(); } else if (URIUtils::IsPVRRecording(item.GetPath())) { const std::shared_ptr<CFileItem> recordingItem = m_recordings->GetByPath(item.GetPath()); if (recordingItem) iClientID = recordingItem->GetPVRRecordingInfoTag()->ClientID(); } return GetClient(iClientID); }
CPVRClientPtr CPVRManager::GetClient(const CFileItem &item) const { int iClientID = PVR_INVALID_CLIENT_ID; if (item.HasPVRChannelInfoTag()) iClientID = item.GetPVRChannelInfoTag()->ClientID(); else if (item.HasPVRRecordingInfoTag()) iClientID = item.GetPVRRecordingInfoTag()->m_iClientId; else if (item.HasPVRTimerInfoTag()) iClientID = item.GetPVRTimerInfoTag()->m_iClientId; else if (item.HasEPGInfoTag()) iClientID = item.GetEPGInfoTag()->ClientID(); return GetClient(iClientID); }
void CPVRRecordings::SetPlayCount(const CFileItem &item, int iPlayCount) { if (!item.HasPVRRecordingInfoTag()) return; const CPVRRecording *recording = item.GetPVRRecordingInfoTag(); CSingleLock lock(m_critSection); for (unsigned int iRecordingPtr = 0; iRecordingPtr < m_recordings.size(); iRecordingPtr++) { CPVRRecording *current = m_recordings.at(iRecordingPtr); if (*current == *recording) { current->SetPlayCount(iPlayCount); break; } } }