Repository files navigation

#DirectLight

##Description DirectLight is an AmbiBox and Prismatik plugin that allows a DirectShow capture device to be used as a grabbing source. This allows external video devices to take advantage of backlighting.

Version 0.1

##Dependencies

  • Python 2.7 (32 bit)
  • NumPy
  • OpenCV (2.4.9 build included in this repository)
  • FFmpeg (optional, required if using FFmpeg capture instead of OpenCV)
  • AmbiBox (tested on 2.1.5) or Prismatik (tested on 5.11.1)
  • A DirectShow compatible capture device

##Installation

  • Install Python 2.7 and NumPy
  • Download the ZIP from the repository
  • Unzip to a new local folder
  • If using Prismatik:
    • Enable the API
      • Enable Expert mode under Profiles
      • Check Enable server under Experimental
    • Place the unzipped folder in the Prismatik plugins directory (e.g. C:\Users\owenb321\Prismatik\Plugins\DirectLight)
    • Open DirectLight.ini in the DirectLight folder and set serverType to prismatik
    • Refresh the plugin list in Prismatik
  • If using AmbiBox:
    • Open DirectLight.ini in the DirectLight folder and set serverType to ambibox
    • Run AmbiBox as administrator (required to update plugin settings)
    • Click the Intelligent backlight display button and enable the API server under the Additional settings tab
    • Click the Plugins button, select PythonScriptManager and click Show settings
    • Click Add Script in the popup, navigate to the folder you unzipped the plugin to and select DirectLight.py
  • If using FFmpeg to open the capture device (may be necessary for some capture devices)

##Configuration Screen grabbing zones must be configured in AmbiBox/Prismatik.

Other settings are configured in the DirectLight.ini file.

  • Main
    • These are used by Prismatik to identify the plugin
  • Capture
    • videoDevice and videoDeviceName are the DirectShow provided name and number for the capture device. These can be found by running ListDevices.py included in the repository and reading the devices.txt file it outputs.
    • videoWidth/videoHeight sets the resolution to request from the capture device. (OpenCV may ignore this setting and default to 640x480 anyway)
    • videoFramerate sets the framerate (FPS) to request from the capture device.
  • Render
    • Sets the resolution to process the captured image at. May improve performance if set lower than capture resolution (untested).
  • Cropping
    • Sets the number of pixels to crop from each side to remove unwanted borders that can by caused by analog capture devices
  • Display
    • Sets the resolution of the display Prismatik/AmbiBox is set to capture. This is required to scale the grabber zones to the DirectShow source properly.
  • Lightpack
    • host - Address of the API server. 127.0.0.1 is the local machine.
    • port - API server port number. 3636 is the default.
  • Switches
    • serverType - selects which backlight software being used. Can be set to prismatik or ambibox
    • useFfmpeg - 1 or 0. If enabled, uses FFmpeg to open capture device
    • labColorspace - 1 or 0. If enabled, uses the Lab* colorspace to provide more accurate color averaging, but may increase processing time
    • enableStandby - 1 or 0. If enabled, checks if the image has changed periodically and unlocks the API if there has been no change. May not work properly with an analog capture device.
    • standbyTimeoutSeconds - Number of seconds before entering standby (if enabled)

##Hardware A DirectShow compatible capture device is required. I've tested this with a Somagic version EasyCap (aka SM-USB 007 or SMI Grabber Device). My set up was an A/V receiver hooked up to an HDMI splitter, then run through an HDMI to composite adapter, and finally the EasyCap. This worked with OpenCV capturing, but had a slightly noticeable delay in backlighting.

My current set up is using an AVerMedia ExtremeCap U3 which has an HDMI input. This required using FFmpeg to capture since OpenCV was unable to set the capture resolution properly (capturing at 640x480 returns a garbled screen with a 1080p HDMI input). I see no noticeable delay when using this card.

About

Directshow input plugin for Prismatik/AmbiBox

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

