예제 #1
0
 public WebcamEndParams(int camera, int sessionID, Constants.TestTypes testType, int uniqueID, WebcamManage.GuiContactsEncoder guiContactsEncoder)
 {
     this.camera             = camera;
     this.sessionID          = sessionID;
     this.testType           = testType;
     this.uniqueID           = uniqueID;
     this.guiContactsEncoder = guiContactsEncoder;
 }
예제 #2
0
    //do this to start them at the "same moment"
    //can pass a -1 uniqueID if test is cancelled
    private void webcamEndTwoCams(Constants.TestTypes testType, int uniqueID)
    {
        WebcamManage.GuiContactsEncoder guiContactsEncoder = WebcamManage.GuiContactsEncoder.CONTACTS;
        if (testType == Constants.TestTypes.ENCODER)
        {
            guiContactsEncoder = WebcamManage.GuiContactsEncoder.ENCODER;
            label_video_encoder_feedback.Text = "";
        }

        //button_video_play_this_test.Sensitive = false;
        //button_video_play_this_test_sensitive (guiContactsEncoder, false);

        if (!preferences.videoOn || webcamManage == null)
        {
            return;
        }

        Webcam.Result result1 = webcamManage.RecordEnd(1);
        Webcam.Result result2 = webcamManage.RecordEnd(2);

        string errorMessage = "";

        if (result1.success)
        {
            Webcam.Result result1Exit = webcamManage.ExitAndFinish(1, currentSession.UniqueID, testType, uniqueID, guiContactsEncoder);
            if (uniqueID != -1 && !result1Exit.success)
            {
                errorMessage += result1Exit.error + "\n";
            }
        }
        else
        {
            errorMessage += result1.error + "\n";
        }

        if (result2.success)
        {
            Webcam.Result result2Exit = webcamManage.ExitAndFinish(2, currentSession.UniqueID, testType, -1 * uniqueID, guiContactsEncoder);
            if (uniqueID != -1 && !result2Exit.success)
            {
                errorMessage += result2Exit.error + "\n";
            }
        }
        else
        {
            errorMessage += result2.error + "\n";
        }

        if (errorMessage != "")
        {
            new DialogMessage(Constants.MessageTypes.WARNING, errorMessage);
        }

        //button_video_play_this_test.Sensitive = (uniqueID != -1 && errorMessage == "");
        button_video_play_this_test_sensitive(guiContactsEncoder, (uniqueID != -1 && errorMessage == ""));
        button_video_play_selected_test(current_menuitem_mode);
    }
예제 #3
0
    //can pass a -1 uniqueID if test is cancelled
    private void webcamEnd(Constants.TestTypes testType, int uniqueID)
    {
        //on contacts tests, we have WebcamStarted. No need to stop camera because it is not recording
        if (testType != Constants.TestTypes.ENCODER && !webcamManage.ReallyStarted)
        {
            return;
        }

        WebcamManage.GuiContactsEncoder guiContactsEncoder = WebcamManage.GuiContactsEncoder.CONTACTS;
        if (testType == Constants.TestTypes.ENCODER)
        {
            guiContactsEncoder = WebcamManage.GuiContactsEncoder.ENCODER;
            label_video_encoder_feedback.Text = "";

            hbox_video_encoder.Sensitive            = true;
            hbox_video_encoder_no_capturing.Visible = true;
            hbox_video_encoder_capturing.Visible    = false;
        }

        if (!preferences.videoOn || webcamManage == null)
        {
            return;
        }

        Webcam.Result result = webcamManage.RecordEnd(1);

        if (!result.success)
        {
            new DialogMessage(Constants.MessageTypes.WARNING, result.error);
            return;
        }

        webcamEndParams = new WebcamEndParams(1, currentSession.UniqueID, testType, uniqueID, guiContactsEncoder);

        //on encoder do not have a delayed call to not have problems with CopyTempVideo on src/gui/encoder.cs
        //also on encoder exercise ends when movement has really finished
        if (testType == Constants.TestTypes.ENCODER)
        {
            LogB.Information("Encoder, immediate call to webcamEndDo()");
            webcamEndDo();
        }
        else
        {
            if (preferences.videoStopAfter == 0)
            {
                webcamEndDo();
            }
            else
            {
                //call it later to be able to have some video on a short test like a jump.
                LogB.Information(string.Format("Preparing to call webcamEndDo() in {0} s", preferences.videoStopAfter));
                GLib.Timeout.Add(Convert.ToUInt32(preferences.videoStopAfter * 1000), new GLib.TimeoutHandler(webcamEndDo));
            }
        }
    }
