private static void mk_rtsp_auth(IntPtr mk_media_info, string realm, string user_name, int must_no_encrypt, IntPtr mk_rtsp_auth_invoker, IntPtr mk_sock_info) { var mediaInfo = new MediaInfo(mk_media_info); var list = new List <Task <string> >(); var rtspAuth = new RtspAuth() { MediaInfo = mediaInfo, Realm = realm, Username = user_name, MustNoEncrypt = must_no_encrypt == 1, SockInfo = new SockInfo(mk_sock_info) }; foreach (Func <RtspAuth, string> item in OnRtspGetRealm.GetInvocationList()) { list.Add(Task <string> .Run(() => item(rtspAuth))); } Task.WaitAll(list.ToArray()); var password = list.FirstOrDefault(w => w.Result != null)?.Result; PInvoke.ZLMediaKitMethod.mk_rtsp_auth_invoker_do(mk_rtsp_auth_invoker, rtspAuth.MustNoEncrypt ? 0 : 1, password); }
private static void mk_rtsp_get_realm(IntPtr mk_media_info, IntPtr mk_rtsp_get_realm_invoker, IntPtr mk_sock_info) { if (OnRtspGetRealm == null) { PInvoke.ZLMediaKitMethod.mk_rtsp_get_realm_invoker_do(mk_rtsp_get_realm_invoker, null); } var mediaInfo = new MediaInfo(mk_media_info); var list = new List <Task <string> >(); foreach (Func <MediaInfo, SockInfo, string> item in OnRtspGetRealm.GetInvocationList()) { list.Add(Task <string> .Run(() => item(new MediaInfo(mk_media_info), new SockInfo(mk_sock_info)))); } Task.WaitAll(list.ToArray()); var mediasourceWapper = list.FirstOrDefault(w => w.Result != null)?.Result; PInvoke.ZLMediaKitMethod.mk_rtsp_get_realm_invoker_do(mk_rtsp_get_realm_invoker, mediasourceWapper); }