#DirectLight

##Description DirectLight is an AmbiBox and Prismatik plugin that allows a DirectShow capture device to be used as a grabbing source. This allows external video devices to take advantage of backlighting.

Version 0.1

##Dependencies

  • Python 2.7 (32 bit)
  • NumPy
  • OpenCV (2.4.9 build included in this repository)
  • FFmpeg (optional, required if using FFmpeg capture instead of OpenCV)
  • AmbiBox (tested on 2.1.5) or Prismatik (tested on 5.11.1)
  • A DirectShow compatible capture device

##Installation

  • Install Python 2.7 and NumPy
  • Download the ZIP from the repository
  • Unzip to a new local folder
  • If using Prismatik:
    • Enable the API
      • Enable Expert mode under Profiles
      • Check Enable server under Experimental
    • Place the unzipped folder in the Prismatik plugins directory (e.g. C:\Users\owenb321\Prismatik\Plugins\DirectLight)
    • Open DirectLight.ini in the DirectLight folder and set serverType to prismatik
    • Refresh the plugin list in Prismatik
  • If using AmbiBox:
    • Open DirectLight.ini in the DirectLight folder and set serverType to ambibox
    • Run AmbiBox as administrator (required to update plugin settings)
    • Click the Intelligent backlight display button and enable the API server under the Additional settings tab
    • Click the Plugins button, select PythonScriptManager and click Show settings
    • Click Add Script in the popup, navigate to the folder you unzipped the plugin to and select DirectLight.py
  • If using FFmpeg to open the capture device (may be necessary for some capture devices)

##Configuration Screen grabbing zones must be configured in AmbiBox/Prismatik.

Other settings are configured in the DirectLight.ini file.

  • Main
    • These are used by Prismatik to identify the plugin
  • Capture
    • videoDevice and videoDeviceName are the DirectShow provided name and number for the capture device. These can be found by running ListDevices.py included in the repository and reading the devices.txt file it outputs.
    • videoWidth/videoHeight sets the resolution to request from the capture device. (OpenCV may ignore this setting and default to 640x480 anyway)
    • videoFramerate sets the framerate (FPS) to request from the capture device.
  • Render
    • Sets the resolution to process the captured image at. May improve performance if set lower than capture resolution (untested).
  • Cropping
    • Sets the number of pixels to crop from each side to remove unwanted borders that can by caused by analog capture devices
  • Display
    • Sets the resolution of the display Prismatik/AmbiBox is set to capture. This is required to scale the grabber zones to the DirectShow source properly.
  • Lightpack
    • host - Address of the API server. 127.0.0.1 is the local machine.
    • port - API server port number. 3636 is the default.
  • Switches
    • serverType - selects which backlight software being used. Can be set to prismatik or ambibox
    • useFfmpeg - 1 or 0. If enabled, uses FFmpeg to open capture device
    • labColorspace - 1 or 0. If enabled, uses the Lab* colorspace to provide more accurate color averaging, but may increase processing time
    • enableStandby - 1 or 0. If enabled, checks if the image has changed periodically and unlocks the API if there has been no change. May not work properly with an analog capture device.
    • standbyTimeoutSeconds - Number of seconds before entering standby (if enabled)

##Hardware A DirectShow compatible capture device is required. I've tested this with a Somagic version EasyCap (aka SM-USB 007 or SMI Grabber Device). My set up was an A/V receiver hooked up to an HDMI splitter, then run through an HDMI to composite adapter, and finally the EasyCap. This worked with OpenCV capturing, but had a slightly noticeable delay in backlighting.

My current set up is using an AVerMedia ExtremeCap U3 which has an HDMI input. This required using FFmpeg to capture since OpenCV was unable to set the capture resolution properly (capturing at 640x480 returns a garbled screen with a 1080p HDMI input). I see no noticeable delay when using this card.

About

Directshow input plugin for Prismatik/AmbiBox

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

