Example #1
0
        private void Form1_Load(object sender, EventArgs e)
        {
            OysterEncoderController.Control cc = new OysterEncoderController.Control("localhost", 22571);
            cc.Open();
            if (cc.IsRecording)
            {

            }
        }
Example #2
0
        private void UpdateEncoderList()
        {
            _event.WaitOne();
            _event.Reset();
            foreach (ListViewItem lvi in listView1.Items)
            {
                if (_done)
                    break;
                StreamingEncoder encoder = (StreamingEncoder) lvi.Tag;
                try
                {
                    Control oec =
                        new Control(encoder.ControlAddress, encoder.ControlPort);

                    lvi.SubItems[3].Text = "Connecting";
                    Application.DoEvents();
                    if (oec.Open())
                    {
                        if (oec.IsRecording)
                        {
                            lvi.SubItems[2].Text = "Yes";
                            lvi.BackColor = Color.Cornsilk;
                            Application.DoEvents();
                        }
                        else
                        {
                            lvi.SubItems[2].Text = "No";
                            lvi.BackColor = Color.White;
                            Application.DoEvents();
                        }
                        oec.Close();
                        lvi.SubItems[3].Text = "Ready...";
                        lvi.Font = new Font(lvi.Font, FontStyle.Regular);
                        Application.DoEvents();
                    }
                    else
                    {
                        IPAddress ipAddress;
                        if (encoder.ControlAddress.Split(new char[] {'.'}).Length != 3)
                        {
                            IPHostEntry hostEntry = Dns.GetHostEntry(encoder.ControlAddress);
                            ipAddress = hostEntry.AddressList[0];
                        }
                        else
                        {
                            byte[] addressBytes = ASCIIEncoding.ASCII.GetBytes(encoder.ControlAddress);
                            ipAddress = new IPAddress(addressBytes);
                        }
                        Icmp ping = new Icmp(ipAddress);
                        if (ping.Ping() > TimeSpan.FromMilliseconds(5000.0))
                        {
                            lvi.SubItems[2].Text = "???";
                            lvi.SubItems[3].Text = "Possibly disabled. Needs to be power cycled.";
                            lvi.ForeColor = Color.LightGray;
                            lvi.Font = new Font(lvi.Font, FontStyle.Bold);
                            Application.DoEvents();
                        }
                        else
                        {
                            lvi.Font = new Font(lvi.Font, FontStyle.Regular);
                            lvi.SubItems[2].Text = "Yes";
                            lvi.SubItems[3].Text = "Encoder refused connection. Usually means it is recording...";
                            lvi.BackColor = Color.Cornsilk;
                            Application.DoEvents();
                        }
                    }
                }
                catch (Exception e)
                {
                    lvi.ForeColor = Color.LightGray;
                    lvi.SubItems[3].Text = "Offline";
                }
                Application.DoEvents();
            }
            _event.Set();
            Application.DoEvents();
        }
