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; }
//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); }
//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)); } } }
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; } }
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; } }
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 } }
//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); }