#DirectLight

##Description DirectLight is an AmbiBox and Prismatik plugin that allows a DirectShow capture device to be used as a grabbing source. This allows external video devices to take advantage of backlighting.

Version 0.1

##Dependencies

  • Python 2.7 (32 bit)
  • NumPy
  • OpenCV (2.4.9 build included in this repository)
  • FFmpeg (optional, required if using FFmpeg capture instead of OpenCV)
  • AmbiBox (tested on 2.1.5) or Prismatik (tested on 5.11.1)
  • A DirectShow compatible capture device

##Installation

  • Install Python 2.7 and NumPy
  • Download the ZIP from the repository
  • Unzip to a new local folder
  • If using Prismatik:
    • Enable the API
      • Enable Expert mode under Profiles
      • Check Enable server under Experimental
    • Place the unzipped folder in the Prismatik plugins directory (e.g. C:\Users\owenb321\Prismatik\Plugins\DirectLight)
    • Open DirectLight.ini in the DirectLight folder and set serverType to prismatik
    • Refresh the plugin list in Prismatik
  • If using AmbiBox:
    • Open DirectLight.ini in the DirectLight folder and set serverType to ambibox
    • Run AmbiBox as administrator (required to update plugin settings)
    • Click the Intelligent backlight display button and enable the API server under the Additional settings tab
    • Click the Plugins button, select PythonScriptManager and click Show settings
    • Click Add Script in the popup, navigate to the folder you unzipped the plugin to and select DirectLight.py
  • If using FFmpeg to open the capture device (may be necessary for some capture devices)

##Configuration Screen grabbing zones must be configured in AmbiBox/Prismatik.

Other settings are configured in the DirectLight.ini file.

  • Main
    • These are used by Prismatik to identify the plugin
  • Capture
    • videoDevice and videoDeviceName are the DirectShow provided name and number for the capture device. These can be found by running ListDevices.py included in the repository and reading the devices.txt file it outputs.
    • videoWidth/videoHeight sets the resolution to request from the capture device. (OpenCV may ignore this setting and default to 640x480 anyway)
    • videoFramerate sets the framerate (FPS) to request from the capture device.
  • Render
    • Sets the resolution to process the captured image at. May improve performance if set lower than capture resolution (untested).
  • Cropping
    • Sets the number of pixels to crop from each side to remove unwanted borders that can by caused by analog capture devices
  • Display
    • Sets the resolution of the display Prismatik/AmbiBox is set to capture. This is required to scale the grabber zones to the DirectShow source properly.
  • Lightpack
    • host - Address of the API server. 127.0.0.1 is the local machine.
    • port - API server port number. 3636 is the default.
  • Switches
    • serverType - selects which backlight software being used. Can be set to prismatik or ambibox
    • useFfmpeg - 1 or 0. If enabled, uses FFmpeg to open capture device
    • labColorspace - 1 or 0. If enabled, uses the Lab* colorspace to provide more accurate color averaging, but may increase processing time
    • enableStandby - 1 or 0. If enabled, checks if the image has changed periodically and unlocks the API if there has been no change. May not work properly with an analog capture device.
    • standbyTimeoutSeconds - Number of seconds before entering standby (if enabled)

##Hardware A DirectShow compatible capture device is required. I've tested this with a Somagic version EasyCap (aka SM-USB 007 or SMI Grabber Device). My set up was an A/V receiver hooked up to an HDMI splitter, then run through an HDMI to composite adapter, and finally the EasyCap. This worked with OpenCV capturing, but had a slightly noticeable delay in backlighting.

My current set up is using an AVerMedia ExtremeCap U3 which has an HDMI input. This required using FFmpeg to capture since OpenCV was unable to set the capture resolution properly (capturing at 640x480 returns a garbled screen with a 1080p HDMI input). I see no noticeable delay when using this card.

About

Directshow input plugin for Prismatik/AmbiBox

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