Example #3
0
        private void button1_Click(object sender, EventArgs e)
        {
            if (listView1.CheckedItems.Count > 0 &&
                MessageBox.Show(this, "Are you sure you want to restart the selected encoders?", "Restart requested...",
                                MessageBoxButtons.YesNo) == DialogResult.Yes)
            {
                button1.Enabled = false;
                button2.Enabled = false;
                Cursor savedCursor = Cursor;
                Cursor = Cursors.WaitCursor;
                _event.WaitOne();
                _event.Reset();
                foreach (ListViewItem lvi in listView1.CheckedItems)
                {
                    if (_done)
                        break;
                    StreamingEncoder encoder = (StreamingEncoder) lvi.Tag;
                    Control oec =
                        new Control(encoder.ControlAddress, encoder.ControlPort);
                    bool success = false;

                    lvi.SubItems[3].Text = "Attempting to Restart...";
                    lvi.SubItems[2].Text = "No";
                    Application.DoEvents();
                    if (oec.Open())
                    {
                        if (oec.IsRecording)
                        {
                            lvi.SubItems[2].Text = "Yes";
                            lvi.SubItems[3].Text = "Recording will NOT be saved!";
                        }
                        Application.DoEvents();

                        Connection cn =
                            oec.Connection;
                        lvi.SubItems[3].Text = "Connected, sending command...";
                        Application.DoEvents();
                        Command retcmd = cn.SendCommandWaitForResponse(new Command("RBT", "0"));
                        if (retcmd == null)
                        {
                            lvi.SubItems[3].Text = "Received an invalid response: <null>";
                        }
                        else
                        {
                            if (retcmd.Params.Length > 0)
                            {
                                if (retcmd.Params[0].Equals("OK"))
                                {
                                    lvi.SubItems[3].Text = "Sent restart command successfully.";
                                    success = true;
                                }
                                Application.DoEvents();
                            }
                            if (!success)
                            {
                                lvi.SubItems[3].Text = "Received an invalid response: " + retcmd.RawData;
                                Application.DoEvents();
                            }
                        }
                        oec.Close();
                    }
                    else
                    {
                        lvi.SubItems[3].Text = "Could not connect...";
                    }
                    Application.DoEvents();
                }
                Cursor = savedCursor;
                _event.Set();
                button1.Enabled = true;
                button2.Enabled = true;
            }
            Application.DoEvents();
        }
Example #4
0
        bool Test()
        {
            string stest, srslt, stemp;
            bool bReturn = true;

            m_oec = new OysterEncoderController.Control(m_sServerAddress,m_iPort);

            // open a connection
            stest = "open a connection";
            if (m_oec.Open())
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);

            /*
            // list all files on the device
            stest = "list all files on the device";
            if (m_oec.RequestFileList())
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
            }
            Console.WriteLine(stest + ": " + srslt);
            */

            // generate a filename and save it
            string sFilename = System.Guid.NewGuid().ToString();

            // start a recording with generated filename
            stest = "StartRecording";
            if (m_oec.StartRecording(sFilename))
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);

            // get RunState
            stest = "get RunState";
            srslt = m_oec.RunState;
            if (srslt != null)
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);

            // get ArchiveState
            stest = "get ArchiveState";
            srslt = m_oec.ArchiveState;
            if (srslt != null)
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);

            // check IsRecording
            stest = "check IsRecording";
            if (m_oec.IsRecording)
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);

            // stop the recording
            stest = "StopRecording";
            if (m_oec.StopRecording())
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);

            /*
            // list all files on the device
            stest = "list all files on the device";
            if (m_oec.RequestFileList())
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
            }
            Console.WriteLine(stest + ": " + srslt);
            */

            // set FilePath
            stest = "set FilePath";
            stemp = @"C:\OysterMedia";
            m_oec.FilePath = stemp;
            if (m_oec.LastError == string.Empty)
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);

            // set Profile (NOT IMPLEMENTED)
            // get ArchiveState
            stest = "get ArchiveState";
            srslt = m_oec.ArchiveState;
            if (srslt != null)
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);
            // get RunState
            stest = "get RunState";
            srslt = m_oec.RunState;
            if (srslt != null)
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);
            // get FilePath
            stest = "get FilePath";
            srslt = m_oec.FilePath;
            if (srslt != null)
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);
            // get Profile
            stest = "get Profile";
            srslt = m_oec.Profile;
            if (srslt != null)
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);
            // get AllProperties
            stest = "get AllProperties";
            srslt = m_oec.AllProperties;
            if (srslt != null)
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);

            // close the connection
            stest = "close the connection";
            if (m_oec.Close())
            {
                srslt = "passed";
            }
            else
            {
                srslt = "failed";
                bReturn = false;
            }
            Console.WriteLine(stest + ": " + srslt);
            m_oec = null;
            return bReturn;
        }
