#6085 closed defect (fixed)
No QAbstractVideoSurface in Qt6
| Reported by: | Owned by: | Tom Goddard | |
|---|---|---|---|
| Priority: | normal | Milestone: | |
| Component: | Window Toolkit | Version: | |
| Keywords: | Cc: | chimera-programmers | |
| Blocked By: | Blocking: | ||
| Notify when closed: | Platform: | all | |
| Project: | ChimeraX |
Description
The following bug report has been submitted:
Platform: macOS-10.16-x86_64-i386-64bit
ChimeraX Version: 1.4.dev202202040724 (2022-02-04 07:24:35 UTC)
Description
webcam command fails with Qt 6
Log:
UCSF ChimeraX version: 1.4.dev202202040724 (2022-02-04)
© 2016-2021 Regents of the University of California. All rights reserved.
How to cite UCSF ChimeraX
Traceback (most recent call last):
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/toolshed/info.py", line 314, in _register_cmd
api._api_caller.register_command(api, self, ci, logger)
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/toolshed/__init__.py", line 1270, in register_command
return cls._get_func(api, "register_command")(ci.name, logger)
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/webcam/__init__.py", line 20, in register_command
from . import webcam
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/webcam/webcam.py", line 424, in <module>
from Qt.QtMultimedia import QAbstractVideoSurface, QVideoFrame
ImportError: cannot import name 'QAbstractVideoSurface' from 'Qt.QtMultimedia'
(/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/Qt/QtMultimedia.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2216, in lazy_register
deferred.call()
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2147, in call
return self.proxy()
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/toolshed/info.py", line 304, in cb
s._register_cmd(ci, l)
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/toolshed/info.py", line 316, in _register_cmd
raise ToolshedError(
chimerax.core.toolshed.ToolshedError: register_command() failed for command
webcam in bundle ChimeraX-WebCam:
cannot import name 'QAbstractVideoSurface' from 'Qt.QtMultimedia'
(/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/Qt/QtMultimedia.py)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/cmd_line/tool.py", line 301, in execute
cmd.run(cmd_text)
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2832, in run
self._find_command_name(final, used_aliases=_used_aliases)
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2568, in _find_command_name
what.lazy_register(cmd_name)
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2218, in lazy_register
raise RuntimeError("delayed command registration for %r failed (%s)" %
(cmd_name, e))
RuntimeError: delayed command registration for 'webcam' failed
(register_command() failed for command webcam in bundle ChimeraX-WebCam:
cannot import name 'QAbstractVideoSurface' from 'Qt.QtMultimedia'
(/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/Qt/QtMultimedia.py))
Populating font family aliases took 245 ms. Replace uses of missing font
family ".AppleSystemUIFont" with one that exists to avoid this cost.
RuntimeError: delayed command registration for 'webcam' failed
(register_command() failed for command webcam in bundle ChimeraX-WebCam:
cannot import name 'QAbstractVideoSurface' from 'Qt.QtMultimedia'
(/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/Qt/QtMultimedia.py))
File "/Users/goddard/Desktop/ChimeraX Qt6 Feb 4 2022
.app/Contents/Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-
packages/chimerax/core/commands/cli.py", line 2218, in lazy_register
raise RuntimeError("delayed command registration for %r failed (%s)" %
(cmd_name, e))
See log for complete Python traceback.
OpenGL version: 4.1 ATI-4.7.29
OpenGL renderer: AMD Radeon Pro 580 OpenGL Engine
OpenGL vendor: ATI Technologies Inc.
Locale: UTF-8
Qt version: PyQt6 6.2.3, Qt 6.2.3
Qt platform: cocoa
Hardware:
Hardware Overview:
Model Name: iMac
Model Identifier: iMac18,3
Processor Name: Quad-Core Intel Core i7
Processor Speed: 4.2 GHz
Number of Processors: 1
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 8 MB
Hyper-Threading Technology: Enabled
Memory: 32 GB
System Firmware Version: 447.40.12.0.0
OS Loader Version: 540.40.4~45
SMC Version (system): 2.41f2
Software:
System Software Overview:
System Version: macOS 12.0.1 (21A559)
Kernel Version: Darwin 21.1.0
Time since boot: 98 days 21:46
Graphics/Displays:
Radeon Pro 580:
Chipset Model: Radeon Pro 580
Type: GPU
Bus: PCIe
PCIe Lane Width: x16
VRAM (Total): 8 GB
Vendor: AMD (0x1002)
Device ID: 0x67df
Revision ID: 0x00c0
ROM Revision: 113-D000AA-931
VBIOS Version: 113-D0001A1X-025
EFI Driver Version: 01.00.931
Metal Family: Supported, Metal GPUFamily macOS 2
Displays:
iMac:
Display Type: Built-In Retina LCD
Resolution: Retina 5K (5120 x 2880)
Framebuffer Depth: 30-Bit Color (ARGB2101010)
Main Display: Yes
Mirror: Off
Online: Yes
Automatically Adjust Brightness: Yes
Connection Type: Internal
Installed Packages:
alabaster: 0.7.12
appdirs: 1.4.4
appnope: 0.1.2
Babel: 2.9.1
backcall: 0.2.0
blockdiag: 3.0.0
certifi: 2021.5.30
cftime: 1.5.2
charset-normalizer: 2.0.11
ChimeraX-AddCharge: 1.2.3
ChimeraX-AddH: 2.1.11
ChimeraX-AlignmentAlgorithms: 2.0
ChimeraX-AlignmentHdrs: 3.2
ChimeraX-AlignmentMatrices: 2.0
ChimeraX-Alignments: 2.2.3
ChimeraX-AlphaFold: 1.0
ChimeraX-AltlocExplorer: 1.0.1
ChimeraX-AmberInfo: 1.0
ChimeraX-Arrays: 1.0
ChimeraX-Atomic: 1.35.1
ChimeraX-AtomicLibrary: 5.0
ChimeraX-AtomSearch: 2.0
ChimeraX-AtomSearchLibrary: 1.0
ChimeraX-AxesPlanes: 2.1
ChimeraX-BasicActions: 1.1
ChimeraX-BILD: 1.0
ChimeraX-BlastProtein: 2.0
ChimeraX-BondRot: 2.0
ChimeraX-BugReporter: 1.0
ChimeraX-BuildStructure: 2.6.1
ChimeraX-Bumps: 1.0
ChimeraX-BundleBuilder: 1.1
ChimeraX-ButtonPanel: 1.0
ChimeraX-CageBuilder: 1.0
ChimeraX-CellPack: 1.0
ChimeraX-Centroids: 1.2
ChimeraX-ChemGroup: 2.0
ChimeraX-Clashes: 2.2.2
ChimeraX-ColorActions: 1.0
ChimeraX-ColorGlobe: 1.0
ChimeraX-ColorKey: 1.5.1
ChimeraX-CommandLine: 1.2
ChimeraX-ConnectStructure: 2.0
ChimeraX-Contacts: 1.0
ChimeraX-Core: 1.4.dev202202040724
ChimeraX-CoreFormats: 1.1
ChimeraX-coulombic: 1.3.2
ChimeraX-Crosslinks: 1.0
ChimeraX-Crystal: 1.0
ChimeraX-CrystalContacts: 1.0
ChimeraX-DataFormats: 1.2.2
ChimeraX-Dicom: 1.0
ChimeraX-DistMonitor: 1.1.5
ChimeraX-Dssp: 2.0
ChimeraX-EMDB-SFF: 1.0
ChimeraX-ExperimentalCommands: 1.0
ChimeraX-FileHistory: 1.0
ChimeraX-FunctionKey: 1.0
ChimeraX-Geometry: 1.1
ChimeraX-gltf: 1.0
ChimeraX-Graphics: 1.1
ChimeraX-Hbonds: 2.1.2
ChimeraX-Help: 1.2
ChimeraX-HKCage: 1.3
ChimeraX-IHM: 1.1
ChimeraX-ImageFormats: 1.2
ChimeraX-IMOD: 1.0
ChimeraX-IO: 1.0.1
ChimeraX-ItemsInspection: 1.0
ChimeraX-Label: 1.1
ChimeraX-ListInfo: 1.1.1
ChimeraX-Log: 1.1.5
ChimeraX-LookingGlass: 1.1
ChimeraX-Maestro: 1.8.1
ChimeraX-Map: 1.1
ChimeraX-MapData: 2.0
ChimeraX-MapEraser: 1.0
ChimeraX-MapFilter: 2.0
ChimeraX-MapFit: 2.0
ChimeraX-MapSeries: 2.1
ChimeraX-Markers: 1.0
ChimeraX-Mask: 1.0
ChimeraX-MatchMaker: 2.0.6
ChimeraX-MDcrds: 2.6
ChimeraX-MedicalToolbar: 1.0.1
ChimeraX-Meeting: 1.0
ChimeraX-MLP: 1.1
ChimeraX-mmCIF: 2.6
ChimeraX-MMTF: 2.1
ChimeraX-Modeller: 1.5.1
ChimeraX-ModelPanel: 1.3.1
ChimeraX-ModelSeries: 1.0
ChimeraX-Mol2: 2.0
ChimeraX-Morph: 1.0
ChimeraX-MouseModes: 1.1
ChimeraX-Movie: 1.0
ChimeraX-Neuron: 1.0
ChimeraX-Nucleotides: 2.0.2
ChimeraX-OpenCommand: 1.8
ChimeraX-PDB: 2.6.5
ChimeraX-PDBBio: 1.0
ChimeraX-PDBLibrary: 1.0.2
ChimeraX-PDBMatrices: 1.0
ChimeraX-PickBlobs: 1.0
ChimeraX-Positions: 1.0
ChimeraX-PresetMgr: 1.1
ChimeraX-PubChem: 2.1
ChimeraX-ReadPbonds: 1.0.1
ChimeraX-Registration: 1.1
ChimeraX-RemoteControl: 1.0
ChimeraX-ResidueFit: 1.0
ChimeraX-RestServer: 1.1
ChimeraX-RNALayout: 1.0
ChimeraX-RotamerLibMgr: 2.0.1
ChimeraX-RotamerLibsDunbrack: 2.0
ChimeraX-RotamerLibsDynameomics: 2.0
ChimeraX-RotamerLibsRichardson: 2.0
ChimeraX-SaveCommand: 1.5
ChimeraX-SchemeMgr: 1.0
ChimeraX-SDF: 2.0
ChimeraX-Segger: 1.0
ChimeraX-Segment: 1.0
ChimeraX-SelInspector: 1.0
ChimeraX-SeqView: 2.4.6
ChimeraX-Shape: 1.0.1
ChimeraX-Shell: 1.0
ChimeraX-Shortcuts: 1.1
ChimeraX-ShowAttr: 1.0
ChimeraX-ShowSequences: 1.0
ChimeraX-SideView: 1.0
ChimeraX-Smiles: 2.1
ChimeraX-SmoothLines: 1.0
ChimeraX-SpaceNavigator: 1.0
ChimeraX-StdCommands: 1.7.6
ChimeraX-STL: 1.0
ChimeraX-Storm: 1.0
ChimeraX-StructMeasure: 1.0.1
ChimeraX-Struts: 1.0.1
ChimeraX-Surface: 1.0
ChimeraX-SwapAA: 2.0
ChimeraX-SwapRes: 2.1.1
ChimeraX-TapeMeasure: 1.0
ChimeraX-Test: 1.0
ChimeraX-Toolbar: 1.1
ChimeraX-ToolshedUtils: 1.2.1
ChimeraX-Tug: 1.0
ChimeraX-UI: 1.16
ChimeraX-uniprot: 2.2
ChimeraX-UnitCell: 1.0
ChimeraX-ViewDockX: 1.1
ChimeraX-VIPERdb: 1.0
ChimeraX-Vive: 1.1
ChimeraX-VolumeMenu: 1.0
ChimeraX-VTK: 1.0
ChimeraX-WavefrontOBJ: 1.0
ChimeraX-WebCam: 1.0
ChimeraX-WebServices: 1.0
ChimeraX-Zone: 1.0
colorama: 0.4.4
cxservices: 1.1
cycler: 0.11.0
Cython: 0.29.26
debugpy: 1.5.1
decorator: 5.1.1
docutils: 0.17.1
entrypoints: 0.4
filelock: 3.4.2
fonttools: 4.29.1
funcparserlib: 1.0.0a0
grako: 3.16.5
h5py: 3.6.0
html2text: 2020.1.16
idna: 3.3
ihm: 0.26
imagecodecs: 2021.11.20
imagesize: 1.3.0
ipykernel: 6.6.1
ipython: 7.31.1
ipython-genutils: 0.2.0
jedi: 0.18.1
Jinja2: 3.0.3
jupyter-client: 7.1.0
jupyter-core: 4.9.1
kiwisolver: 1.3.2
line-profiler: 3.4.0
lxml: 4.7.1
lz4: 3.1.10
MarkupSafe: 2.0.1
matplotlib: 3.5.1
matplotlib-inline: 0.1.3
msgpack: 1.0.3
nest-asyncio: 1.5.4
netCDF4: 1.5.8
networkx: 2.6.3
numexpr: 2.8.1
numpy: 1.22.1
openvr: 1.16.802
packaging: 21.0
ParmEd: 3.4.3
parso: 0.8.3
pexpect: 4.8.0
pickleshare: 0.7.5
Pillow: 9.0.0
pip: 21.3.1
pkginfo: 1.8.2
prompt-toolkit: 3.0.26
psutil: 5.9.0
ptyprocess: 0.7.0
pycollada: 0.7.2
pydicom: 2.2.2
Pygments: 2.11.2
PyOpenGL: 3.1.5
PyOpenGL-accelerate: 3.1.5
pyparsing: 3.0.7
PyQt6-commercial: 6.2.3
PyQt6-sip: 13.2.0
PyQt6-WebEngine-commercial: 6.2.1
python-dateutil: 2.8.2
pytz: 2021.3
pyzmq: 22.3.0
qtconsole: 5.2.2
QtPy: 2.0.1
RandomWords: 0.3.0
requests: 2.27.1
scipy: 1.7.3
setuptools: 59.8.0
sfftk-rw: 0.7.1
six: 1.16.0
snowballstemmer: 2.2.0
sortedcontainers: 2.4.0
Sphinx: 4.3.2
sphinx-autodoc-typehints: 1.15.2
sphinxcontrib-applehelp: 1.0.2
sphinxcontrib-blockdiag: 3.0.0
sphinxcontrib-devhelp: 1.0.2
sphinxcontrib-htmlhelp: 2.0.0
sphinxcontrib-jsmath: 1.0.1
sphinxcontrib-qthelp: 1.0.3
sphinxcontrib-serializinghtml: 1.1.5
suds-community: 1.0.0
tables: 3.7.0
tifffile: 2021.11.2
tinyarray: 1.2.4
tornado: 6.1
traitlets: 5.1.1
urllib3: 1.26.8
wcwidth: 0.2.5
webcolors: 1.11.1
wheel: 0.37.1
wheel-filename: 1.3.0
Change History (5)
comment:1 by , 4 years ago
| Cc: | added |
|---|---|
| Component: | Unassigned → Window Toolkit |
| Owner: | set to |
| Platform: | → all |
| Project: | → ChimeraX |
| Status: | new → assigned |
| Summary: | ChimeraX bug report submission → No QAbstractVideoSurface in Qt6 |
comment:2 by , 4 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
Fixed.
Made webcam command work with Qt6. Qt 6 greatly changed the APIs for video capture so I wrote a new version of the video capture code to use the new APIs and webcam decides which version of the code to use based on whether Qt5 or Qt6 is being used. I have only tested the Qt6 code on Mac so far. Needs testing on Windows and Linux.
comment:3 by , 4 years ago
Tested new Qt6 webcam code on 2021 MacBookPro18,2 with M1Max CPU. Its camera offers only NV12 video encoding, so I added support for that encoding to the webcam command and tested with Qt6. I did not add that encoding to the Qt5 webcam command.
I also tested an 2019 MacBookPro15,3 with Qt5 (YUYV encoding) and Qt6 (NV12 encoding), both working, and I tested on a 2012 MacBookPro10,1 on Qt5 (YUYV encoding) and Qt6 (UYVY encoding) and both work.
Still needs testing on Windows and Linux.
comment:4 by , 4 years ago
Tested on two windows machines both worked with Qt5 and Qt6 webcam. Desktop with Logitech C922 used NV12 encoding with Qt 6. Laptop used YUYV encoding with Qt5 and NV12 with Qt6.
comment:5 by , 4 years ago
Tested on Ubuntu 20.04 with Logitech C922 camera on Qt5 and Qt6, both worked, both used YUYV pixel format.
Replacement is QVideoSink? https://forum.qt.io/topic/128382/qt6-porting-guidance-qcamera-and-qabstractvideosurface