void IDelayedInitializeService.DelayedInitialize() { if (!has_karaoke) return; playbin = new Bin (ServiceManager.PlayerEngine.ActiveEngine.GetBaseElements ()[0]); audiobin = new Bin (ServiceManager.PlayerEngine.ActiveEngine.GetBaseElements ()[1]); audiotee = new Bin (ServiceManager.PlayerEngine.ActiveEngine.GetBaseElements ()[2]); if (playbin.IsNull ()) { Hyena.Log.Debug ("[Karaoke] Playbin is not yet initialized, cannot start Karaoke Mode"); } audiokaraoke = audiobin.GetByName ("karaoke"); if (audiokaraoke.IsNull ()) { audiokaraoke = ElementFactory.Make ("audiokaraoke","karaoke"); //add audiokaraoke to audiobin audiobin.Add (audiokaraoke); //setting new audiobin sink to audiokaraoke sink GhostPad teepad = new GhostPad (audiobin.GetStaticPad ("sink").ToIntPtr ()); Pad audiokaraokepad = audiokaraoke.GetStaticPad ("sink"); teepad.SetTarget (audiokaraokepad); //link audiokaraoke sink and audiotee sink audiokaraoke.Link (audiotee); } if (!karaoke_enabled) { audiokaraoke.SetFloatProperty ("level", 0); audiokaraoke.SetFloatProperty ("mono-level", 0); } else { audiokaraoke.SetFloatProperty ("level", effect_level); audiokaraoke.SetFloatProperty ("mono-level", effect_level); } }