Beispiel #1
0
        public Form1()
        {
            InitializeComponent();

            m_myDelegate = MessageFromVidyoClient;
            try
            {
                //Specifying logging information
                Vidyo32.VidyoClientLogParams logParams = new Vidyo32.VidyoClientLogParams();

                logParams.logSize = 500000;
                //log path must exist before running (this is done by Visual Studio build steps here)
                logParams.setpathToLogDir(".\\logs\\");
                logParams.setlogBaseFileName("VidyoSampleApplication");
                logParams.setLogLevelsAndCategories("warning all@App debug@AppEvents");
                logParams.setPathToDumpDir(".\\logs\\");


                int    szLog  = Marshal.SizeOf(logParams);
                IntPtr ptrLog = Marshal.AllocCoTaskMem(szLog);
                Marshal.StructureToPtr(logParams, ptrLog, true);

                //Initializing the client
                byte initRes = Vidyo32.VidyoClientInitialize(m_myDelegate, // callback
                                                             IntPtr.Zero,  // data ptr
                                                             ptrLog);
            }

            catch (Exception ex)
            {
            }
        }
Beispiel #2
0
        private void buttonJoin_Click(object sender, EventArgs e)
        {
            UnifiedDotNetSample.RoomLink roomLink = new UnifiedDotNetSample.RoomLink();
            roomLink.ShowDialog();
            if (!roomLink.m_bMakeCall)
            {
                return;
            }

            Vidyo32.VidyoClientInEventRoomLink guestJoin = new Vidyo32.VidyoClientInEventRoomLink();

            guestJoin.portalUri      = roomLink.m_strPortal;
            guestJoin.roomKey        = roomLink.m_strRoomKey;
            guestJoin.displayName    = roomLink.m_strDisplayName;
            guestJoin.pin            = roomLink.m_strPin;
            guestJoin.clientType     = VGUClientLogic.Vidyo32.VidyoClientClientType.VIDYO_CLIENT_CLIENTTYPE_W;
            guestJoin.muteCamera     = Vidyo32.VidyoBool.VIDYO_FALSE;
            guestJoin.muteMicrophone = Vidyo32.VidyoBool.VIDYO_FALSE;
            guestJoin.muteSpeaker    = Vidyo32.VidyoBool.VIDYO_FALSE;

            int    Gsize = Marshal.SizeOf(guestJoin);
            IntPtr Gptr  = Marshal.AllocCoTaskMem(Gsize);

            Marshal.StructureToPtr(guestJoin, Gptr, false);

            Int32 Guest = Vidyo32.VidyoClientSendEvent(Vidyo32.VidyoClientInEvent.VIDYO_CLIENT_IN_EVENT_ROOM_LINK, Gptr, Gsize);
        }
Beispiel #3
0
        private void buttonStart_Click(object sender, EventArgs e)
        {
            try
            {
                //specifying the video handler location
                Rectangle rect    = new Rectangle(0, 0, pnlVideoArea.Width, pnlVideoArea.Height);
                int       szRect  = Marshal.SizeOf(rect);
                IntPtr    ptrRect = Marshal.AllocCoTaskMem(szRect);
                Marshal.StructureToPtr(rect, ptrRect, true);

                //Specifying logging information
                Vidyo32.VidyoClientLogParams logParams = new Vidyo32.VidyoClientLogParams();

                logParams.logSize = 500000;
                //log path must exist before running (this is done by Visual Studio build steps here)
                logParams.setpathToLogDir(".\\logs\\");
                logParams.setlogBaseFileName("VidyoSampleApplication");
                logParams.setLogLevelsAndCategories("warning all@App debug@AppEvents");
                logParams.setPathToDumpDir(".\\logs\\");


                int    szLog  = Marshal.SizeOf(logParams);
                IntPtr ptrLog = Marshal.AllocCoTaskMem(szLog);
                Marshal.StructureToPtr(logParams, ptrLog, true);

                Vidyo32.VidyoClientProfileParams profileParams = new Vidyo32.VidyoClientProfileParams();
                //this is where in the registry settings get stored betweeen runs. Empty value defaults to VidyoDesktop's location and settings (but also reuses VidyoDesktop EID)
                profileParams.setCONFIG_KEY_PATH("");
                profileParams.setMYDOCS_DIR("");
                profileParams.portNumber = 65000; //VidyoDesktop uses 63457
                profileParams.setPRODUCT_NAME("VidyoSampleApplication");
                profileParams.setPROGFILES_DIR("");
                profileParams.setVIDYO_DIR("");
                //this is where the CA base certificate is read from - here we're using Vidyo Desktop's version.
                profileParams.setCERT_FILE_DIR(".\\");
                profileParams.setINSTALLED_APP_DIR(".\\");


                int    szProfile  = Marshal.SizeOf(profileParams);
                IntPtr ptrProfile = Marshal.AllocCoTaskMem(szProfile);
                Marshal.StructureToPtr(profileParams, ptrProfile, true);

                //Starting the client
                Int32 startRes = Vidyo32.VidyoClientStart(m_myDelegate, // callback
                                                          IntPtr.Zero,  // data ptr
                                                          ptrLog,       //logParams,
                                                          pnlVideoArea.Handle,
                                                          ptrRect,      // Initial RECT
                                                          IntPtr.Zero,  //reserved
                                                          ptrProfile,   //profileParams,
                                                          false);       //reserved
                SetFlag(cVcStarted);
            }

            catch (Exception ex)
            {
            }
        }