#DirectLight

##Description DirectLight is an AmbiBox and Prismatik plugin that allows a DirectShow capture device to be used as a grabbing source. This allows external video devices to take advantage of backlighting.

Version 0.1

##Dependencies

  • Python 2.7 (32 bit)
  • NumPy
  • OpenCV (2.4.9 build included in this repository)
  • FFmpeg (optional, required if using FFmpeg capture instead of OpenCV)
  • AmbiBox (tested on 2.1.5) or Prismatik (tested on 5.11.1)
  • A DirectShow compatible capture device

##Installation

  • Install Python 2.7 and NumPy
  • Download the ZIP from the repository
  • Unzip to a new local folder
  • If using Prismatik:
    • Enable the API
      • Enable Expert mode under Profiles
      • Check Enable server under Experimental
    • Place the unzipped folder in the Prismatik plugins directory (e.g. C:\Users\owenb321\Prismatik\Plugins\DirectLight)
    • Open DirectLight.ini in the DirectLight folder and set serverType to prismatik
    • Refresh the plugin list in Prismatik
  • If using AmbiBox:
    • Open DirectLight.ini in the DirectLight folder and set serverType to ambibox
    • Run AmbiBox as administrator (required to update plugin settings)
    • Click the Intelligent backlight display button and enable the API server under the Additional settings tab
    • Click the Plugins button, select PythonScriptManager and click Show settings
    • Click Add Script in the popup, navigate to the folder you unzipped the plugin to and select DirectLight.py
  • If using FFmpeg to open the capture device (may be necessary for some capture devices)

##Configuration Screen grabbing zones must be configured in AmbiBox/Prismatik.

Other settings are configured in the DirectLight.ini file.

  • Main
    • These are used by Prismatik to identify the plugin
  • Capture
    • videoDevice and videoDeviceName are the DirectShow provided name and number for the capture device. These can be found by running ListDevices.py included in the repository and reading the devices.txt file it outputs.
    • videoWidth/videoHeight sets the resolution to request from the capture device. (OpenCV may ignore this setting and default to 640x480 anyway)
    • videoFramerate sets the framerate (FPS) to request from the capture device.
  • Render
    • Sets the resolution to process the captured image at. May improve performance if set lower than capture resolution (untested).
  • Cropping
    • Sets the number of pixels to crop from each side to remove unwanted borders that can by caused by analog capture devices
  • Display
    • Sets the resolution of the display Prismatik/AmbiBox is set to capture. This is required to scale the grabber zones to the DirectShow source properly.
  • Lightpack
    • host - Address of the API server. 127.0.0.1 is the local machine.
    • port - API server port number. 3636 is the default.
  • Switches
    • serverType - selects which backlight software being used. Can be set to prismatik or ambibox
    • useFfmpeg - 1 or 0. If enabled, uses FFmpeg to open capture device
    • labColorspace - 1 or 0. If enabled, uses the Lab* colorspace to provide more accurate color averaging, but may increase processing time
    • enableStandby - 1 or 0. If enabled, checks if the image has changed periodically and unlocks the API if there has been no change. May not work properly with an analog capture device.
    • standbyTimeoutSeconds - Number of seconds before entering standby (if enabled)

##Hardware A DirectShow compatible capture device is required. I've tested this with a Somagic version EasyCap (aka SM-USB 007 or SMI Grabber Device). My set up was an A/V receiver hooked up to an HDMI splitter, then run through an HDMI to composite adapter, and finally the EasyCap. This worked with OpenCV capturing, but had a slightly noticeable delay in backlighting.

My current set up is using an AVerMedia ExtremeCap U3 which has an HDMI input. This required using FFmpeg to capture since OpenCV was unable to set the capture resolution properly (capturing at 640x480 returns a garbled screen with a 1080p HDMI input). I see no noticeable delay when using this card.

About

Directshow input plugin for Prismatik/AmbiBox

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