예제 #4
0
 private void label_video_feedback_text(WebcamManage.GuiContactsEncoder guiContactsEncoder, string text)
 {
     if (guiContactsEncoder == WebcamManage.GuiContactsEncoder.CONTACTS)
     {
         label_video_feedback.Text = text;
     }
     else
     {
         label_video_encoder_feedback.Text = text;
     }
 }
예제 #5
0
 private void button_video_preview_visible(WebcamManage.GuiContactsEncoder guiContactsEncoder, bool visible)
 {
     if (guiContactsEncoder == WebcamManage.GuiContactsEncoder.CONTACTS)
     {
         button_video_preview.Visible = visible;
     }
     else
     {
         button_video_encoder_preview.Visible = visible;
     }
 }
예제 #6
0
 private void button_video_play_this_test_sensitive(WebcamManage.GuiContactsEncoder guiContactsEncoder, bool s)
 {
     if (guiContactsEncoder == WebcamManage.GuiContactsEncoder.CONTACTS)
     {
         button_video_play_this_test.Sensitive = s;
     }
     else
     {
         //button_video_encoder_play_this_test.Sensitive = s;
         button_video_play_this_test_encoder.Sensitive = s;             //TODO:jugar amb la sensitivitat de aixo quan hi ha o no signalUniqueID
     }
 }
예제 #7
0
    //private bool webcamStart (WebcamManage.GuiContactsEncoder guiContactsEncoder, int ncams, bool waitUntilRecording)
    private bool webcamStart(WebcamManage.GuiContactsEncoder guiContactsEncoder, int ncams) //, bool waitUntilRecording)
    {
        bool waitUntilRecording = true;                                                     //only applies to contacts, right now

        if (guiContactsEncoder == WebcamManage.GuiContactsEncoder.ENCODER)
        {
            waitUntilRecording = false;
        }

        if (guiContactsEncoder == WebcamManage.GuiContactsEncoder.ENCODER)
        {
            hbox_video_encoder.Sensitive = false;
        }

        if (!preferences.videoOn || webcamManage == null)
        {
            return(false);
        }

        if (guiContactsEncoder == WebcamManage.GuiContactsEncoder.ENCODER)
        {
            hbox_video_encoder_no_capturing.Visible = false;
            hbox_video_encoder_capturing.Visible    = true;
        }

        button_video_preview_visible(guiContactsEncoder, false);

        string errorMessage = "";

        if (ncams == 1)
        {
            if (!webcamManage.RecordPrepare(preferences.videoDevice, preferences.videoDeviceResolution, preferences.videoDeviceFramerate).success)
            {
                return(false);
            }

            if (!webcamManage.RecordStart(1))
            {
                return(false);
            }

            label_video_feedback_text(guiContactsEncoder, "Preparing camera");
        }
        else if (ncams == 2)
        {
            if (!webcamManage.RecordPrepare(preferences.videoDevice, "/dev/video1", preferences.videoDeviceResolution, preferences.videoDeviceFramerate).success)
            {
                return(false);
            }

            if (!webcamManage.RecordStart(2))
            {
                return(false);
            }

            label_video_feedback_text(guiContactsEncoder, "Preparing camera");
        }

        if (waitUntilRecording)
        {
            webcamStartThreadBeforeTestStatus = statusEnum.NOT_STARTED;
            webcamStartThread = new Thread(new ThreadStart(webcamStartThreadBeforeTest));
            GLib.Idle.Add(new GLib.IdleHandler(pulseWebcamGTK));
            webcamStartThread.Start();
        }

        return(true);
    }