Camera Calibration UI fails to open Production Camera

Steps to reproduce

Steps to reproduce:
1. configure production camera device for camera calibration UI
2. go to camera calibration UI

Actual Results:
Failed to open frame source: ... in CameraCalibrationUI.takeControl(Zeile 105)

Expected Results:
UI shows live stream from production camera

Workaround (if any):

Activity

Show:
Stephen Marquard
November 27, 2017, 12:40 PM

14:38:10 INFO: MainGUI.install() – Installing interface: Production Camera
Exception in thread "AWT-EventQueue-0" java.lang.IllegalArgumentException: Unknown display registration
at cv.lecturesight.display.impl.DisplayServiceImpl.getDisplayByRegistration(DisplayServiceImpl.java:94)
at cv.lecturesight.setup.CameraCalibrationUI.takeControl(CameraCalibrationUI.java:89)
at cv.lecturesight.setup.CameraCalibrationPanel.hierarchyChanged(CameraCalibrationPanel.java:52)
at java.awt.Component.processHierarchyEvent(Component.java:6700)
at java.awt.Component.processEvent(Component.java:6319)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.Component.createHierarchyEvents(Component.java:5549)
at java.awt.Container.createHierarchyEvents(Container.java:1445)
at java.awt.Container.createHierarchyEvents(Container.java:1441)
at java.awt.Container.createHierarchyEvents(Container.java:1441)
at java.awt.Container.createHierarchyEvents(Container.java:1441)
at java.awt.Container.createHierarchyEvents(Container.java:1441)
at java.awt.Container.addImpl(Container.java:1141)
at javax.swing.JLayeredPane.addImpl(JLayeredPane.java:231)
at javax.swing.JDesktopPane.addImpl(JDesktopPane.java:484)
at java.awt.Container.add(Container.java:417)
at cv.lecturesight.gui.impl.MainGUIFrame.actionPerformed(MainGUIFrame.java:104)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

James Perrin
November 28, 2017, 4:34 PM

It's the getDisplayByRegistration() command that is actually broken.

Stephen Marquard
December 7, 2017, 9:27 AM

It looks like the FrameSourceManager is not really geared to handle multiple active framesources at the same time.

Recently we've added some options like

  1. Set this to true if the framesource is inverted (mounted upside-down) and should be rotated 180 degrees
    cv.lecturesight.framesource.inverted=false

  2. Max frame rate from webcam
    cv.lecturesight.framesource.maxfps=25

  3. Save overview snapshots
    cv.lecturesight.framesource.snapshot.file=/opt/ls/record/overview.png

for the overview camera which wouldn't necessarily apply to a different framesource (ptz)

Probably the FrameSourceManager needs to support registering multiple framesources.

Maybe worth tackling this when server branch is merged back?

Assignee

James Perrin

Reporter

Benjamin Wulff

Severity

None

Components

Fix versions

Affects versions

Priority

Major
Configure