diff --git a/assets/webconfig/content/conf_grabber.html b/assets/webconfig/content/conf_grabber.html
index 5e36d204..1b50ba3f 100644
--- a/assets/webconfig/content/conf_grabber.html
+++ b/assets/webconfig/content/conf_grabber.html
@@ -3,19 +3,6 @@
diff --git a/assets/webconfig/content/conf_instcapture.html b/assets/webconfig/content/conf_instcapture.html
new file mode 100644
index 00000000..73a8bf75
--- /dev/null
+++ b/assets/webconfig/content/conf_instcapture.html
@@ -0,0 +1,24 @@
+
+
+
+
diff --git a/assets/webconfig/content/dashboard.html b/assets/webconfig/content/dashboard.html
index 175ab711..0aec432a 100644
--- a/assets/webconfig/content/dashboard.html
+++ b/assets/webconfig/content/dashboard.html
@@ -16,6 +16,34 @@
Status
+
+
+
+
+
+ Capturing Hardware
+ |
+
+
+
+
+ |
+ Screen-Grabber |
+
+ disabled
+
+ |
+
+
+ |
+ Video-Grabber |
+
+ disabled
+
+ |
+
+
+
diff --git a/assets/webconfig/i18n/en.json b/assets/webconfig/i18n/en.json
index 1e7faf75..746f308a 100644
--- a/assets/webconfig/i18n/en.json
+++ b/assets/webconfig/i18n/en.json
@@ -367,11 +367,15 @@
"edt_conf_grabber_discovered_title": "Device discovered",
"edt_conf_grabber_discovered_title_info": "Select your capture device discovered",
"edt_conf_grabber_discovery_inprogress": "Discovery in progress",
+ "edt_conf_instC_screen_grabber_device_expl": "The screen capture device used",
+ "edt_conf_instC_screen_grabber_device_title": "Screen capture device",
"edt_conf_instC_systemEnable_expl": "Enables the screen capture for this led hardware instance",
"edt_conf_instC_systemEnable_title": "Enable screen capture",
"edt_conf_instC_v4lEnable_expl": "Enables the USB capture for this led hardware instance",
"edt_conf_instC_v4lEnable_title": "Enable USB capture",
- "edt_conf_instCapture_heading_title": "Instance Capture",
+ "edt_conf_instC_video_grabber_device_expl": "The video capture device used",
+ "edt_conf_instC_video_grabber_device_title": "Video capture device",
+ "edt_conf_instCapture_heading_title": "Capture Devices",
"edt_conf_js_heading_title": "JSON Server",
"edt_conf_log_heading_title": "Logging",
"edt_conf_log_level_expl": "Depending on loglevel you see less or more messages in your log.",
@@ -775,11 +779,11 @@
"general_comp_BOBLIGHTSERVER": "Boblight Server",
"general_comp_FLATBUFSERVER": "Flatbuffers Server",
"general_comp_FORWARDER": "Forwarder",
- "general_comp_GRABBER": "Screen Capture",
- "general_comp_LEDDEVICE": "LED device",
+ "general_comp_GRABBER": "Capture Screen",
+ "general_comp_LEDDEVICE": "LED Output",
"general_comp_PROTOSERVER": "Protocol Buffers Server",
"general_comp_SMOOTHING": "Smoothing",
- "general_comp_V4L": "USB Capture",
+ "general_comp_V4L": "Capture USB-Input",
"general_country_cn": "China",
"general_country_de": "Germany",
"general_country_es": "Spain",
@@ -851,7 +855,8 @@
"main_menu_general_conf_token": "General",
"main_menu_grabber_conf_token": "Capturing Hardware",
"main_menu_input_selection_token": "Input Selection",
- "main_menu_leds_conf_token": "LED Hardware",
+ "main_menu_instcapture_conf_token": "Sources",
+ "main_menu_leds_conf_token": "LED Output",
"main_menu_logging_token": "Log",
"main_menu_network_conf_token": "Network Services",
"main_menu_remotecontrol_token": "Remote Control",
diff --git a/assets/webconfig/index.html b/assets/webconfig/index.html
index ced9e2af..99ccb844 100644
--- a/assets/webconfig/index.html
+++ b/assets/webconfig/index.html
@@ -214,11 +214,12 @@
LED-Instances
+
Remote Control
Effects Configurator
diff --git a/assets/webconfig/js/content_dashboard.js b/assets/webconfig/js/content_dashboard.js
index 5430b4d8..4ef8d069 100644
--- a/assets/webconfig/js/content_dashboard.js
+++ b/assets/webconfig/js/content_dashboard.js
@@ -26,8 +26,6 @@ $(document).ready(function () {
}
});
- requestServerConfig();
-
var instBtn = '';
instances_html += '
';
- instances_html += ' | ' + $.i18n('edt_conf_fg_heading_title') + ' | ';
- instances_html += '';
- instances_html += 'disabled';
- instances_html += '';
- instances_html += ' |
';
- instances_html += ' | ' + $.i18n('edt_conf_v4l2_heading_title') + ' | ';
- instances_html += '';
- instances_html += 'disabled';
- instances_html += '';
- instances_html += ' |
';
instances_html += '
';
instances_html += '
';
@@ -69,8 +57,8 @@ $(document).ready(function () {
for (var idx = 0; idx < components.length; idx++) {
if (components[idx].name != "ALL") {
if ((components[idx].name === "FORWARDER" && window.currentHyperionInstance != 0) ||
- (components[idx].name === "GRABBER" && !window.serverConfig.instCapture.systemEnable) ||
- (components[idx].name === "V4L" && !window.serverConfig.instCapture.v4lEnable))
+ (components[idx].name === "GRABBER" && !window.serverConfig.framegrabber.enable) ||
+ (components[idx].name === "V4L" && !window.serverConfig.grabberV4L2.enable))
continue;
var comp_enabled = components[idx].enabled ? "checked" : "";
@@ -113,6 +101,12 @@ $(document).ready(function () {
}
// add more info
+
+ var screenGrabber = window.serverConfig.framegrabber.enable ? $.i18n('general_enabled') : $.i18n('general_disabled');
+ $('#dash_screen_grabber').html(screenGrabber);
+ var videoGrabber = window.serverConfig.grabberV4L2.enable ? $.i18n('general_enabled') : $.i18n('general_disabled');
+ $('#dash_video_grabber').html(videoGrabber);
+
var fbPort = window.serverConfig.flatbufServer.enable ? window.serverConfig.flatbufServer.port : $.i18n('general_disabled');
$('#dash_fbPort').html(fbPort);
var pbPort = window.serverConfig.protoServer.enable ? window.serverConfig.protoServer.port : $.i18n('general_disabled');
diff --git a/assets/webconfig/js/content_grabber.js b/assets/webconfig/js/content_grabber.js
index 2a209c46..d588ad6a 100755
--- a/assets/webconfig/js/content_grabber.js
+++ b/assets/webconfig/js/content_grabber.js
@@ -1,108 +1,22 @@
$(document).ready(function () {
performTranslation();
- // update instance listing
- updateHyperionInstanceListing();
-
var conf_editor_video = null;
var conf_editor_screen = null;
- var conf_editor_instCapt = null;
- var VIDEOGRABBER_AVAIL = window.serverInfo.grabbers.available.includes("v4l2");
+ // Screen-Grabber
+ $('#conf_cont').append(createRow('conf_cont_screen'));
+ $('#conf_cont_screen').append(createOptPanel('fa-camera', $.i18n("edt_conf_fg_heading_title"), 'editor_container_screengrabber', 'btn_submit_screengrabber', 'panel-system', 'screengrabberPanelId'));
if (window.showOptHelp) {
- // Instance Capture
- $('#conf_cont').append(createRow('conf_cont_instCapt'));
- $('#conf_cont_instCapt').append(createOptPanel('fa-camera', $.i18n("edt_conf_instCapture_heading_title"), 'editor_container_instCapt', 'btn_submit_instCapt', ''));
- $('#conf_cont_instCapt').append(createHelpTable(window.schema.instCapture.properties, $.i18n("edt_conf_instCapture_heading_title")));
-
- // Screen-Grabber
- $('#conf_cont').append(createRow('conf_cont_screen'));
- $('#conf_cont_screen').append(createOptPanel('fa-camera', $.i18n("edt_conf_fg_heading_title"), 'editor_container_screengrabber', 'btn_submit_screengrabber', '', 'screengrabberPanelId'));
$('#conf_cont_screen').append(createHelpTable(window.schema.framegrabber.properties, $.i18n("edt_conf_fg_heading_title"), "screengrabberHelpPanelId"));
-
- // Video-Grabber - hide if not available
- if (VIDEOGRABBER_AVAIL) {
- $('#conf_cont').append(createRow('conf_cont_video'));
- $('#conf_cont_video').append(createOptPanel('fa-camera', $.i18n("edt_conf_v4l2_heading_title"), 'editor_container_videograbber', 'btn_submit_videograbber', '', 'videograbberPanelId'));
- $('#conf_cont_video').append(createHelpTable(window.schema.grabberV4L2.properties, $.i18n("edt_conf_v4l2_heading_title"), "videograbberHelpPanelId"));
- }
- } else {
- $('#conf_cont').addClass('row');
- $('#conf_cont').append(createOptPanel('fa-camera', $.i18n("edt_conf_instCapture_heading_title"), 'editor_container_instCapt', 'btn_submit_instCapt'));
- $('#conf_cont').append(createOptPanel('fa-camera', $.i18n("edt_conf_fg_heading_title"), 'editor_container_screengrabber', 'btn_submit_screengrabber', '', 'screengrabberPanelId'));
- if (VIDEOGRABBER_AVAIL) {
- $('#conf_cont').append(createOptPanel('fa-camera', $.i18n("edt_conf_v4l2_heading_title"), 'editor_container_videograbber', 'btn_submit_videograbber', '', 'videograbberPanelId'));
- }
}
- // Instance Capture
- conf_editor_instCapt = createJsonEditor('editor_container_instCapt', {
- instCapture: window.schema.instCapture
- }, true, true);
-
- // Hide Video-Grabber elements, if not available
- if (!VIDEOGRABBER_AVAIL) {
- showInputOptions("instCapture", ["v4lEnable"], false);
- showInputOptions("instCapture", ["v4lPriority"], false);
+ $('#conf_cont').append(createRow('conf_cont_video'));
+ $('#conf_cont_video').append(createOptPanel('fa-camera', $.i18n("edt_conf_v4l2_heading_title"), 'editor_container_videograbber', 'btn_submit_videograbber', 'panel-system', 'videograbberPanelId'));
+ if (window.showOptHelp) {
+ $('#conf_cont_video').append(createHelpTable(window.schema.grabberV4L2.properties, $.i18n("edt_conf_v4l2_heading_title"), "videograbberHelpPanelId"));
}
- conf_editor_instCapt.on('change', function () {
- var screenEnable = conf_editor_instCapt.getEditor("root.instCapture.systemEnable").getValue();
- if (screenEnable) {
- showInputOptions("instCapture", ["systemPriority"], true);
- $('#screengrabberPanelId').show();
- if (window.showOptHelp) {
- $('#screengrabberHelpPanelId').show();
- }
- } else {
- $('#screengrabberPanelId').hide();
- $('#screengrabberHelpPanelId').hide();
- showInputOptions("instCapture", ["systemPriority"], false);
- }
-
- if (VIDEOGRABBER_AVAIL) {
- var videoEnable = conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").getValue();
- if (videoEnable) {
- showInputOptions("instCapture", ["v4lPriority"], true);
- $('#videograbberPanelId').show();
- if (window.showOptHelp) {
- $('#videograbberHelpPanelId').show();
- }
- }
- else {
- showInputOptions("instCapture", ["v4lPriority"], false);
- $('#videograbberPanelId').hide();
- $('#videograbberHelpPanelId').hide();
- }
- }
-
- conf_editor_instCapt.validate().length || window.readOnlyMode ? $('#btn_submit_instCapt').attr('disabled', true) : $('#btn_submit_instCapt').attr('disabled', false);
- });
-
-
- conf_editor_instCapt.watch('root.instCapture.systemEnable', () => {
- var systemEnable = conf_editor_instCapt.getEditor("root.instCapture.systemEnable").getValue();
- if (systemEnable) {
- showInputOptionsForKey(conf_editor_screen, "framegrabber", "available_devices", false);
- discoverInputSources("screen");
- }
-
- });
-
- conf_editor_instCapt.watch('root.instCapture.v4lEnable', () => {
- if (VIDEOGRABBER_AVAIL) {
- var videoEnable = conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").getValue();
- if (videoEnable) {
- showInputOptionsForKey(conf_editor_video, "grabberV4L2", "available_devices", false);
- discoverInputSources("video");
- }
- }
- });
-
- $('#btn_submit_instCapt').off().on('click', function () {
- requestWriteConfig(conf_editor_instCapt.getValue());
- });
-
JSONEditor.defaults.custom_validators.push(function (schema, value, path) {
var errors = [];
@@ -160,25 +74,20 @@ $(document).ready(function () {
}, true, true);
conf_editor_screen.on('ready', function () {
-
- var screenEnable = conf_editor_instCapt.getEditor("root.instCapture.systemEnable").getValue();
- if (screenEnable) {
- showInputOptionsForKey(conf_editor_screen, "framegrabber", "available_devices", false);
- discoverInputSources("screen");
- }
-
- updateCropForWidth(conf_editor_screen, "root.framegrabber");
- updateCropForHeight(conf_editor_screen, "root.framegrabber");
+ // Trigger conf_editor_screen.watch - 'root.framegrabber.enable'
+ var screenEnable = window.serverConfig.framegrabber.enable;
+ conf_editor_screen.getEditor("root.framegrabber.enable").setValue(screenEnable);
});
conf_editor_screen.on('change', function () {
+
if (!conf_editor_screen.validate().length) {
var deviceSelected = conf_editor_screen.getEditor("root.framegrabber.available_devices").getValue();
switch (deviceSelected) {
case "SELECT":
showInputOptionsForKey(conf_editor_screen, "framegrabber", "available_devices", false);
break;
- case "NONE":
+ case "NONE": conf_editor_video.on
break;
default:
window.readOnlyMode ? $('#btn_submit_screengrabber').attr('disabled', true) : $('#btn_submit_screengrabber').attr('disabled', false);
@@ -190,6 +99,24 @@ $(document).ready(function () {
}
});
+ conf_editor_screen.watch('root.framegrabber.enable', () => {
+
+ var screenEnable = conf_editor_screen.getEditor("root.framegrabber.enable").getValue();
+ if (screenEnable) {
+ showInputOptionsForKey(conf_editor_screen, "framegrabber", "enable", true);
+ if (window.showOptHelp) {
+ $('#screengrabberHelpPanelId').show();
+ }
+ discoverInputSources("screen");
+ }
+ else {
+ showInputOptionsForKey(conf_editor_screen, "framegrabber", "enable", false);
+ $('#screengrabberHelpPanelId').hide();
+ $('#btn_submit_screengrabber').attr('disabled', true);
+ }
+
+ });
+
conf_editor_screen.watch('root.framegrabber.available_devices', () => {
var deviceSelected = conf_editor_screen.getEditor("root.framegrabber.available_devices").getValue();
@@ -383,298 +310,308 @@ $(document).ready(function () {
var discoveredInputSources = {};
var deviceProperties = {};
- if (VIDEOGRABBER_AVAIL) {
- conf_editor_video = createJsonEditor('editor_container_videograbber', {
- grabberV4L2: window.schema.grabberV4L2
- }, true, true);
+ conf_editor_video = createJsonEditor('editor_container_videograbber', {
+ grabberV4L2: window.schema.grabberV4L2
+ }, true, true);
- conf_editor_video.on('ready', function () {
- var v4lEnable = conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").getValue();
- if (v4lEnable) {
- showInputOptionsForKey(conf_editor_video, "grabberV4L2", "available_devices", false);
- discoverInputSources("video");
- }
- });
+ conf_editor_video.on('ready', function () {
+ // Trigger conf_editor_video.watch - 'root.grabberV4L2.enable'
+ var videoEnable = window.serverConfig.grabberV4L2.enable;
+ conf_editor_video.getEditor("root.grabberV4L2.enable").setValue(videoEnable);
+ });
- conf_editor_video.on('change', function () {
+ conf_editor_video.on('change', function () {
- if (!conf_editor_video.validate().length) {
- var deviceSelected = conf_editor_video.getEditor("root.grabberV4L2.available_devices").getValue();
- switch (deviceSelected) {
- case "SELECT":
- showInputOptionsForKey(conf_editor_video, "grabberV4L2", "available_devices", false);
- break;
- case "NONE":
- break;
- default:
- window.readOnlyMode ? $('#btn_submit_videograbber').attr('disabled', true) : $('#btn_submit_videograbber').attr('disabled', false);
- break;
- }
- }
- else {
- $('#btn_submit_videograbber').attr('disabled', true);
- }
-
- });
-
- conf_editor_video.watch('root.grabberV4L2.available_devices', () => {
+ if (!conf_editor_video.validate().length) {
var deviceSelected = conf_editor_video.getEditor("root.grabberV4L2.available_devices").getValue();
- if (deviceSelected === "SELECT" || deviceSelected === "NONE" || deviceSelected === "") {
- $('#btn_submit_videograbber').attr('disabled', true);
- showInputOptionsForKey(conf_editor_video, "grabberV4L2", "available_devices", false);
+ switch (deviceSelected) {
+ case "SELECT":
+ showInputOptionsForKey(conf_editor_video, "grabberV4L2", "available_devices", false);
+ break;
+ case "NONE":
+ break;
+ default:
+ window.readOnlyMode ? $('#btn_submit_videograbber').attr('disabled', true) : $('#btn_submit_videograbber').attr('disabled', false);
+ break;
}
- else {
- showInputOptionsForKey(conf_editor_video, "grabberV4L2", "available_devices", true);
- var addSchemaElements = {};
- var enumVals = [];
- var enumTitelVals = [];
- var enumDefaultVal = "";
+ }
+ else {
+ $('#btn_submit_videograbber').attr('disabled', true);
+ }
+ });
- var deviceProperties = getPropertiesOfDevice("video", deviceSelected);
+ conf_editor_video.watch('root.grabberV4L2.enable', () => {
- //Update hidden input element
- conf_editor_video.getEditor("root.grabberV4L2.device").setValue(deviceProperties.device);
-
- var video_inputs = deviceProperties.video_inputs;
- if (video_inputs.length <= 1) {
- addSchemaElements.access = "expert";
- }
-
- for (const video_input of video_inputs) {
- enumVals.push(video_input.inputIdx);
- enumTitelVals.push(video_input.name);
- }
-
- if (enumVals.length > 0) {
- if (deviceSelected === configuredDevice) {
- var configuredVideoInput = window.serverConfig.grabberV4L2.input;
- if ($.inArray(configuredVideoInput, enumVals) != -1) {
- enumDefaultVal = configuredVideoInput.toString();
- }
- }
-
- updateJsonEditorSelection(conf_editor_video.getEditor('root.grabberV4L2'),
- 'device_inputs', addSchemaElements, enumVals, enumTitelVals, enumDefaultVal, false, false);
- }
-
- if (conf_editor_video.validate().length && !window.readOnlyMode) {
- $('#btn_submit_videograbber').attr('disabled', false);
- }
+ var videoEnable = conf_editor_video.getEditor("root.grabberV4L2.enable").getValue();
+ if (videoEnable) {
+ showInputOptionsForKey(conf_editor_video, "grabberV4L2", "enable", true);
+ if (window.showOptHelp) {
+ $('#videograbberHelpPanelId').show();
}
- });
-
- conf_editor_video.watch('root.grabberV4L2.device_inputs', () => {
- var deviceSelected = conf_editor_video.getEditor("root.grabberV4L2.available_devices").getValue();
- var videoInputSelected = conf_editor_video.getEditor("root.grabberV4L2.device_inputs").getValue();
+ discoverInputSources("video");
+ }
+ else {
+ $('#btn_submit_videograbber').attr('disabled', true);
+ showInputOptionsForKey(conf_editor_video, "grabberV4L2", "enable", false);
+ $('#videograbberHelpPanelId').hide();
+ }
+ });
+ conf_editor_video.watch('root.grabberV4L2.available_devices', () => {
+ var deviceSelected = conf_editor_video.getEditor("root.grabberV4L2.available_devices").getValue();
+ if (deviceSelected === "SELECT" || deviceSelected === "NONE" || deviceSelected === "") {
+ $('#btn_submit_videograbber').attr('disabled', true);
+ showInputOptionsForKey(conf_editor_video, "grabberV4L2", "available_devices", false);
+ }
+ else {
+ showInputOptionsForKey(conf_editor_video, "grabberV4L2", "available_devices", true);
var addSchemaElements = {};
var enumVals = [];
var enumTitelVals = [];
var enumDefaultVal = "";
var deviceProperties = getPropertiesOfDevice("video", deviceSelected);
- var formats = deviceProperties.video_inputs[videoInputSelected].formats;
-
- addSchemaElements.access = "advanced";
-
- for (var i = 0; i < formats.length; i++) {
- if (formats[i].format) {
- enumVals.push(formats[i].format);
- enumTitelVals.push(formats[i].format.toUpperCase());
- }
- else {
- enumVals.push("NONE");
- }
- }
-
- if (enumVals.length > 0) {
- if (deviceSelected === configuredDevice) {
- var configuredEncoding = window.serverConfig.grabberV4L2.encoding;
- if ($.inArray(configuredEncoding, enumVals) != -1) {
- enumDefaultVal = configuredEncoding;
- }
- }
- updateJsonEditorSelection(conf_editor_video.getEditor('root.grabberV4L2'),
- 'encoding', addSchemaElements, enumVals, enumTitelVals, enumDefaultVal, false);
- }
-
- var enumVals = [];
- var enumDefaultVal = "";
-
- var standards = deviceProperties.video_inputs[videoInputSelected].standards;
- if (!standards) {
- enumVals.push("NONE");
- addSchemaElements.options = { "hidden": true };
- } else {
- enumVals = standards;
- }
-
- if (enumVals.length > 0) {
- if (deviceSelected === configuredDevice) {
- var configuredStandard = window.serverConfig.grabberV4L2.standard;
- if ($.inArray(configuredStandard, enumVals) != -1) {
- enumDefaultVal = configuredStandard;
- }
- }
-
- updateJsonEditorSelection(conf_editor_video.getEditor('root.grabberV4L2'),
- 'standard', addSchemaElements, enumVals, [], enumDefaultVal, false);
- }
-
- if (conf_editor_video.validate().length && !window.readOnlyMode) {
- $('#btn_submit_videograbber').attr('disabled', false);
- }
- });
-
- conf_editor_video.watch('root.grabberV4L2.encoding', () => {
- var deviceSelected = conf_editor_video.getEditor("root.grabberV4L2.available_devices").getValue();
- var videoInputSelected = conf_editor_video.getEditor("root.grabberV4L2.device_inputs").getValue();
- var formatSelected = conf_editor_video.getEditor("root.grabberV4L2.encoding").getValue();
//Update hidden input element
- conf_editor_video.getEditor("root.grabberV4L2.input").setValue(parseInt(videoInputSelected));
+ conf_editor_video.getEditor("root.grabberV4L2.device").setValue(deviceProperties.device);
- var addSchemaElements = {};
- var enumVals = [];
- var enumTitelVals = [];
- var enumDefaultVal = "";
-
- var deviceProperties = getPropertiesOfDevice("video", deviceSelected);
-
- var formats = deviceProperties.video_inputs[videoInputSelected].formats;
- var formatIdx = 0;
- if (formatSelected !== "NONE") {
- formatIdx = formats.findIndex(x => x.format === formatSelected);
- }
-
- var resolutions = formats[formatIdx].resolutions;
- if (resolutions.length <= 1) {
- addSchemaElements.access = "advanced";
- } else {
- resolutions.sort(compareTwoValues('width', 'height', 'asc'));
- }
-
- for (var i = 0; i < resolutions.length; i++) {
- enumVals.push(i);
- var resolutionText = resolutions[i].width + "x" + resolutions[i].height;
- enumTitelVals.push(resolutionText);
- }
-
- if (enumVals.length > 0) {
- if (deviceSelected === configuredDevice) {
- var configuredResolutionText = window.serverConfig.grabberV4L2.width + "x" + window.serverConfig.grabberV4L2.height;
- var idx = $.inArray(configuredResolutionText, enumTitelVals)
- if (idx != -1) {
- enumDefaultVal = idx.toString();
- }
- }
-
- updateJsonEditorSelection(conf_editor_video.getEditor('root.grabberV4L2'),
- 'resolutions', addSchemaElements, enumVals, enumTitelVals, enumDefaultVal, false);
- }
-
- if (conf_editor_video.validate().length && !window.readOnlyMode) {
- $('#btn_submit_videograbber').attr('disabled', false);
- }
- });
-
- conf_editor_video.watch('root.grabberV4L2.resolutions', () => {
- var deviceSelected = conf_editor_video.getEditor("root.grabberV4L2.available_devices").getValue();
- var videoInputSelected = conf_editor_video.getEditor("root.grabberV4L2.device_inputs").getValue();
- var formatSelected = conf_editor_video.getEditor("root.grabberV4L2.encoding").getValue();
- var resolutionSelected = conf_editor_video.getEditor("root.grabberV4L2.resolutions").getValue();
-
- var addSchemaElements = {};
- var enumVals = [];
- var enumDefaultVal = "";
-
- var deviceProperties = getPropertiesOfDevice("video", deviceSelected);
-
- var formats = deviceProperties.video_inputs[videoInputSelected].formats;
- var formatIdx = 0;
- if (formatSelected !== "NONE") {
- formatIdx = formats.findIndex(x => x.format === formatSelected);
- }
-
- //Update hidden resolution related elements
- var width = parseInt(formats[formatIdx].resolutions[resolutionSelected].width);
- conf_editor_video.getEditor("root.grabberV4L2.width").setValue(width);
-
- var height = parseInt(formats[formatIdx].resolutions[resolutionSelected].height);
- conf_editor_video.getEditor("root.grabberV4L2.height").setValue(height);
-
- //Update crop rage depending on selected resolution
- updateCropForWidth(conf_editor_video, "root.grabberV4L2");
- updateCropForHeight(conf_editor_video, "root.grabberV4L2");
-
- var fps = formats[formatIdx].resolutions[resolutionSelected].fps;
- if (!fps) {
- enumVals.push("NONE");
- addSchemaElements.options = { "hidden": true };
- } else {
- fps.sort((a, b) => a - b);
- for (var i = 0; i < fps.length; i++) {
- enumVals.push(fps[i]);
- }
- }
-
- if (enumVals.length <= 1) {
+ var video_inputs = deviceProperties.video_inputs;
+ if (video_inputs.length <= 1) {
addSchemaElements.access = "expert";
}
+ for (const video_input of video_inputs) {
+ enumVals.push(video_input.inputIdx);
+ enumTitelVals.push(video_input.name);
+ }
+
if (enumVals.length > 0) {
if (deviceSelected === configuredDevice) {
- var configuredFps = window.serverConfig.grabberV4L2.fps;
- if ($.inArray(configuredFps, enumVals) != -1) {
- enumDefaultVal = configuredFps.toString();
+ var configuredVideoInput = window.serverConfig.grabberV4L2.input;
+ if ($.inArray(configuredVideoInput, enumVals) != -1) {
+ enumDefaultVal = configuredVideoInput.toString();
}
}
+
updateJsonEditorSelection(conf_editor_video.getEditor('root.grabberV4L2'),
- 'framerates', addSchemaElements, enumVals, [], enumDefaultVal, false);
+ 'device_inputs', addSchemaElements, enumVals, enumTitelVals, enumDefaultVal, false, false);
}
if (conf_editor_video.validate().length && !window.readOnlyMode) {
$('#btn_submit_videograbber').attr('disabled', false);
}
- });
+ }
+ });
- conf_editor_video.watch('root.grabberV4L2.framerates', () => {
- //Update hidden fps element
- var fps = 0;
- var framerates = conf_editor_video.getEditor("root.grabberV4L2.framerates").getValue();
- if (framerates !== "NONE") {
- fps = parseInt(framerates);
- }
+ conf_editor_video.watch('root.grabberV4L2.device_inputs', () => {
+ var deviceSelected = conf_editor_video.getEditor("root.grabberV4L2.available_devices").getValue();
+ var videoInputSelected = conf_editor_video.getEditor("root.grabberV4L2.device_inputs").getValue();
- //Show Frameskipping only when more than 2 fps
- if (fps > 2 && storedAccess === "expert") {
- showInputOptions(["fpsSoftwareDecimation"], true);
+ var addSchemaElements = {};
+ var enumVals = [];
+ var enumTitelVals = [];
+ var enumDefaultVal = "";
+
+ var deviceProperties = getPropertiesOfDevice("video", deviceSelected);
+ var formats = deviceProperties.video_inputs[videoInputSelected].formats;
+
+ addSchemaElements.access = "advanced";
+
+ for (var i = 0; i < formats.length; i++) {
+ if (formats[i].format) {
+ enumVals.push(formats[i].format);
+ enumTitelVals.push(formats[i].format.toUpperCase());
}
else {
- showInputOptions(["fpsSoftwareDecimation"], false);
+ enumVals.push("NONE");
}
- conf_editor_video.getEditor("root.grabberV4L2.fps").setValue(fps);
- });
+ }
- $('#btn_submit_videograbber').off().on('click', function () {
- var saveOptions = conf_editor_video.getValue();
+ if (enumVals.length > 0) {
+ if (deviceSelected === configuredDevice) {
+ var configuredEncoding = window.serverConfig.grabberV4L2.encoding;
+ if ($.inArray(configuredEncoding, enumVals) != -1) {
+ enumDefaultVal = configuredEncoding;
+ }
+ }
+ updateJsonEditorSelection(conf_editor_video.getEditor('root.grabberV4L2'),
+ 'encoding', addSchemaElements, enumVals, enumTitelVals, enumDefaultVal, false);
+ }
- var instCaptOptions = window.serverConfig.instCapture;
- instCaptOptions.v4lEnable = true;
- saveOptions.instCapture = instCaptOptions;
+ var enumVals = [];
+ var enumDefaultVal = "";
- requestWriteConfig(saveOptions);
- });
- }
+ var standards = deviceProperties.video_inputs[videoInputSelected].standards;
+ if (!standards) {
+ enumVals.push("NONE");
+ addSchemaElements.options = { "hidden": true };
+ } else {
+ enumVals = standards;
+ }
+
+ if (enumVals.length > 0) {
+ if (deviceSelected === configuredDevice) {
+ var configuredStandard = window.serverConfig.grabberV4L2.standard;
+ if ($.inArray(configuredStandard, enumVals) != -1) {
+ enumDefaultVal = configuredStandard;
+ }
+ }
+
+ updateJsonEditorSelection(conf_editor_video.getEditor('root.grabberV4L2'),
+ 'standard', addSchemaElements, enumVals, [], enumDefaultVal, false);
+ }
+
+ if (conf_editor_video.validate().length && !window.readOnlyMode) {
+ $('#btn_submit_videograbber').attr('disabled', false);
+ }
+ });
+
+ conf_editor_video.watch('root.grabberV4L2.encoding', () => {
+ var deviceSelected = conf_editor_video.getEditor("root.grabberV4L2.available_devices").getValue();
+ var videoInputSelected = conf_editor_video.getEditor("root.grabberV4L2.device_inputs").getValue();
+ var formatSelected = conf_editor_video.getEditor("root.grabberV4L2.encoding").getValue();
+
+ //Update hidden input element
+ conf_editor_video.getEditor("root.grabberV4L2.input").setValue(parseInt(videoInputSelected));
+
+ var addSchemaElements = {};
+ var enumVals = [];
+ var enumTitelVals = [];
+ var enumDefaultVal = "";
+
+ var deviceProperties = getPropertiesOfDevice("video", deviceSelected);
+
+ var formats = deviceProperties.video_inputs[videoInputSelected].formats;
+ var formatIdx = 0;
+ if (formatSelected !== "NONE") {
+ formatIdx = formats.findIndex(x => x.format === formatSelected);
+ }
+
+ var resolutions = formats[formatIdx].resolutions;
+ if (resolutions.length <= 1) {
+ addSchemaElements.access = "advanced";
+ } else {
+ resolutions.sort(compareTwoValues('width', 'height', 'asc'));
+ }
+
+ for (var i = 0; i < resolutions.length; i++) {
+ enumVals.push(i);
+ var resolutionText = resolutions[i].width + "x" + resolutions[i].height;
+ enumTitelVals.push(resolutionText);
+ }
+
+ if (enumVals.length > 0) {
+ if (deviceSelected === configuredDevice) {
+ var configuredResolutionText = window.serverConfig.grabberV4L2.width + "x" + window.serverConfig.grabberV4L2.height;
+ var idx = $.inArray(configuredResolutionText, enumTitelVals)
+ if (idx != -1) {
+ enumDefaultVal = idx.toString();
+ }
+ }
+
+ updateJsonEditorSelection(conf_editor_video.getEditor('root.grabberV4L2'),
+ 'resolutions', addSchemaElements, enumVals, enumTitelVals, enumDefaultVal, false);
+ }
+
+ if (conf_editor_video.validate().length && !window.readOnlyMode) {
+ $('#btn_submit_videograbber').attr('disabled', false);
+ }
+ });
+
+ conf_editor_video.watch('root.grabberV4L2.resolutions', () => {
+ var deviceSelected = conf_editor_video.getEditor("root.grabberV4L2.available_devices").getValue();
+ var videoInputSelected = conf_editor_video.getEditor("root.grabberV4L2.device_inputs").getValue();
+ var formatSelected = conf_editor_video.getEditor("root.grabberV4L2.encoding").getValue();
+ var resolutionSelected = conf_editor_video.getEditor("root.grabberV4L2.resolutions").getValue();
+
+ var addSchemaElements = {};
+ var enumVals = [];
+ var enumDefaultVal = "";
+
+ var deviceProperties = getPropertiesOfDevice("video", deviceSelected);
+
+ var formats = deviceProperties.video_inputs[videoInputSelected].formats;
+ var formatIdx = 0;
+ if (formatSelected !== "NONE") {
+ formatIdx = formats.findIndex(x => x.format === formatSelected);
+ }
+
+ //Update hidden resolution related elements
+ var width = parseInt(formats[formatIdx].resolutions[resolutionSelected].width);
+ conf_editor_video.getEditor("root.grabberV4L2.width").setValue(width);
+
+ var height = parseInt(formats[formatIdx].resolutions[resolutionSelected].height);
+ conf_editor_video.getEditor("root.grabberV4L2.height").setValue(height);
+
+ //Update crop rage depending on selected resolution
+ updateCropForWidth(conf_editor_video, "root.grabberV4L2");
+ updateCropForHeight(conf_editor_video, "root.grabberV4L2");
+
+ var fps = formats[formatIdx].resolutions[resolutionSelected].fps;
+ if (!fps) {
+ enumVals.push("NONE");
+ addSchemaElements.options = { "hidden": true };
+ } else {
+ fps.sort((a, b) => a - b);
+ for (var i = 0; i < fps.length; i++) {
+ enumVals.push(fps[i]);
+ }
+ }
+
+ if (enumVals.length <= 1) {
+ addSchemaElements.access = "expert";
+ }
+
+ if (enumVals.length > 0) {
+ if (deviceSelected === configuredDevice) {
+ var configuredFps = window.serverConfig.grabberV4L2.fps;
+ if ($.inArray(configuredFps, enumVals) != -1) {
+ enumDefaultVal = configuredFps.toString();
+ }
+ }
+ updateJsonEditorSelection(conf_editor_video.getEditor('root.grabberV4L2'),
+ 'framerates', addSchemaElements, enumVals, [], enumDefaultVal, false);
+ }
+
+ if (conf_editor_video.validate().length && !window.readOnlyMode) {
+ $('#btn_submit_videograbber').attr('disabled', false);
+ }
+ });
+
+ conf_editor_video.watch('root.grabberV4L2.framerates', () => {
+ //Update hidden fps element
+ var fps = 0;
+ var framerates = conf_editor_video.getEditor("root.grabberV4L2.framerates").getValue();
+ if (framerates !== "NONE") {
+ fps = parseInt(framerates);
+ }
+
+ //Show Frameskipping only when more than 2 fps
+ if (fps > 2 && storedAccess === "expert") {
+ showInputOptions(["fpsSoftwareDecimation"], true);
+ }
+ else {
+ showInputOptions(["fpsSoftwareDecimation"], false);
+ }
+ conf_editor_video.getEditor("root.grabberV4L2.fps").setValue(fps);
+ });
+
+ $('#btn_submit_videograbber').off().on('click', function () {
+ var saveOptions = conf_editor_video.getValue();
+
+ var instCaptOptions = window.serverConfig.instCapture;
+ instCaptOptions.v4lEnable = true;
+ saveOptions.instCapture = instCaptOptions;
+
+ requestWriteConfig(saveOptions);
+ });
//////////////////////////////////////////////////
//create introduction
if (window.showOptHelp) {
createHint("intro", $.i18n('conf_grabber_fg_intro'), "editor_container_screengrabber");
- if (VIDEOGRABBER_AVAIL) {
- createHint("intro", $.i18n('conf_grabber_v4l_intro'), "editor_container_videograbber");
- }
+ createHint("intro", $.i18n('conf_grabber_v4l_intro'), "editor_container_videograbber");
}
removeOverlay();
diff --git a/assets/webconfig/js/content_instcapture.js b/assets/webconfig/js/content_instcapture.js
new file mode 100644
index 00000000..51049883
--- /dev/null
+++ b/assets/webconfig/js/content_instcapture.js
@@ -0,0 +1,93 @@
+$(document).ready(function () {
+ performTranslation();
+
+ // update instance listing
+ updateHyperionInstanceListing();
+
+ var conf_editor_instCapt = null;
+
+ // Instance Capture
+ $('#conf_cont').append(createRow('conf_cont_instCapt'));
+ $('#conf_cont_instCapt').append(createOptPanel('fa-camera', $.i18n("edt_conf_instCapture_heading_title"), 'editor_container_instCapt', 'btn_submit_instCapt', ''));
+ if (window.showOptHelp) {
+ $('#conf_cont_instCapt').append(createHelpTable(window.schema.instCapture.properties, $.i18n("edt_conf_instCapture_heading_title")));
+ }
+
+ // Instance Capture
+ conf_editor_instCapt = createJsonEditor('editor_container_instCapt', {
+ instCapture: window.schema.instCapture
+ }, true, true);
+
+ conf_editor_instCapt.on('ready', function () {
+
+ if (!window.serverConfig.framegrabber.enable) {
+ conf_editor_instCapt.getEditor("root.instCapture.systemEnable").setValue(false);
+ conf_editor_instCapt.getEditor("root.instCapture.systemEnable").disable();
+ }
+ else {
+ conf_editor_instCapt.getEditor("root.instCapture.systemEnable").setValue(window.serverConfig.instCapture.systemEnable);
+ }
+
+ if (!window.serverConfig.grabberV4L2.enable) {
+ conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").setValue(false);
+ conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").disable();
+ }
+ else {
+ conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").setValue(window.serverConfig.instCapture.v4lEnable);
+ }
+
+ });
+
+ conf_editor_instCapt.on('change', function () {
+
+ if (!conf_editor_instCapt.validate().length) {
+ if (!window.serverConfig.framegrabber.enable && !window.serverConfig.grabberV4L2.enable) {
+ $('#btn_submit_instCapt').attr('disabled', true);
+ } else {
+ window.readOnlyMode ? $('#btn_submit_instCapt').attr('disabled', true) : $('#btn_submit_instCapt').attr('disabled', false);
+ }
+ }
+ else {
+ $('#btn_submit_instCapt').attr('disabled', true);
+ }
+ });
+
+ conf_editor_instCapt.watch('root.instCapture.systemEnable', () => {
+
+ var screenEnable = conf_editor_instCapt.getEditor("root.instCapture.systemEnable").getValue();
+ if (screenEnable) {
+ conf_editor_instCapt.getEditor("root.instCapture.systemGrabberDevice").setValue(window.serverConfig.framegrabber.available_devices);
+ conf_editor_instCapt.getEditor("root.instCapture.systemGrabberDevice").disable();
+ showInputOptions("instCapture", ["systemGrabberDevice"], true);
+ showInputOptions("instCapture", ["systemPriority"], true);
+
+ } else {
+ showInputOptions("instCapture", ["systemGrabberDevice"], false);
+ showInputOptions("instCapture", ["systemPriority"], false);
+ }
+
+ });
+
+ conf_editor_instCapt.watch('root.instCapture.v4lEnable', () => {
+ var videoEnable = conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").getValue();
+ if (videoEnable) {
+ conf_editor_instCapt.getEditor("root.instCapture.v4lGrabberDevice").setValue(window.serverConfig.grabberV4L2.available_devices);
+ conf_editor_instCapt.getEditor("root.instCapture.v4lGrabberDevice").disable();
+ showInputOptions("instCapture", ["v4lGrabberDevice"], true);
+ showInputOptions("instCapture", ["v4lPriority"], true);
+ }
+ else {
+ if (!window.serverConfig.grabberV4L2.enable) {
+ conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").disable();
+ }
+ showInputOptions("instCapture", ["v4lGrabberDevice"], false);
+ showInputOptions("instCapture", ["v4lPriority"], false);
+ }
+ });
+
+ $('#btn_submit_instCapt').off().on('click', function () {
+ requestWriteConfig(conf_editor_instCapt.getValue());
+ });
+
+ removeOverlay();
+});
diff --git a/assets/webconfig/js/ledsim.js b/assets/webconfig/js/ledsim.js
index db5cabc0..f318ab88 100644
--- a/assets/webconfig/js/ledsim.js
+++ b/assets/webconfig/js/ledsim.js
@@ -273,7 +273,7 @@ $(document).ready(function () {
var obj = event.response.data
if (obj.leds || obj.grabberV4L2) {
- console.log("ledsim: cmd-settings-update", event.response.data);
+ //console.log("ledsim: cmd-settings-update", event.response.data);
Object.getOwnPropertyNames(obj).forEach(function (val, idx, array) {
window.serverInfo[val] = obj[val];
});
diff --git a/assets/webconfig/js/ui_utils.js b/assets/webconfig/js/ui_utils.js
index a320cf2a..2ae16d4e 100755
--- a/assets/webconfig/js/ui_utils.js
+++ b/assets/webconfig/js/ui_utils.js
@@ -188,8 +188,6 @@ function initLanguageSelection() {
function updateUiOnInstance(inst) {
$("#active_instance_friendly_name").text(window.serverInfo.instance[inst].friendly_name);
- $('#dash_screen_grabber').text(window.serverConfig.instCapture.systemEnable ? $.i18n('general_enabled') : $.i18n('general_disabled'));
- $('#dash_video_grabber').text(window.serverConfig.instCapture.v4lEnable ? $.i18n('general_enabled') : $.i18n('general_disabled'));
if (window.serverInfo.instance.filter(entry => entry.running).length > 1) {
$('#btn_hypinstanceswitch').toggle(true);
$('#active_instance_dropdown').prop('disabled', false);
diff --git a/libsrc/hyperion/schema/schema-framegrabber.json b/libsrc/hyperion/schema/schema-framegrabber.json
index a829c98d..c3f3e547 100644
--- a/libsrc/hyperion/schema/schema-framegrabber.json
+++ b/libsrc/hyperion/schema/schema-framegrabber.json
@@ -1,7 +1,15 @@
{
"type" : "object",
"title" : "edt_conf_fg_heading_title",
- "properties": {
+ "properties":
+ {
+ "enable": {
+ "type": "boolean",
+ "title": "edt_conf_general_enable_title",
+ "required": true,
+ "default": false,
+ "propertyOrder": 1
+ },
"available_devices": {
"type": "string",
"title": "edt_conf_grabber_discovered_title",
@@ -9,7 +17,7 @@
"options": {
"infoText": "edt_conf_grabber_discovered_title_info"
},
- "propertyOrder": 1,
+ "propertyOrder": 2,
"required": false
},
"device": {
@@ -19,13 +27,13 @@
"hidden": true
},
"required": true,
- "comment": "The 'available_devices' settings are dynamically inserted into the WebUI under PropertyOrder '1'.",
- "propertyOrder": 2
+ "comment": "The 'available_devices' settings are dynamically inserted into the WebUI under PropertyOrder '2'.",
+ "propertyOrder": 3
},
"device_inputs": {
"type": "string",
"title": "edt_conf_v4l2_input_title",
- "propertyOrder": 3,
+ "propertyOrder": 4,
"required": false
},
"input": {
@@ -37,13 +45,13 @@
"hidden": true
},
"required": true,
- "propertyOrder": 4,
- "comment": "The 'device_inputs' settings are dynamically inserted into the WebUI under PropertyOrder '3'."
+ "propertyOrder": 5,
+ "comment": "The 'device_inputs' settings are dynamically inserted into the WebUI under PropertyOrder '4'."
},
"resolutions": {
"type": "string",
"title": "edt_conf_v4l2_resolution_title",
- "propertyOrder": 5,
+ "propertyOrder": 6,
"required": false
},
"width": {
@@ -56,8 +64,8 @@
"hidden": true
},
"required": true,
- "propertyOrder": 8,
- "comment": "The 'resolutions' settings are dynamically inserted into the WebUI under PropertyOrder '5'."
+ "propertyOrder": 9,
+ "comment": "The 'resolutions' settings are dynamically inserted into the WebUI under PropertyOrder '6'."
},
"height": {
"type": "integer",
@@ -67,13 +75,13 @@
"hidden": true
},
"required": true,
- "propertyOrder": 9,
- "comment": "The 'resolutions' settings are dynamically inserted into the WebUI under PropertyOrder '5'."
+ "propertyOrder": 10,
+ "comment": "The 'resolutions' settings are dynamically inserted into the WebUI under PropertyOrder '6'."
},
"framerates": {
"type": "string",
"title": "edt_conf_fg_frequency_Hz_title",
- "propertyOrder": 10,
+ "propertyOrder": 11,
"required": false
},
"fps": {
@@ -85,8 +93,8 @@
"hidden": true
},
"required": true,
- "propertyOrder": 11,
- "comment": "The 'framerates' setting is dynamically inserted into the WebUI under PropertyOrder '10'."
+ "propertyOrder": 12,
+ "comment": "The 'framerates' setting is dynamically inserted into the WebUI under PropertyOrder '11'."
},
"pixelDecimation": {
"type": "integer",
@@ -95,7 +103,7 @@
"maximum": 30,
"default": 8,
"required": true,
- "propertyOrder": 12
+ "propertyOrder": 13
},
"cropLeft": {
"type": "integer",
@@ -103,7 +111,7 @@
"minimum": 0,
"default": 0,
"append": "edt_append_pixel",
- "propertyOrder": 13
+ "propertyOrder": 14
},
"cropRight": {
"type": "integer",
@@ -111,7 +119,7 @@
"minimum": 0,
"default": 0,
"append": "edt_append_pixel",
- "propertyOrder": 14
+ "propertyOrder": 15
},
"cropTop": {
"type": "integer",
@@ -119,7 +127,7 @@
"minimum": 0,
"default": 0,
"append": "edt_append_pixel",
- "propertyOrder": 15
+ "propertyOrder": 16
},
"cropBottom": {
"type": "integer",
@@ -127,7 +135,7 @@
"minimum": 0,
"default": 0,
"append": "edt_append_pixel",
- "propertyOrder": 16
+ "propertyOrder": 17
}
},
"additionalProperties" : false
diff --git a/libsrc/hyperion/schema/schema-grabberV4L2.json b/libsrc/hyperion/schema/schema-grabberV4L2.json
index ceda12c2..6a5a4a14 100644
--- a/libsrc/hyperion/schema/schema-grabberV4L2.json
+++ b/libsrc/hyperion/schema/schema-grabberV4L2.json
@@ -2,7 +2,15 @@
"type" : "object",
"required" : true,
"title" : "edt_conf_v4l2_heading_title",
- "properties": {
+ "properties":
+ {
+ "enable": {
+ "type": "boolean",
+ "title": "edt_conf_general_enable_title",
+ "required": true,
+ "default": false,
+ "propertyOrder": 1
+ },
"available_devices": {
"type": "string",
"title": "edt_conf_grabber_discovered_title",
@@ -10,7 +18,7 @@
"options": {
"infoText": "edt_conf_grabber_discovered_title_info"
},
- "propertyOrder": 1,
+ "propertyOrder": 2,
"required": false
},
"device": {
@@ -20,13 +28,13 @@
"hidden": true
},
"required": true,
- "comment": "The 'available_devices' settings are dynamically inserted into the WebUI under PropertyOrder '1'.",
- "propertyOrder": 2
+ "comment": "The 'available_devices' settings are dynamically inserted into the WebUI under PropertyOrder '2'.",
+ "propertyOrder": 3
},
"device_inputs": {
"type": "string",
"title": "edt_conf_v4l2_input_title",
- "propertyOrder": 3,
+ "propertyOrder": 4,
"required": false
},
"input": {
@@ -37,15 +45,15 @@
"hidden": true
},
"required": true,
- "propertyOrder": 4,
- "comment": "The 'device_inputs' settings are dynamically inserted into the WebUI under PropertyOrder '3'."
+ "propertyOrder": 5,
+ "comment": "The 'device_inputs' settings are dynamically inserted into the WebUI under PropertyOrder '4'."
},
"standard": {
"type": "string",
"title": "edt_conf_v4l2_standard_title",
"required": false,
- "propertyOrder": 5
+ "propertyOrder": 6
},
"encoding": {
"type": "string",
@@ -53,12 +61,12 @@
"default": "auto",
"required": true,
"access": "advanced",
- "propertyOrder": 6
+ "propertyOrder": 7
},
"resolutions": {
"type": "string",
"title": "edt_conf_v4l2_resolution_title",
- "propertyOrder": 7,
+ "propertyOrder": 8,
"required": false
},
"width": {
@@ -71,8 +79,8 @@
"hidden": true
},
"required": true,
- "propertyOrder": 8,
- "comment": "The 'resolutions' settings are dynamically inserted into the WebUI under PropertyOrder '7'."
+ "propertyOrder": 9,
+ "comment": "The 'resolutions' settings are dynamically inserted into the WebUI under PropertyOrder '8'."
},
"height": {
"type": "integer",
@@ -84,13 +92,13 @@
"hidden": true
},
"required": true,
- "propertyOrder": 9,
- "comment": "The 'resolutions' settings are dynamically inserted into the WebUI under PropertyOrder '7'."
+ "propertyOrder": 10,
+ "comment": "The 'resolutions' settings are dynamically inserted into the WebUI under PropertyOrder '8'."
},
"framerates": {
"type": "string",
"title": "edt_conf_v4l2_framerate_title",
- "propertyOrder": 10,
+ "propertyOrder": 11,
"required": false
},
"fps": {
@@ -103,8 +111,8 @@
"hidden": true
},
"required": true,
- "propertyOrder": 11,
- "comment": "The 'framerates' setting is dynamically inserted into the WebUI under PropertyOrder '10'."
+ "propertyOrder": 12,
+ "comment": "The 'framerates' setting is dynamically inserted into the WebUI under PropertyOrder '11'."
},
"fpsSoftwareDecimation": {
"type": "integer",
@@ -114,7 +122,7 @@
"default": 0,
"required": true,
"access": "expert",
- "propertyOrder": 12
+ "propertyOrder": 13
},
"flip": {
"type": "string",
@@ -126,7 +134,7 @@
},
"required": true,
"access": "advanced",
- "propertyOrder": 13
+ "propertyOrder": 14
},
"sizeDecimation": {
"type": "integer",
@@ -135,7 +143,7 @@
"maximum": 30,
"default": 8,
"required": true,
- "propertyOrder": 14
+ "propertyOrder": 15
},
"hardware_brightness": {
"type": "integer",
@@ -143,7 +151,7 @@
"default": 0,
"required": true,
"access": "expert",
- "propertyOrder": 15
+ "propertyOrder": 16
},
"hardware_contrast": {
"type": "integer",
@@ -151,7 +159,7 @@
"default": 0,
"required": true,
"access": "expert",
- "propertyOrder": 16
+ "propertyOrder": 17
},
"hardware_saturation": {
"type": "integer",
@@ -159,7 +167,7 @@
"default": 0,
"required": true,
"access": "expert",
- "propertyOrder": 17
+ "propertyOrder": 18
},
"hardware_hue": {
"type": "integer",
@@ -167,7 +175,7 @@
"default": 0,
"required": true,
"access": "expert",
- "propertyOrder": 18
+ "propertyOrder": 19
},
"cropLeft": {
"type": "integer",
@@ -176,7 +184,7 @@
"default": 0,
"append": "edt_append_pixel",
"required": true,
- "propertyOrder": 19
+ "propertyOrder": 20
},
"cropRight": {
"type": "integer",
@@ -185,7 +193,7 @@
"default": 0,
"append": "edt_append_pixel",
"required": true,
- "propertyOrder": 20
+ "propertyOrder": 21
},
"cropTop": {
"type": "integer",
@@ -194,7 +202,7 @@
"default": 0,
"append": "edt_append_pixel",
"required": true,
- "propertyOrder": 21
+ "propertyOrder": 22
},
"cropBottom": {
"type": "integer",
@@ -203,7 +211,7 @@
"default": 0,
"append": "edt_append_pixel",
"required": true,
- "propertyOrder": 22
+ "propertyOrder": 23
},
"cecDetection": {
"type": "boolean",
@@ -211,7 +219,7 @@
"default": false,
"required": true,
"access": "advanced",
- "propertyOrder": 23
+ "propertyOrder": 24
},
"signalDetection": {
"type": "boolean",
@@ -219,7 +227,7 @@
"default": false,
"required": true,
"access": "expert",
- "propertyOrder": 24
+ "propertyOrder": 25
},
"redSignalThreshold": {
"type": "integer",
@@ -235,7 +243,7 @@
},
"access": "expert",
"required": true,
- "propertyOrder": 25
+ "propertyOrder": 26
},
"greenSignalThreshold": {
"type": "integer",
@@ -251,7 +259,7 @@
},
"required": true,
"access": "expert",
- "propertyOrder": 26
+ "propertyOrder": 27
},
"blueSignalThreshold": {
"type": "integer",
@@ -267,7 +275,7 @@
},
"required": true,
"access": "expert",
- "propertyOrder": 27
+ "propertyOrder": 28
},
"noSignalCounterThreshold": {
"type": "integer",
@@ -282,7 +290,7 @@
},
"required": true,
"access": "expert",
- "propertyOrder": 28
+ "propertyOrder": 29
},
"sDVOffsetMin": {
"type": "number",
@@ -298,7 +306,7 @@
},
"required": true,
"access": "expert",
- "propertyOrder": 29
+ "propertyOrder": 30
},
"sDVOffsetMax": {
"type": "number",
@@ -314,7 +322,7 @@
},
"required": true,
"access": "expert",
- "propertyOrder": 30
+ "propertyOrder": 31
},
"sDHOffsetMin": {
"type": "number",
@@ -330,7 +338,7 @@
},
"required": true,
"access": "expert",
- "propertyOrder": 31
+ "propertyOrder": 32
},
"sDHOffsetMax": {
"type": "number",
@@ -346,7 +354,7 @@
},
"required": true,
"access": "expert",
- "propertyOrder": 32
+ "propertyOrder": 33
}
},
"additionalProperties": true
diff --git a/libsrc/hyperion/schema/schema-instCapture.json b/libsrc/hyperion/schema/schema-instCapture.json
index 608717c1..7c3adb12 100644
--- a/libsrc/hyperion/schema/schema-instCapture.json
+++ b/libsrc/hyperion/schema/schema-instCapture.json
@@ -2,43 +2,52 @@
"type" : "object",
"required" : true,
"title" : "edt_conf_instC_heading_title",
- "properties" :
- {
- "systemEnable" :
- {
- "type" : "boolean",
- "required" : true,
- "title" : "edt_conf_instC_systemEnable_title",
- "default" : true,
- "propertyOrder" : 1
+ "properties": {
+ "systemEnable": {
+ "type": "boolean",
+ "required": true,
+ "title": "edt_conf_instC_systemEnable_title",
+ "default": true,
+ "propertyOrder": 1
},
- "systemPriority" :
- {
- "type" : "integer",
- "required" : true,
- "title" : "edt_conf_general_priority_title",
- "minimum" : 100,
- "maximum" : 253,
- "default" : 250,
- "propertyOrder" : 2
+ "systemGrabberDevice": {
+ "type": "string",
+ "required": true,
+ "title": "edt_conf_instC_screen_grabber_device_title",
+ "default": "NONE",
+ "propertyOrder": 2
},
- "v4lEnable" :
- {
- "type" : "boolean",
- "required" : true,
- "title" : "edt_conf_instC_v4lEnable_title",
- "default" : false,
- "propertyOrder" : 3
+ "systemPriority": {
+ "type": "integer",
+ "required": true,
+ "title": "edt_conf_general_priority_title",
+ "minimum": 100,
+ "maximum": 253,
+ "default": 250,
+ "propertyOrder": 3
},
- "v4lPriority" :
- {
- "type" : "integer",
- "required" : true,
- "title" : "edt_conf_general_priority_title",
- "minimum" : 100,
- "maximum" : 253,
- "default" : 240,
- "propertyOrder" : 4
+ "v4lEnable": {
+ "type": "boolean",
+ "required": true,
+ "title": "edt_conf_instC_v4lEnable_title",
+ "default": false,
+ "propertyOrder": 4
+ },
+ "v4lGrabberDevice": {
+ "type": "string",
+ "required": true,
+ "title": "edt_conf_instC_video_grabber_device_title",
+ "default": "NONE",
+ "propertyOrder": 5
+ },
+ "v4lPriority": {
+ "type": "integer",
+ "required": true,
+ "title": "edt_conf_general_priority_title",
+ "minimum": 100,
+ "maximum": 253,
+ "default": 240,
+ "propertyOrder": 6
}
},
"additionalProperties" : false