Example #5
0
        private void btnStart_Click(object sender, System.EventArgs e)
        {
            string sName = System.Guid.NewGuid().ToString();
            if(cbCamera1.Checked)
            {
                m_OEC1 = new OysterEncoderController.Control(Source1.ControlAddress,Source1.ControlPort);
            }
            if(cbCamera2.Checked)
            {
                m_OEC2 = new OysterEncoderController.Control(Source2.ControlAddress,Source2.ControlPort);
            }

            try
            {
                if(m_OEC1 != null)
                {
                    if(!m_OEC1.Open())
                    {
                        MessageBox.Show("Unable to connect to " + Source1.Description +
                            " Encoder is either in use or offline.","Oyster Event Notification");
                        MessageBox.Show("Recording session aborted.","Oyster Event Notification");
                        goto CleanUp;
                    }
                }
                if(m_OEC2 != null)
                {
                    if(!m_OEC2.Open())
                    {
                        MessageBox.Show("Unable to connect to " + Source2.Description +
                            " Encoder is either in use or offline.","Oyster Event Notification");
                        MessageBox.Show("Recording session aborted.","Oyster Event Notification");
                        goto CleanUp;
                    }
                }
            }
            catch(Exception Err)
            {
                MessageBox.Show(Err.Message,"Oyster Event Notification");
                MessageBox.Show("Recording session aborted.","Oyster Event Notification");
                goto CleanUp;
            }

            if(m_OEC1 != null)
            {
                if(!m_OEC1.StartRecording(System.Guid.NewGuid().ToString()))
                {
                    MessageBox.Show("Unabled to start recording","Oyster Event Notification");
                    MessageBox.Show("Recording session aborted.","Oyster Event Notification");
                    goto CleanUp;
                }
                if(!m_OEC2.StartRecording(System.Guid.NewGuid().ToString()))
                {
                    MessageBox.Show("Unabled to start recording","Oyster Event Notification");
                    MessageBox.Show("Recording session aborted.","Oyster Event Notification");
                    goto CleanUp;
                }

            }
            if(m_OEC1 != null)
            {
                m_OEC1.StartRecording(System.Guid.NewGuid().ToString());
            }
            else if((m_OEC1 == null)&&(m_OEC2 == null))
            {
                this.DialogResult = DialogResult.Cancel;
                return;
            }
            ElapsedTime.Enabled = true;
            pnlStart.Visible = false;
            pnlStop.Visible = true;

            return;
            CleanUp:{}
            if(m_OEC1 != null)
            {
                try
                {
                    m_OEC1.StopRecording();
                }
                catch(Exception Err)
                {
                    string sSeeError = Err.Message;
                }
                try
                {
                    m_OEC1.Close();
                }
                catch(Exception Err)
                {
                    string sSeeError = Err.Message;
                }
            }
            if(m_OEC2 != null)
            {
                try
                {
                    m_OEC2.StopRecording();
                }
                catch(Exception Err)
                {
                    string sSeeError = Err.Message;
                }
                try
                {
                    m_OEC2.Close();
                }
                catch(Exception Err)
                {
                    string sSeeError = Err.Message;
                }
            }
            this.DialogResult = DialogResult.Abort;
        }