#DirectLight

##Description DirectLight is an AmbiBox and Prismatik plugin that allows a DirectShow capture device to be used as a grabbing source. This allows external video devices to take advantage of backlighting.

Version 0.1

##Dependencies

  • Python 2.7 (32 bit)
  • NumPy
  • OpenCV (2.4.9 build included in this repository)
  • FFmpeg (optional, required if using FFmpeg capture instead of OpenCV)
  • AmbiBox (tested on 2.1.5) or Prismatik (tested on 5.11.1)
  • A DirectShow compatible capture device

##Installation

  • Install Python 2.7 and NumPy
  • Download the ZIP from the repository
  • Unzip to a new local folder
  • If using Prismatik:
    • Enable the API
      • Enable Expert mode under Profiles
      • Check Enable server under Experimental
    • Place the unzipped folder in the Prismatik plugins directory (e.g. C:\Users\owenb321\Prismatik\Plugins\DirectLight)
    • Open DirectLight.ini in the DirectLight folder and set serverType to prismatik
    • Refresh the plugin list in Prismatik
  • If using AmbiBox:
    • Open DirectLight.ini in the DirectLight folder and set serverType to ambibox
    • Run AmbiBox as administrator (required to update plugin settings)
    • Click the Intelligent backlight display button and enable the API server under the Additional settings tab
    • Click the Plugins button, select PythonScriptManager and click Show settings
    • Click Add Script in the popup, navigate to the folder you unzipped the plugin to and select DirectLight.py
  • If using FFmpeg to open the capture device (may be necessary for some capture devices)

##Configuration Screen grabbing zones must be configured in AmbiBox/Prismatik.

Other settings are configured in the DirectLight.ini file.

  • Main
    • These are used by Prismatik to identify the plugin
  • Capture
    • videoDevice and videoDeviceName are the DirectShow provided name and number for the capture device. These can be found by running ListDevices.py included in the repository and reading the devices.txt file it outputs.
    • videoWidth/videoHeight sets the resolution to request from the capture device. (OpenCV may ignore this setting and default to 640x480 anyway)
    • videoFramerate sets the framerate (FPS) to request from the capture device.
  • Render
    • Sets the resolution to process the captured image at. May improve performance if set lower than capture resolution (untested).
  • Cropping
    • Sets the number of pixels to crop from each side to remove unwanted borders that can by caused by analog capture devices
  • Display
    • Sets the resolution of the display Prismatik/AmbiBox is set to capture. This is required to scale the grabber zones to the DirectShow source properly.
  • Lightpack
    • host - Address of the API server. 127.0.0.1 is the local machine.
    • port - API server port number. 3636 is the default.
  • Switches
    • serverType - selects which backlight software being used. Can be set to prismatik or ambibox
    • useFfmpeg - 1 or 0. If enabled, uses FFmpeg to open capture device
    • labColorspace - 1 or 0. If enabled, uses the Lab* colorspace to provide more accurate color averaging, but may increase processing time
    • enableStandby - 1 or 0. If enabled, checks if the image has changed periodically and unlocks the API if there has been no change. May not work properly with an analog capture device.
    • standbyTimeoutSeconds - Number of seconds before entering standby (if enabled)

##Hardware A DirectShow compatible capture device is required. I've tested this with a Somagic version EasyCap (aka SM-USB 007 or SMI Grabber Device). My set up was an A/V receiver hooked up to an HDMI splitter, then run through an HDMI to composite adapter, and finally the EasyCap. This worked with OpenCV capturing, but had a slightly noticeable delay in backlighting.

My current set up is using an AVerMedia ExtremeCap U3 which has an HDMI input. This required using FFmpeg to capture since OpenCV was unable to set the capture resolution properly (capturing at 640x480 returns a garbled screen with a 1080p HDMI input). I see no noticeable delay when using this card.

About

Directshow input plugin for Prismatik/AmbiBox

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

#DirectLight

