/// <summary> /// Handles the g_Player.PlayBackStopped event /// </summary> /// <param name="type"></param> /// <param name="i"></param> /// <param name="s"></param> public void OnVideoStopped(g_Player.MediaType type, int i, string s) { // do not handle e.g. visualization window, last.fm player, etc if (type == g_Player.MediaType.Video || type == g_Player.MediaType.TV) { subTitleType = eSubTitle.None; Task.Factory.StartNew(() => ProcessingVideoStop(type)); } }
/// <summary> /// Handles the g_Player.PlayBackStarted event /// </summary> public void OnVideoStarted(g_Player.MediaType type, string s) { // do not handle e.g. visualization window, last.fm player, etc if (type == g_Player.MediaType.Video || type == g_Player.MediaType.TV) { _currentName = s; var isNetwork = IsNetworkVideo(s); subTitleType = isNetwork ? eSubTitle.None : DetectSubtitleType(s); if (!isNetwork || bAnalyzeNetworkStream) { Task.Factory.StartNew(() => Analyze3DFormatVideo(type)); } } }
void OnTVChannelChanged() { g_Player.MediaType type = g_Player.MediaType.TV; subTitleType = eSubTitle.None; Task.Factory.StartNew(() => Analyze3DFormatVideo(type)); }
void OnTVChannelChanged() { g_Player.MediaType type = g_Player.MediaType.TV; subTitleType = eSubTitle.None; ThreadPool.QueueUserWorkItem(new WaitCallback(RunVideoStarted), type); }
/// <summary> /// Handles the g_Player.PlayBackStopped event /// </summary> /// <param name="type"></param> /// <param name="i"></param> /// <param name="s"></param> public void OnVideoStopped(g_Player.MediaType type, int i, string s) { // do not handle e.g. visualization window, last.fm player, etc if (type == g_Player.MediaType.Video || type == g_Player.MediaType.TV) { subTitleType = eSubTitle.None; ThreadPool.QueueUserWorkItem(new WaitCallback(RunVideoStopped), type); } }
/// <summary> /// Handles the g_Player.PlayBackStarted event /// </summary> public void OnVideoStarted(g_Player.MediaType type, string s) { // do not handle e.g. visualization window, last.fm player, etc if (type == g_Player.MediaType.Video || type == g_Player.MediaType.TV) { _currentName = s; String baseName = Path.Combine(Path.GetDirectoryName(s), Path.GetFileNameWithoutExtension(s)); // text based subtitles String [] textSubtitleFormatsFileAndEmbedded = { "aqt", "srt", "ssa", "mpl", "txt", "dks", "js", "jss", "pjs", "asc", "ass", "smi", "psb", "lrc", "ovr", "rt", "rtf", "zeg", "sbt", "sst", "ssts", "stl", "vkt", "vsf", "pan", "s2k" }; String [] imageSubtitleFormatsFile = { "idx", "sub", "scr", "son" }; String[] imageSubtitleFormatsEmbedded = { "vobsub", "dvb subtitle", "pgs", "rle", "xsub", }; subTitleType = eSubTitle.None; // check for file based subtitles foreach (String subFormat in textSubtitleFormatsFileAndEmbedded) { if (File.Exists(baseName + "." + subFormat)) { subTitleType = eSubTitle.TextBased; ThreadPool.QueueUserWorkItem(new WaitCallback(RunVideoStarted), type); return; } } foreach (String subFormat in imageSubtitleFormatsFile) { if (File.Exists(baseName + "." + subFormat)) { subTitleType = eSubTitle.ImageBased; ThreadPool.QueueUserWorkItem(new WaitCallback(RunVideoStarted), type); return; } } // check for embedded subtitles MediaInfo mi = new MediaInfo(); mi.Open(s); int sct = mi.Count_Get(StreamKind.Text); for (int i = 0; i < sct; i++) { String format = mi.Get(StreamKind.Text, i, "Format").ToLowerInvariant(); if (textSubtitleFormatsFileAndEmbedded.Contains(format)) { subTitleType = eSubTitle.TextBased; break; } if (imageSubtitleFormatsEmbedded.Contains(format)) { subTitleType = eSubTitle.ImageBased; break; } } mi.Close(); ThreadPool.QueueUserWorkItem(new WaitCallback(RunVideoStarted), type); } }