Beispiel #4
0
        private void buttonMuteMic_Click(object sender, EventArgs e)
        {
            Vidyo32.VidyoClientInEventMute mute = new Vidyo32.VidyoClientInEventMute();
            mute.isMuted = (IsFlagSet(cMicMuted)) ? Vidyo32.VidyoBool.VIDYO_FALSE : Vidyo32.VidyoBool.VIDYO_TRUE;
            int    Gsize = Marshal.SizeOf(mute);
            IntPtr Gptr  = Marshal.AllocCoTaskMem(Gsize);

            Marshal.StructureToPtr(mute, Gptr, false);

            Int32 Guest = Vidyo32.VidyoClientSendEvent(Vidyo32.VidyoClientInEvent.VIDYO_CLIENT_IN_EVENT_MUTE_AUDIO_IN, Gptr, Gsize);
        }
Beispiel #5
0
        private void buttonShare_Click(object sender, EventArgs e)
        {
            Vidyo32.VidyoClientRequestGetAlarms Alarm = new Vidyo32.VidyoClientRequestGetAlarms();

            int    szAlarm  = Marshal.SizeOf(Alarm);
            IntPtr ptrAlarm = Marshal.AllocCoTaskMem(szAlarm);

            Marshal.StructureToPtr(Alarm, ptrAlarm, true);
            uint errAlarm = Vidyo32.VidyoClientSendRequest(Vidyo32.VidyoClientRequest.VIDYO_CLIENT_REQUEST_GET_ALARMS, ptrAlarm, szAlarm);

            if (errAlarm == 0)
            {
                Vidyo32.VidyoClientRequestGetAlarms CurrentAlarm = (Vidyo32.VidyoClientRequestGetAlarms)Marshal.PtrToStructure(ptrAlarm, typeof(Vidyo32.VidyoClientRequestGetAlarms));
            }


            Vidyo32.VidyoClientRequestGetWindowsAndDesktops shares = new Vidyo32.VidyoClientRequestGetWindowsAndDesktops();
            shares.Init();

            int szShares = Marshal.SizeOf(shares);

            IntPtr ptrShares = Marshal.AllocCoTaskMem(szShares);

            Marshal.StructureToPtr(shares, ptrShares, true);
            uint error = Vidyo32.VidyoClientSendRequest(Vidyo32.VidyoClientRequest.VIDYO_CLIENT_REQUEST_GET_WINDOWS_AND_DESKTOPS,
                                                        ptrShares, szShares);

            if (error != 0)
            {
                return;
            }

            Vidyo32.VidyoClientRequestGetWindowsAndDesktops currentShares = (Vidyo32.VidyoClientRequestGetWindowsAndDesktops)Marshal.PtrToStructure(ptrShares, typeof(Vidyo32.VidyoClientRequestGetWindowsAndDesktops));


            if (currentShares.numSystemDesktops > 0)
            {
                // string firstDesktopId = Marshal.PtrToStringAuto(currentShares.sysDesktopId[0]);
                string firstDesktopId = currentShares.sysDesktopId[0];
                Vidyo32.VidyoClientInEventShare sharePara = new Vidyo32.VidyoClientInEventShare();
                sharePara.shareType = Vidyo32.VidyoClientContentsShareType.VIDYO_CLIENT_CONTENTS_SHARE_TYPE_DESKTOP_WINDOW;
                sharePara.window    = (IntPtr)1;
                sharePara.desktopId = firstDesktopId;

                int    sizeOfShareEvent = Marshal.SizeOf(sharePara);
                IntPtr sharePtr         = Marshal.AllocCoTaskMem(sizeOfShareEvent);
                Marshal.StructureToPtr(sharePara, sharePtr, false);

                Int32 returnValue = Vidyo32.VidyoClientSendEvent(Vidyo32.VidyoClientInEvent.VIDYO_CLIENT_IN_EVENT_SHARE, sharePtr, sizeOfShareEvent);

                return;
            }
        }