##Description DirectLight is an AmbiBox and Prismatik plugin that allows a DirectShow capture device to be used as a grabbing source. This allows external video devices to take advantage of backlighting.

Version 0.1

##Dependencies

  • Python 2.7 (32 bit)
  • NumPy
  • OpenCV (2.4.9 build included in this repository)
  • FFmpeg (optional, required if using FFmpeg capture instead of OpenCV)
  • AmbiBox (tested on 2.1.5) or Prismatik (tested on 5.11.1)
  • A DirectShow compatible capture device

##Installation

  • Install Python 2.7 and NumPy
  • Download the ZIP from the repository
  • Unzip to a new local folder
  • If using Prismatik:
    • Enable the API
      • Enable Expert mode under Profiles
      • Check Enable server under Experimental
    • Place the unzipped folder in the Prismatik plugins directory (e.g. C:\Users\owenb321\Prismatik\Plugins\DirectLight)
    • Open DirectLight.ini in the DirectLight folder and set serverType to prismatik
    • Refresh the plugin list in Prismatik
  • If using AmbiBox:
    • Open DirectLight.ini in the DirectLight folder and set serverType to ambibox
    • Run AmbiBox as administrator (required to update plugin settings)
    • Click the Intelligent backlight display button and enable the API server under the Additional settings tab
    • Click the Plugins button, select PythonScriptManager and click Show settings
    • Click Add Script in the popup, navigate to the folder you unzipped the plugin to and select DirectLight.py
  • If using FFmpeg to open the capture device (may be necessary for some capture devices)

##Configuration Screen grabbing zones must be configured in AmbiBox/Prismatik.

Other settings are configured in the DirectLight.ini file.

  • Main
    • These are used by Prismatik to identify the plugin
  • Capture
    • videoDevice and videoDeviceName are the DirectShow provided name and number for the capture device. These can be found by running ListDevices.py included in the repository and reading the devices.txt file it outputs.
    • videoWidth/videoHeight sets the resolution to request from the capture device. (OpenCV may ignore this setting and default to 640x480 anyway)
    • videoFramerate sets the framerate (FPS) to request from the capture device.
  • Render
    • Sets the resolution to process the captured image at. May improve performance if set lower than capture resolution (untested).
  • Cropping
    • Sets the number of pixels to crop from each side to remove unwanted borders that can by caused by analog capture devices
  • Display
    • Sets the resolution of the display Prismatik/AmbiBox is set to capture. This is required to scale the grabber zones to the DirectShow source properly.
  • Lightpack
    • host - Address of the API server. 127.0.0.1 is the local machine.
    • port - API server port number. 3636 is the default.
  • Switches
    • serverType - selects which backlight software being used. Can be set to prismatik or ambibox
    • useFfmpeg - 1 or 0. If enabled, uses FFmpeg to open capture device
    • labColorspace - 1 or 0. If enabled, uses the Lab* colorspace to provide more accurate color averaging, but may increase processing time
    • enableStandby - 1 or 0. If enabled, checks if the image has changed periodically and unlocks the API if there has been no change. May not work properly with an analog capture device.
    • standbyTimeoutSeconds - Number of seconds before entering standby (if enabled)

##Hardware A DirectShow compatible capture device is required. I've tested this with a Somagic version EasyCap (aka SM-USB 007 or SMI Grabber Device). My set up was an A/V receiver hooked up to an HDMI splitter, then run through an HDMI to composite adapter, and finally the EasyCap. This worked with OpenCV capturing, but had a slightly noticeable delay in backlighting.

My current set up is using an AVerMedia ExtremeCap U3 which has an HDMI input. This required using FFmpeg to capture since OpenCV was unable to set the capture resolution properly (capturing at 640x480 returns a garbled screen with a 1080p HDMI input). I see no noticeable delay when using this card.

About

Directshow input plugin for Prismatik/AmbiBox

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

#DirectLight

