void CGUIDialogSubtitleSettings::SubtitleStreamsOptionFiller(SettingConstPtr setting, std::vector< std::pair<std::string, int> > &list, int ¤t, void *data) { int subtitleStreamCount = g_application.GetAppPlayer().GetSubtitleCount(); // cycle through each subtitle and add it to our entry list for (int i = 0; i < subtitleStreamCount; ++i) { SubtitleStreamInfo info; g_application.GetAppPlayer().GetSubtitleStreamInfo(i, info); std::string strItem; std::string strLanguage; if (!g_LangCodeExpander.Lookup(info.language, strLanguage)) strLanguage = g_localizeStrings.Get(13205); // Unknown if (info.name.length() == 0) strItem = strLanguage; else strItem = StringUtils::Format("%s - %s", strLanguage.c_str(), info.name.c_str()); strItem += FormatFlags(info.flags); strItem += StringUtils::Format(" (%i/%i)", i + 1, subtitleStreamCount); list.push_back(make_pair(strItem, i)); } // no subtitle streams - just add a "None" entry if (list.empty()) { list.push_back(make_pair(g_localizeStrings.Get(231), -1)); current = -1; } }
void CGUIDialogVideoSettings::VideoStreamsOptionFiller(std::shared_ptr<const CSetting> setting, std::vector< std::pair<std::string, int> > &list, int ¤t, void *data) { int videoStreamCount = g_application.GetAppPlayer().GetVideoStreamCount(); // cycle through each video stream and add it to our list control for (int i = 0; i < videoStreamCount; ++i) { std::string strItem; std::string strLanguage; VideoStreamInfo info; g_application.GetAppPlayer().GetVideoStreamInfo(i, info); g_LangCodeExpander.Lookup(info.language, strLanguage); if (!info.name.empty()) { if (!strLanguage.empty()) strItem = StringUtils::Format("%s - %s", strLanguage.c_str(), info.name.c_str()); else strItem = info.name; } else if (!strLanguage.empty()) { strItem = strLanguage; } if (info.codecName.empty()) strItem += StringUtils::Format(" (%ix%i", info.width, info.height); else strItem += StringUtils::Format(" (%s, %ix%i", info.codecName.c_str(), info.width, info.height); if (info.bitrate) strItem += StringUtils::Format(", %i bps)", info.bitrate); else strItem += ")"; strItem += FormatFlags(info.flags); strItem += StringUtils::Format(" (%i/%i)", i + 1, videoStreamCount); list.push_back(make_pair(strItem, i)); } if (list.empty()) { list.push_back(make_pair(g_localizeStrings.Get(231), -1)); current = -1; } }
static inline FormatFlags operator|(FormatFlags f1, FormatFlags f2) { return FormatFlags(deUint32(f1) | deUint32(f2)); }