Beispiel #6
0
        private void pnlVideoArea_SizeChanged(object sender, EventArgs e)
        {
            Vidyo32.VidyoClientInEventResize EventResize = new Vidyo32.VidyoClientInEventResize();
            if (true)//(inSizing)
            {
                EventResize.width  = (uint)pnlVideoArea.Width;
                EventResize.height = (uint)pnlVideoArea.Height;
            }
            int    szEventResize  = Marshal.SizeOf(EventResize);
            IntPtr ptrEventResize = Marshal.AllocCoTaskMem(szEventResize);

            Marshal.StructureToPtr(EventResize, ptrEventResize, true);
            Vidyo32.VidyoClientSendEvent(Vidyo32.VidyoClientInEvent.VIDYO_CLIENT_IN_EVENT_RESIZE, ptrEventResize, szEventResize);
        }
Beispiel #7
0
        public void StopLib()
        {
            if (IsFlagSet(cCallStarted))
            {
                SetFlag(cApplicationClosing);
                Vidyo32.VidyoClientSendEvent(Vidyo32.VidyoClientInEvent.VIDYO_CLIENT_IN_EVENT_LEAVE, (IntPtr)0, 0);
                return;
            }

            if (IsFlagSet(cVcStarted))
            {
                ClearFlag(cVcStarted);
                Vidyo32.VidyoClientStop();
            }
            Vidyo32.VidyoClientUninitialize();
            Application.Exit();
        }
Beispiel #8
0
        private void buttonShareWnd_Click(object sender, EventArgs e)
        {
            Vidyo32.VidyoClientRequestGetWindowsAndDesktops shares = new Vidyo32.VidyoClientRequestGetWindowsAndDesktops();
            shares.Init();

            int szShares = Marshal.SizeOf(shares);

            IntPtr ptrShares = Marshal.AllocCoTaskMem(szShares);

            Marshal.StructureToPtr(shares, ptrShares, true);
            int szShares2 = Marshal.SizeOf(ptrShares);

            uint error = Vidyo32.VidyoClientSendRequest(Vidyo32.VidyoClientRequest.VIDYO_CLIENT_REQUEST_GET_WINDOWS_AND_DESKTOPS,
                                                        ptrShares, szShares);

            if (error != 0)
            {
                return;
            }

            Vidyo32.VidyoClientRequestGetWindowsAndDesktops currentShares = (Vidyo32.VidyoClientRequestGetWindowsAndDesktops)Marshal.PtrToStructure(ptrShares, typeof(Vidyo32.VidyoClientRequestGetWindowsAndDesktops));
            if (currentShares.numApplicationWindows <= m_indexWindow)
            {
                m_indexWindow = 0;
            }

            if (currentShares.numApplicationWindows > m_indexWindow)
            {
                Vidyo32.VidyoClientInEventShare sharePara = new Vidyo32.VidyoClientInEventShare();
                sharePara.shareType = Vidyo32.VidyoClientContentsShareType.VIDYO_CLIENT_CONTENTS_SHARE_TYPE_APPLICATION_WINDOW;
                sharePara.window    = (IntPtr)currentShares.appWindowId[m_indexWindow++];

                int    sizeOfShareEvent = Marshal.SizeOf(sharePara);
                IntPtr sharePtr         = Marshal.AllocCoTaskMem(sizeOfShareEvent);
                Marshal.StructureToPtr(sharePara, sharePtr, false);

                Int32 returnValue = Vidyo32.VidyoClientSendEvent(Vidyo32.VidyoClientInEvent.VIDYO_CLIENT_IN_EVENT_SHARE, sharePtr, sizeOfShareEvent);

                return;
            }
        }
Beispiel #9
0
 private void buttonEnd_Click(object sender, EventArgs e)
 {
     Vidyo32.VidyoClientSendEvent(Vidyo32.VidyoClientInEvent.VIDYO_CLIENT_IN_EVENT_LEAVE, (IntPtr)0, 0);
 }
Beispiel #10
0
 private void buttonStop_Click(object sender, EventArgs e)
 {
     ClearFlag(cVcStarted);
     Vidyo32.VidyoClientStop();
 }
Beispiel #11
0
        unsafe  //unsafe for parsing messageCode Array

        void MessageFromVidyoClient(Vidyo32.VidyoClientOutEvent actionType, IntPtr param, uint paramSize, IntPtr ptr2)
        {
            string now     = DateTime.Now.ToString("HH:mm:ss:fff") + "  + ";
            string message = now + "Out Event from Vidyoclient: " + actionType;

            switch (actionType)
            {
            case Vidyo32.VidyoClientOutEvent.VIDYO_CLIENT_OUT_EVENT_SIGN_IN:
            {
                Vidyo32.VidyoClientOutEventSignIn eventSignIn = (Vidyo32.VidyoClientOutEventSignIn)Marshal.PtrToStructure(param, typeof(Vidyo32.VidyoClientOutEventSignIn));

                if (eventSignIn.activeEid == 0)
                {
                    //we need to consume a license
                    //As VidyoClient just informed that we never consume a license
                    Vidyo32.VidyoClientSendEvent(Vidyo32.VidyoClientInEvent.VIDYO_CLIENT_IN_EVENT_LICENSE, (IntPtr)0, 0);
                }
            }
            break;

            case Vidyo32.VidyoClientOutEvent.VIDYO_CLIENT_OUT_EVENT_ROOM_LINK:
            {
                Vidyo32.VidyoClientOutEventRoomLink guestLink = (Vidyo32.VidyoClientOutEventRoomLink)Marshal.PtrToStructure(param, typeof(Vidyo32.VidyoClientOutEventRoomLink));

                message += " Error = " + guestLink.error;
                message += "state =" + guestLink.state;
            } break;

            case Vidyo32.VidyoClientOutEvent.VIDYO_CLIENT_OUT_EVENT_CONFERENCE_CLEARED:
            {
                if (IsFlagSet(cApplicationClosing))
                {
                    //we were just waiting for application leave to come to restart closing process
                    ClearFlag(cCallStarted);
                    ClearFlag(cApplicationClosing);
                    StopLib();
                }
            }
            break;

            case Vidyo32.VidyoClientOutEvent.VIDYO_CLIENT_OUT_EVENT_CONFERENCE_ACTIVE:
            {
                SetFlag(cCallStarted);
            }
            break;

            case Vidyo32.VidyoClientOutEvent.VIDYO_CLIENT_OUT_EVENT_MUTED_VIDEO:
            {
                Vidyo32.VidyoClientOutEventMuted muteInfo = (Vidyo32.VidyoClientOutEventMuted)Marshal.PtrToStructure(param, typeof(Vidyo32.VidyoClientOutEventMuted));
                if (muteInfo.isMuted == Vidyo32.VIDYO_TRUE)
                {
                    SetFlag(cVideoMuted);
                }
                else
                {
                    ClearFlag(cVideoMuted);
                }
            }
            break;

            case Vidyo32.VidyoClientOutEvent.VIDYO_CLIENT_OUT_EVENT_MUTED_AUDIO_IN:
            {
                Vidyo32.VidyoClientOutEventMuted muteInfo = (Vidyo32.VidyoClientOutEventMuted)Marshal.PtrToStructure(param, typeof(Vidyo32.VidyoClientOutEventMuted));
                if (muteInfo.isMuted == Vidyo32.VIDYO_TRUE)
                {
                    SetFlag(cMicMuted);
                }
                else
                {
                    ClearFlag(cMicMuted);
                }
            }
            break;


                #region  VIDYO_CLIENT_OUT_EVENT(s) RINGING, CALLING AND RPOGRESS


                #endregion  VIDYO_CLIENT_OUT_EVENT(s) RINGING, CALLING AND RPOGRESS
            default:
            {
            }
            break;
            }
        }
Beispiel #12
0
        private void buttonStart_Click(object sender, EventArgs e)
        {
            try
            {
                //specifying the video handler location
                Rectangle rect    = new Rectangle(0, 0, pnlVideoArea.Width, pnlVideoArea.Height);
                int       szRect  = Marshal.SizeOf(rect);
                IntPtr    ptrRect = Marshal.AllocCoTaskMem(szRect);
                Marshal.StructureToPtr(rect, ptrRect, true);

                //Specifying logging information
                Vidyo32.VidyoClientLogParams logParams = new Vidyo32.VidyoClientLogParams();

                logParams.logSize = 500000;
                //log path must exist before running (this is done by Visual Studio build steps here)
                logParams.setpathToLogDir(".\\logs\\");
                logParams.setlogBaseFileName("VidyoSampleApplication");
                logParams.setLogLevelsAndCategories("warning all@App all@AppEvents all@LmiApp");
                logParams.setPathToDumpDir(".\\logs\\");


                int    szLog  = Marshal.SizeOf(logParams);
                IntPtr ptrLog = Marshal.AllocCoTaskMem(szLog);
                Marshal.StructureToPtr(logParams, ptrLog, true);

                Vidyo32.VidyoClientProfileParams profileParams = new Vidyo32.VidyoClientProfileParams();
                //this is where in the registry settings get stored betweeen runs. Empty value defaults to VidyoDesktop's location and settings (but also reuses VidyoDesktop EID)
                profileParams.setCONFIG_KEY_PATH("");
                profileParams.setMYDOCS_DIR("");
                profileParams.portNumber = 65000; //VidyoDesktop uses 63457
                profileParams.setPRODUCT_NAME("VidyoSampleApplication");
                profileParams.setPROGFILES_DIR("");
                profileParams.setVIDYO_DIR("");
                //this is where the CA base certificate is read from - here we're using Vidyo Desktop's version.
                profileParams.setCERT_FILE_DIR(".\\");
                profileParams.setINSTALLED_APP_DIR(".\\");


                int    szProfile  = Marshal.SizeOf(profileParams);
                IntPtr ptrProfile = Marshal.AllocCoTaskMem(szProfile);
                Marshal.StructureToPtr(profileParams, ptrProfile, true);

                //Starting the client
                Int32 startRes = Vidyo32.VidyoClientStart(m_myDelegate, // callback
                                                          IntPtr.Zero,  // data ptr
                                                          ptrLog,       //logParams,
                                                          pnlVideoArea.Handle,
                                                          ptrRect,      // Initial RECT
                                                          IntPtr.Zero,  //reserved
                                                          ptrProfile,   //profileParams,
                                                          false);       //reserved
                SetFlag(cVcStarted);

                //Enable window share feature
                Vidyo32.VidyoClientRequestEnableAppShare enableShare = new Vidyo32.VidyoClientRequestEnableAppShare();
                enableShare.isEnable = Vidyo32.VIDYO_TRUE;
                int nEnableSize = Marshal.SizeOf(enableShare);

                IntPtr ptrEnableShares = Marshal.AllocCoTaskMem(nEnableSize);
                Marshal.StructureToPtr(enableShare, ptrEnableShares, true);
                int szShares2 = Marshal.SizeOf(ptrEnableShares);

                uint error = Vidyo32.VidyoClientSendRequest(Vidyo32.VidyoClientRequest.VIDYO_CLIENT_REQUEST_ENABLE_APP_SHARE,
                                                            ptrEnableShares, nEnableSize);
                if (error != 0)
                {
                    return;
                }


                Vidyo32.VidyoClientRequestConfiguration config = new Vidyo32.VidyoClientRequestConfiguration();
                int nconfigSize = Marshal.SizeOf(config);

                IntPtr ptrConfig = Marshal.AllocCoTaskMem(nconfigSize);
                Marshal.StructureToPtr(config, ptrConfig, true);
                int nconfigSize2 = Marshal.SizeOf(ptrConfig);

                uint error2 = Vidyo32.VidyoClientSendRequest(Vidyo32.VidyoClientRequest.VIDYO_CLIENT_REQUEST_GET_CONFIGURATION,
                                                             ptrConfig, nconfigSize);
                if (error2 != 0)
                {
                    return;
                }
            }

            catch (Exception ex)
            {
            }
        }