##Description DirectLight is an AmbiBox and Prismatik plugin that allows a DirectShow capture device to be used as a grabbing source. This allows external video devices to take advantage of backlighting.

Version 0.1

##Dependencies

  • Python 2.7 (32 bit)
  • NumPy
  • OpenCV (2.4.9 build included in this repository)
  • FFmpeg (optional, required if using FFmpeg capture instead of OpenCV)
  • AmbiBox (tested on 2.1.5) or Prismatik (tested on 5.11.1)
  • A DirectShow compatible capture device

##Installation

  • Install Python 2.7 and NumPy
  • Download the ZIP from the repository
  • Unzip to a new local folder
  • If using Prismatik:
    • Enable the API
      • Enable Expert mode under Profiles
      • Check Enable server under Experimental
    • Place the unzipped folder in the Prismatik plugins directory (e.g. C:\Users\owenb321\Prismatik\Plugins\DirectLight)
    • Open DirectLight.ini in the DirectLight folder and set serverType to prismatik
    • Refresh the plugin list in Prismatik
  • If using AmbiBox:
    • Open DirectLight.ini in the DirectLight folder and set serverType to ambibox
    • Run AmbiBox as administrator (required to update plugin settings)
    • Click the Intelligent backlight display button and enable the API server under the Additional settings tab
    • Click the Plugins button, select PythonScriptManager and click Show settings
    • Click Add Script in the popup, navigate to the folder you unzipped the plugin to and select DirectLight.py
  • If using FFmpeg to open the capture device (may be necessary for some capture devices)

##Configuration Screen grabbing zones must be configured in AmbiBox/Prismatik.

Other settings are configured in the DirectLight.ini file.

  • Main
    • These are used by Prismatik to identify the plugin
  • Capture
    • videoDevice and videoDeviceName are the DirectShow provided name and number for the capture device. These can be found by running ListDevices.py included in the repository and reading the devices.txt file it outputs.
    • videoWidth/videoHeight sets the resolution to request from the capture device. (OpenCV may ignore this setting and default to 640x480 anyway)
    • videoFramerate sets the framerate (FPS) to request from the capture device.
  • Render
    • Sets the resolution to process the captured image at. May improve performance if set lower than capture resolution (untested).
  • Cropping
    • Sets the number of pixels to crop from each side to remove unwanted borders that can by caused by analog capture devices
  • Display
    • Sets the resolution of the display Prismatik/AmbiBox is set to capture. This is required to scale the grabber zones to the DirectShow source properly.
  • Lightpack
    • host - Address of the API server. 127.0.0.1 is the local machine.
    • port - API server port number. 3636 is the default.
  • Switches
    • serverType - selects which backlight software being used. Can be set to prismatik or ambibox
    • useFfmpeg - 1 or 0. If enabled, uses FFmpeg to open capture device
    • labColorspace - 1 or 0. If enabled, uses the Lab* colorspace to provide more accurate color averaging, but may increase processing time
    • enableStandby - 1 or 0. If enabled, checks if the image has changed periodically and unlocks the API if there has been no change. May not work properly with an analog capture device.
    • standbyTimeoutSeconds - Number of seconds before entering standby (if enabled)

##Hardware A DirectShow compatible capture device is required. I've tested this with a Somagic version EasyCap (aka SM-USB 007 or SMI Grabber Device). My set up was an A/V receiver hooked up to an HDMI splitter, then run through an HDMI to composite adapter, and finally the EasyCap. This worked with OpenCV capturing, but had a slightly noticeable delay in backlighting.

My current set up is using an AVerMedia ExtremeCap U3 which has an HDMI input. This required using FFmpeg to capture since OpenCV was unable to set the capture resolution properly (capturing at 640x480 returns a garbled screen with a 1080p HDMI input). I see no noticeable delay when using this card.

About

Directshow input plugin for Prismatik/AmbiBox

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

#DirectLight

