#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