Example #6
0
        void StartRecording()
        {
            frmRecordOptions frm = new frmRecordOptions();

            if(!System.IO.Directory.Exists(frm.CurrentRecordOptions.WMVDirectory))
            {
                try
                {
                    System.IO.Directory.CreateDirectory(frm.CurrentRecordOptions.WMVDirectory);
                }
                catch(Exception Err)
                {
                    MessageBox.Show("Error details:" + Err.Message,"Temporary storage directory does not exist. Creation attempt failed.",MessageBoxButtons.OK,MessageBoxIcon.Error);
                    return;
                }
            }
            frmStatusWindow StatusWindow = new frmStatusWindow("Desktop Recorder: Preparing Session Capture","Please wait...");

            bDontClick = true;
            StatusWindow.Owner = this;
            StatusWindow.Show();
            bool bRecordCamera = true, bRecordScreen = true; // bError = false;
            int NumCams = 0;
            string sErrorBody = "";
            string sErrorCaption = "";

            //btnStartStop.Text = "Preparing...";

            //btnStartStop.Update();
            Application.DoEvents();

            //			clock.DigitalDisplayColor = SriClocks.DigitalColor.GreenColor;
            //			clock.ClockDisplayType = SriClocks.ClockType.StopWatch;
            //			clock.Reset();
            //			btnStartStop.Text = "STOP";

            // startup the oyster encoder

            RecordOptions ro = frm.CurrentRecordOptions;
            bool bIsSession = false;

            System.Diagnostics.Debug.Assert(m_oec == null,"OEC should be null when starting a recording.");
            #region SCREEN SELECTION

            object oparams = null;
            ScreenEncoder.CapturePerformance cp = ScreenEncoder.CapturePerformance.VeryLow;
            ScreenEncoder.CaptureType ct = ScreenEncoder.CaptureType.FullScreen;
            switch (frm.CurrentRecordOptions.RecordType)
            {
                case RecordOptions.ScreenRecordType.ScreenRecordNone:
                    bRecordScreen = false;
                    break;
                case RecordOptions.ScreenRecordType.ScreenRecordFullScreen:

                    //					oparams = "N/A";
                    /*Changed By Kevin Gray 5-6-05 due to errors in typecasting "N/A" to an object[]*/
                    oparams = new object[1];
                    cp = frm.CurrentRecordOptions.ScreenCapturePerformance;
                    ct = ScreenEncoder.CaptureType.FullScreen;
                    bRecordScreen = true;
                    break;
                case RecordOptions.ScreenRecordType.ScreenRecordWindow:
                    CarverLab.Utility.Win32Wrapper w32 = new CarverLab.Utility.Win32Wrapper();
                    CarverLab.Utility.Window CapWin = w32[frm.CurrentRecordOptions.WindowTitleToRecord];

                    cp = frm.CurrentRecordOptions.ScreenCapturePerformance;
                    if (frm.CurrentRecordOptions.WindowTitleToRecord == string.Empty ||
                        CapWin == null)
                    {
                        if (System.Windows.Forms.MessageBox.Show(this,"Could not find the specified window entitled: " + frm.CurrentRecordOptions.WindowTitleToRecord + ". Continue and record the full screen instead?",
                            "Record the Entire Screen?",System.Windows.Forms.MessageBoxButtons.YesNo,
                            System.Windows.Forms.MessageBoxIcon.Question,System.Windows.Forms.MessageBoxDefaultButton.Button1)
                            == System.Windows.Forms.DialogResult.Yes)
                        {
                            ct = ScreenEncoder.CaptureType.FullScreen;
                            oparams = "N/A";
                        }
                        else
                        {
                            if(bRecordCamera)
                            {

                                if (System.Windows.Forms.MessageBox.Show(this,"Would you like to continue recording camera(s)?",
                                    "Record Cameras without Screen Capture?",System.Windows.Forms.MessageBoxButtons.YesNo,
                                    System.Windows.Forms.MessageBoxIcon.Question,System.Windows.Forms.MessageBoxDefaultButton.Button1)
                                    != System.Windows.Forms.DialogResult.Yes)
                                {
                                    bRecordScreen = false;
                                }
                            }
                        }
                    }
                    else
                    {
                        System.Diagnostics.Debug.Assert(CapWin != null,"CapWin should not be null!");
                        ct = ScreenEncoder.CaptureType.WindowByHandle;
                        oparams = CapWin;
                    }
                    break;
                default:
                    System.Diagnostics.Debug.Assert(false,"Invalid recording type selected for screen recording.");
                    break;
            }

            #endregion

            #region SET UP FOR SCREEN RECORD

            if (bRecordScreen)
            {
                if (!m_encoder.Execute(ScreenEncoder.Command.SetupEncoder,cp,ct,oparams))
                {
                    sErrorBody = "Could not start the screen recording process. This is a serious error. Contact your system administrator.";
                    sErrorCaption = "Screen Recording Failure...";
                    goto Label_Screen_Error;
                }
                Application.DoEvents();
                System.Threading.Thread.Sleep(1500);
                Application.DoEvents();
            }
            #endregion

            #region CAMERA SELECTION

            switch (ro.SelectedCamera)
            {
                case RecordOptions.CameraSelection.CameraNone:
                    bRecordCamera = false;
                    NumCams = 0;
                    break;
                case RecordOptions.CameraSelection.CameraOne:
                    NumCams = 1;

                    m_sCameraRecordingName = new string[1];
                    m_oec = new OysterEncoderController.Control[1];
                    m_oec[0] = new OysterEncoderController.Control(ro.DefaultOysterDeviceAddress,OysterEncoderController.Control.CameraDefaultPort(1),ref mLogger);

                    if (!m_oec[0].Open())
                    {
                        sErrorBody = "Could not start the camera one recording process. Camera may be in use or this could be a serious error. Contact your system administrator.";
                        sErrorCaption = "Camera Recording Failure...";
                        //bRecordCamera = false;
                        //bError = true;
                        //Reset();
                        goto Label_Camera_Error;
                    }
                    break;
                case RecordOptions.CameraSelection.CameraTwo:
                    NumCams = 1;
                    m_sCameraRecordingName = new string[1];
                    m_oec = new OysterEncoderController.Control[1];
                    m_oec[0] = new OysterEncoderController.Control(ro.DefaultOysterDeviceAddress,OysterEncoderController.Control.CameraDefaultPort(2),ref mLogger);
                    if (!m_oec[0].Open())
                    {
                        sErrorBody = "Could not start the camera two recording process. Camera may be in use or this could be a serious error. Contact your system administrator.";
                        sErrorCaption = "Camera Recording Failure...";
                        goto Label_Camera_Error;
                    }
                    break;
                case RecordOptions.CameraSelection.CameraOneAndTwo:
                    NumCams = 2;
                    bIsSession = true;
                    m_sCameraRecordingName = new string[2];
                    m_oec = new OysterEncoderController.Control[2];
                    m_oec[0] = new OysterEncoderController.Control(ro.DefaultOysterDeviceAddress,OysterEncoderController.Control.CameraDefaultPort(1),ref mLogger);
                    if (!m_oec[0].Open())
                    {
                        sErrorBody = "Could not start the camera one recording process. Camera may be in use or this could be a serious error. Contact your system administrator.";
                        sErrorCaption = "Camera Recording Failure...";
                        goto Label_Camera_Error;
                    }
                    m_oec[1] = new OysterEncoderController.Control(ro.DefaultOysterDeviceAddress,OysterEncoderController.Control.CameraDefaultPort(2),ref mLogger);
                    if (!m_oec[1].Open())
                    {
                        sErrorBody = "Could not start the camera two recording process. Camera may be in use or this could be a serious error. Contact your system administrator.";
                        sErrorCaption = "Camera Recording Failure...";
                        goto Label_Camera_Error;
                    }
                    break;
                default:
                    System.Diagnostics.Debug.Assert(false,"Invalid SelectedCamera enum");

                    sErrorBody = "A programmer error detected.  Please try reselected the desired camera in the options menu. If problem persist please contact your Administrator.";
                    sErrorCaption = "Programmer Error: Invalid SelectedCamera enum";
                    //bRecordCamera = false;
                    //bError = true;
                    goto Label_Camera_Error;
            }

            #endregion

            #region Require Oyster Objects
            //OCL.Oyster oyster = new OCL.Oyster();
            OCL.Oyster oyster = new OCL.Oyster(frm.CurrentRecordOptions.DefaultOysterAddress,frm.CurrentRecordOptions.DefaultOysterConnectionPort);
            OCL.User me = oyster.GetUserById(m_me.ID);
            OCL.VideoStorageServer vss;// = (OCL.VideoStorageServer)oyster.GetUnassignedObject(OCL.OysterUnassignedObjects.VideoStorageServer);

            OCL.Scene sce;// = (OCL.Scene)oyster.GetUnassignedObject(OCL.OysterUnassignedObjects.Scene);
            OCL.Source src = null;// = (OCL.Source)oyster.GetUnassignedObject(OCL.OysterUnassignedObjects.Source);
            foreach (OCL.Source srcx in oyster.AllVisibleSources(me))
            {
                string shostname = System.Net.Dns.GetHostByAddress(System.Net.IPAddress.Parse(frm.CurrentRecordOptions.DefaultOysterDeviceAddress)).HostName;
                //strip off domain info
                if (shostname.IndexOf(".") != -1)
                {
                    shostname = shostname.Substring(0,shostname.IndexOf("."));
                }
                if (srcx.ControlAddress.ToLower() == shostname.ToLower() ||
                    srcx.ControlAddress.ToLower() == frm.CurrentRecordOptions.DefaultOysterDeviceAddress.ToLower())
                {
                    src = srcx;
                    break;
                }
            }
            if (src == null)
            {

                sErrorBody = "The data for the Oyster Device that was selected for this recording is not configured correctly. Contact the system administrator.";
                sErrorCaption = "Camera Recording Failure";
                //bRecordCamera = false;
                //bError = true;
                goto Label_Camera_Error;
            }
            sce = src.CurrentScene;
            vss = sce.AssignedVideoStorageServer;
            #endregion

            #region START RECORDING

            if (bRecordScreen)
            {
                if (bRecordCamera)
                {
                    bIsSession = true;
                }
                m_sScreenRecordingName = System.Guid.NewGuid().ToString();
                Application.DoEvents();
                System.Threading.Thread T = new System.Threading.Thread(new System.Threading.ThreadStart(StartScreenCapture));
                T.Start();
                //m_encoder.Execute(ScreenEncoder.Command.StartRecording,m_sScreenRecordingName);

            }

            if (bRecordCamera)
            {
                for (int i = 0; i < m_oec.GetLength(0); i++)
                {
                    m_sCameraRecordingName[i] = System.Guid.NewGuid().ToString();
                    m_oec[i].FilePath = vss.OysterRootDirectory;
                    if (m_oec[i].LastError.Length > 0)
                    {
                        sErrorBody = m_oec[i].LastError;
                        sErrorCaption = "Recording Startup Error...";
                        goto Label_Camera_Error;
                    }
                    m_oec[i].StartRecording(m_sCameraRecordingName[i]);
                    m_oec[i].OnConnectionError +=new OysterEncoderController.Control.OnConnectionErrorHandler(frmDisplay_OnConnectionError);

                }
            }
            #endregion

            if (bIsSession)
            {
                m_sRecordingSessionId = System.Guid.NewGuid().ToString();
            }
            else
                m_sRecordingSessionId = null;

            #region Create Database Entries

            bool bIsPresentation = false;
            if(bRecordScreen && bRecordCamera)
            {
                bIsPresentation = true;
            }
            int NumRecordings = NumCams;
            if(bRecordScreen)
                NumRecordings++;

            CurrentRecordingSession = me.CreateASession(DateTime.Now.ToString(),bIsPresentation);
            CurrentRecordings = new OCL.Recording[NumRecordings];
            int iRecIndex = 0;

            /// Create Camera Recording Entries
            if(bRecordCamera)
            {
                for (int i = 0; i < NumCams; i++)
                {
                    bool bIsPrimaryCamera;

                    if (i == System.Convert.ToInt32(frm.CurrentRecordOptions.CameraPrimary))
                        bIsPrimaryCamera = true;
                    else
                        bIsPrimaryCamera = false;

                    CurrentRecordings[iRecIndex] = CurrentRecordingSession.CreateRecording(m_sCameraRecordingName[i] + ".wmv",
                        "Camera " + (i+1),me,sce,src,false,bIsPrimaryCamera);
                    //CurrentRecordings[iRecIndex].UpdateFileSizeOnDisk();
                    //CurrentRecordings[iRecIndex].Update(TotalTime.ToString());
                    iRecIndex++;
                }
            }
            /// Create Desktop Recording Entry
            if(bRecordScreen)
            {

                string sRawFileName = m_sScreenRecordingName;
                string sRName = sRawFileName + ".wmv";

                string sFileLocation = frm.CurrentRecordOptions.WMVDirectory + @"\" + sRName;

                System.IO.FileInfo FID = new System.IO.FileInfo(sFileLocation);
                m_DesktopRecordingSize = FID.Length;
                CurrentRecordings[iRecIndex] = CurrentRecordingSession.CreateRecording(sRName,"Presentation",
                    me,sce,src,true,false);
                //CurrentRecordings[iRecIndex].Update(m_DesktopRecordingSize);
                //CurrentRecordings[iRecIndex].Update(TotalTime.ToString());
                DataRow R = null;
                string SourceFile = frm.CurrentRecordOptions.WMVDirectory + @"\" + sRName;
                try
                {
                    R = dsFileTransfer.Tables["File"].NewRow();
                    R["ObjectID"] = CurrentRecordings[iRecIndex].ID;
                    R["OysterObjectTypeID"]= 2; //Recording Type
                    R["RecordingSessionID"] = CurrentRecordings[iRecIndex].SessionID;
                    R["UserID"] = m_me.ID;
                    R["UserDescription"]= m_me.Description;
                    R["VideoStorageServerID"]= vss.ID;
                    R["OysterServerAddress"] = frm.CurrentRecordOptions.DefaultOysterAddress;
                    R["SourceFile"] = frm.CurrentRecordOptions.WMVDirectory + @"\" + sRName;
                    R["DestinationFileName"] = sRName;
                    R["DeleteAfterTransfer"] = true;
                    dsFileTransfer.Tables["File"].Rows.Add(R);
                    dsFileTransfer.Tables["File"].AcceptChanges();
                    dsFileTransfer.WriteXml(frm.CurrentRecordOptions.WMVDirectory + @"\" + sRawFileName + ".xml");
                }
                catch(Exception Err)
                {
                    MessageBox.Show(Err.Message,"Programmer Error during writing xml");
                }
            }
            #endregion

            clock.DigitalDisplayColor = SriClocks.DigitalColor.GreenColor;
            clock.ClockDisplayType = SriClocks.ClockType.StopWatch;
            clock.Reset();
            btnStartStop.Text = "STOP";
            btnStartStop.Enabled = true;
            clock.StartTimer();
            StartRecordingTime = DateTime.Now;
            m_bRecording = true;
            m_ScreenIsCaptured = bRecordScreen;
            m_CameraIsCaptured = bRecordCamera;
            this.TopMost = false;
            bDontClick = false;
            StatusWindow.Hide();
            StatusWindow.Dispose();
            return;

            Label_Camera_Error:
            {
                bDontClick = false;
                StatusWindow.Hide();
                StatusWindow.Dispose();
                System.Windows.Forms.MessageBox.Show(this,sErrorBody,
                    sErrorCaption,System.Windows.Forms.MessageBoxButtons.OK,
                    System.Windows.Forms.MessageBoxIcon.Error);
                if(m_oec != null)
                {
                    for(int i=0; i< m_oec.Length;i++)
                    {
                        m_oec[i] = null;
                    }
                    m_oec = null;
                }
                Reset();
                m_CameraIsCaptured = false;
                m_ScreenIsCaptured = false;
                this.TopMost = true;
                return;
            }
            Label_Screen_Error:
            {
                bDontClick = false;
                StatusWindow.Hide();
                StatusWindow.Dispose();
                System.Windows.Forms.MessageBox.Show(this,sErrorBody,
                    sErrorCaption,System.Windows.Forms.MessageBoxButtons.OK,
                    System.Windows.Forms.MessageBoxIcon.Error);
                if(m_oec != null)
                {
                    for(int i=0; i< m_oec.Length;i++)
                    {
                        m_oec[i].StopRecording();
                        m_oec[i].Close();
                        m_oec[i] = null;
                    }
                    m_oec = null;
                }
                m_CameraIsCaptured = false;
                m_ScreenIsCaptured = false;
                Reset();
                this.TopMost = true;
                return;
            }
        }