##Description DirectLight is an AmbiBox and Prismatik plugin that allows a DirectShow capture device to be used as a grabbing source. This allows external video devices to take advantage of backlighting.

Version 0.1

##Dependencies

  • Python 2.7 (32 bit)
  • NumPy
  • OpenCV (2.4.9 build included in this repository)
  • FFmpeg (optional, required if using FFmpeg capture instead of OpenCV)
  • AmbiBox (tested on 2.1.5) or Prismatik (tested on 5.11.1)
  • A DirectShow compatible capture device

##Installation

  • Install Python 2.7 and NumPy
  • Download the ZIP from the repository
  • Unzip to a new local folder
  • If using Prismatik:
    • Enable the API
      • Enable Expert mode under Profiles
      • Check Enable server under Experimental
    • Place the unzipped folder in the Prismatik plugins directory (e.g. C:\Users\owenb321\Prismatik\Plugins\DirectLight)
    • Open DirectLight.ini in the DirectLight folder and set serverType to prismatik
    • Refresh the plugin list in Prismatik
  • If using AmbiBox:
    • Open DirectLight.ini in the DirectLight folder and set serverType to ambibox
    • Run AmbiBox as administrator (required to update plugin settings)
    • Click the Intelligent backlight display button and enable the API server under the Additional settings tab
    • Click the Plugins button, select PythonScriptManager and click Show settings
    • Click Add Script in the popup, navigate to the folder you unzipped the plugin to and select DirectLight.py
  • If using FFmpeg to open the capture device (may be necessary for some capture devices)

##Configuration Screen grabbing zones must be configured in AmbiBox/Prismatik.

Other settings are configured in the DirectLight.ini file.

  • Main
    • These are used by Prismatik to identify the plugin
  • Capture
    • videoDevice and videoDeviceName are the DirectShow provided name and number for the capture device. These can be found by running ListDevices.py included in the repository and reading the devices.txt file it outputs.
    • videoWidth/videoHeight sets the resolution to request from the capture device. (OpenCV may ignore this setting and default to 640x480 anyway)
    • videoFramerate sets the framerate (FPS) to request from the capture device.
  • Render
    • Sets the resolution to process the captured image at. May improve performance if set lower than capture resolution (untested).
  • Cropping
    • Sets the number of pixels to crop from each side to remove unwanted borders that can by caused by analog capture devices
  • Display
    • Sets the resolution of the display Prismatik/AmbiBox is set to capture. This is required to scale the grabber zones to the DirectShow source properly.
  • Lightpack
    • host - Address of the API server. 127.0.0.1 is the local machine.
    • port - API server port number. 3636 is the default.
  • Switches
    • serverType - selects which backlight software being used. Can be set to prismatik or ambibox
    • useFfmpeg - 1 or 0. If enabled, uses FFmpeg to open capture device
    • labColorspace - 1 or 0. If enabled, uses the Lab* colorspace to provide more accurate color averaging, but may increase processing time
    • enableStandby - 1 or 0. If enabled, checks if the image has changed periodically and unlocks the API if there has been no change. May not work properly with an analog capture device.
    • standbyTimeoutSeconds - Number of seconds before entering standby (if enabled)

##Hardware A DirectShow compatible capture device is required. I've tested this with a Somagic version EasyCap (aka SM-USB 007 or SMI Grabber Device). My set up was an A/V receiver hooked up to an HDMI splitter, then run through an HDMI to composite adapter, and finally the EasyCap. This worked with OpenCV capturing, but had a slightly noticeable delay in backlighting.

My current set up is using an AVerMedia ExtremeCap U3 which has an HDMI input. This required using FFmpeg to capture since OpenCV was unable to set the capture resolution properly (capturing at 640x480 returns a garbled screen with a 1080p HDMI input). I see no noticeable delay when using this card.

About

Directshow input plugin for Prismatik/AmbiBox

Resources

Stars

10 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages