bool PlayerContext::GetPlayingInfoMap(InfoMap &infoMap) const { bool loaded = false; LockPlayingInfo(__FILE__, __LINE__); if (playingInfo) { playingInfo->ToMap(infoMap); infoMap["tvstate"] = StateToString(playingState); infoMap["iconpath"] = ChannelUtil::GetIcon(playingInfo->GetChanID()); if ((playingInfo->IsVideoFile() || playingInfo->IsVideoDVD() || playingInfo->IsVideoBD()) && playingInfo->GetPathname() != playingInfo->GetBasename()) { infoMap["coverartpath"] = VideoMetaDataUtil::GetArtPath( playingInfo->GetPathname(), "Coverart"); infoMap["fanartpath"] = VideoMetaDataUtil::GetArtPath( playingInfo->GetPathname(), "Fanart"); infoMap["bannerpath"] = VideoMetaDataUtil::GetArtPath( playingInfo->GetPathname(), "Banners"); infoMap["screenshotpath"] = VideoMetaDataUtil::GetArtPath( playingInfo->GetPathname(), "Screenshots"); } if (player) player->GetCodecDescription(infoMap); infoMap.detach(); loaded = true; } UnlockPlayingInfo(__FILE__, __LINE__); return loaded; }
bool PlayerContext::IsSameProgram(const ProgramInfo &p) const { bool ret = false; LockPlayingInfo(__FILE__, __LINE__); if (playingInfo) ret = playingInfo->IsSameProgram(p); UnlockPlayingInfo(__FILE__, __LINE__); return ret; }
QString PlayerContext::GetFilters(const QString &baseFilters) const { QString filters = baseFilters; QString chanFilters = QString::null; if (gCoreContext->IsDatabaseIgnored()) return baseFilters; LockPlayingInfo(__FILE__, __LINE__); if (playingInfo) // Recordings have this info already. { chanFilters = playingInfo->GetChannelPlaybackFilters(); chanFilters.detach(); } UnlockPlayingInfo(__FILE__, __LINE__); if (!chanFilters.isEmpty()) { if ((chanFilters[0] != '+')) { filters = chanFilters; } else { if (!filters.isEmpty() && (!filters.endsWith(","))) filters += ","; filters += chanFilters.mid(1); } } LOG(VB_CHANNEL, LOG_INFO, LOC + QString("Output filters for this channel are: '%1'") .arg(filters)); filters.detach(); return filters; }
/** * \brief determine initial tv state and playgroup for the recording * \param islivetv: true if recording is livetv */ void PlayerContext::SetInitialTVState(bool islivetv) { TVState newState = kState_None; QString newPlaygroup("Default"); LockPlayingInfo(__FILE__, __LINE__); if (islivetv) { SetTVChain(new LiveTVChain()); newState = kState_WatchingLiveTV; } else if (playingInfo) { int overrecordseconds = gCoreContext->GetNumSetting("RecordOverTime"); QDateTime curtime = MythDate::current(); QDateTime recendts = playingInfo->GetRecordingEndTime() .addSecs(overrecordseconds); if (playingInfo->IsRecording()) { newState = (curtime < recendts) ? kState_WatchingRecording : kState_WatchingPreRecorded; } else if (playingInfo->IsVideoDVD()) newState = kState_WatchingDVD; else if (playingInfo->IsVideoBD()) newState = kState_WatchingBD; else newState = kState_WatchingVideo; newPlaygroup = playingInfo->GetPlaybackGroup(); } UnlockPlayingInfo(__FILE__, __LINE__); ChangeState(newState); SetPlayGroup(newPlaygroup); }