Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
6.10.0 Beta1
-
None
Description
Qt Multimedia now provides the impressive FFmpeg plugin, but after some tests with the QML multimedia components, I found that not all the RHI backend configurations can work properly.
QSG_RHI_BACKEND | QSG_RHI_PREFER_SOFTWARE_RENDERER | FFMpeg Plugin | Windows Plugin |
---|---|---|---|
d3d11 | 0 | ![]() |
![]() |
d3d12 | 0 | ![]() |
![]() |
opengl | 0 | Crash | ![]() |
vulkan | 0 | Crash | ![]() |
d3d11 | 1 | Dead Lock | ![]() |
d3d12 | 1 | ![]() |
![]() |
opengl | 1 | Crash | ![]() |
vulkan | 1 | Crash | ![]() |
OpenGL HW/SW Backend
0xC0000005: Access violation reading location 0x00007DF533280000.
> Qt6Gui.dll!QOpenGLContext::qt_metacast(const char * _clname) Line 154 C++ [Inline Frame] ffmpegmediaplugin.dll!Microsoft::WRL::ComPtr<ID3D11Device>::InternalAddRef() Line 223 C++ [Inline Frame] ffmpegmediaplugin.dll!Microsoft::WRL::ComPtr<ID3D11Device>::{ctor}(ID3D11Device * other) Line 254 C++ [Inline Frame] ffmpegmediaplugin.dll!?A0x99d1b059::GetD3DDevice(QRhi *) Line 36 C++ [Inline Frame] ffmpegmediaplugin.dll!QFFmpeg::D3D11TextureConverter::{ctor}(QRhi * rhi) Line 275 C++ [Inline Frame] ffmpegmediaplugin.dll!std::_Construct_in_place(QFFmpeg::D3D11TextureConverter &) Line 265 C++ [Inline Frame] ffmpegmediaplugin.dll!std::_Ref_count_obj2<QFFmpeg::D3D11TextureConverter>::{ctor}(QRhi * &&) Line 2092 C++ ffmpegmediaplugin.dll!std::make_shared<QFFmpeg::D3D11TextureConverter,QRhi *>(QRhi * && <_Args_0>) Line 2765 C++ [Inline Frame] ffmpegmediaplugin.dll!QFFmpeg::TextureConverter::updateBackend::__l2::<lambda_1>::operator()(q20::type_identity<QFFmpeg::D3D11TextureConverter>) Line 110 C++ [Inline Frame] ffmpegmediaplugin.dll!?A0xa51a8272::applyConverterTypeByPixelFormat(AVPixelFormat) Line 54 C++ ffmpegmediaplugin.dll!QFFmpeg::TextureConverter::updateBackend(AVPixelFormat fmt) Line 108 C++ [Inline Frame] ffmpegmediaplugin.dll!QFFmpeg::TextureConverter::init(AVFrame &) Line 79 C++ ffmpegmediaplugin.dll!QFFmpegVideoBuffer::createTexturesFromHwFrame(QRhi & rhi, std::unique_ptr<QVideoFrameTextures,std::default_delete<QVideoFrameTextures>> & oldTextures) Line 227 C++ ffmpegmediaplugin.dll!QFFmpegVideoBuffer::mapTextures(QRhi & rhi, std::unique_ptr<QVideoFrameTextures,std::default_delete<QVideoFrameTextures>> & oldTextures) Line 204 C++ Qt6Multimedia.dll!QVideoTextureHelper::createTextures(const QVideoFrame & frame, QRhi & rhi, QRhiResourceUpdateBatch & rub, std::unique_ptr<QVideoFrameTextures,std::default_delete<QVideoFrameTextures>> oldTextures) Line 872 C++ Qt6Multimedia.dll!QVideoFrameTexturePool::updateTextures(QRhi & rhi, QRhiResourceUpdateBatch & rub) Line 22 C++ [Inline Frame] Qt6MultimediaQuick.dll!QSGVideoMaterial::updateTextures(QRhi *) Line 130 C++ Qt6MultimediaQuick.dll!QSGVideoMaterialRhiShader::updateUniformData(QSGMaterialShader::RenderState & state, QSGMaterial * newMaterial, QSGMaterial * oldMaterial) Line 157 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::updateMaterialDynamicData(QSGBatchRenderer::ShaderManagerShader * sms, QSGMaterialShader::RenderState & renderState, QSGMaterial * material, const QSGBatchRenderer::Batch * batch, QSGBatchRenderer::Element * e, int ubufOffset, int ubufRegionSize, char * directUpdatePtr) Line 2953 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::prepareRenderMergedBatch(QSGBatchRenderer::Batch * batch, QSGBatchRenderer::Renderer::PreparedRenderBatch * renderBatch) Line 3269 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::prepareRenderPass(QSGBatchRenderer::Renderer::RenderPassContext * ctx) Line 3870 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::render() Line 3661 C++ Qt6Quick.dll!QSGRenderer::renderScene() Line 146 C++ Qt6Quick.dll!QQuickWindowPrivate::renderSceneGraph() Line 692 C++ Qt6Quick.dll!QSGRenderThread::syncAndRender() Line 781 C++ Qt6Quick.dll!QSGRenderThread::run() Line 996 C++ Qt6Core.dll!QThreadPrivate::start(void * arg) Line 189 C++ kernel32.dll!BaseThreadInitThunk() Unknown ntdll.dll!RtlUserThreadStart() Unknown
Vulkan HW/SW Backend
0xC0000005: Access violation reading location 0x00007DF553AA0000.
ntdll.dll!LdrpDispatchUserCallTarget() Unknown > [Inline Frame] ffmpegmediaplugin.dll!Microsoft::WRL::ComPtr<ID3D11Device>::InternalAddRef() Line 223 C++ [Inline Frame] ffmpegmediaplugin.dll!Microsoft::WRL::ComPtr<ID3D11Device>::{ctor}(ID3D11Device * other) Line 254 C++ [Inline Frame] ffmpegmediaplugin.dll!?A0x99d1b059::GetD3DDevice(QRhi *) Line 36 C++ [Inline Frame] ffmpegmediaplugin.dll!QFFmpeg::D3D11TextureConverter::{ctor}(QRhi * rhi) Line 275 C++ [Inline Frame] ffmpegmediaplugin.dll!std::_Construct_in_place(QFFmpeg::D3D11TextureConverter &) Line 265 C++ [Inline Frame] ffmpegmediaplugin.dll!std::_Ref_count_obj2<QFFmpeg::D3D11TextureConverter>::{ctor}(QRhi * &&) Line 2092 C++ ffmpegmediaplugin.dll!std::make_shared<QFFmpeg::D3D11TextureConverter,QRhi *>(QRhi * && <_Args_0>) Line 2765 C++ [Inline Frame] ffmpegmediaplugin.dll!QFFmpeg::TextureConverter::updateBackend::__l2::<lambda_1>::operator()(q20::type_identity<QFFmpeg::D3D11TextureConverter>) Line 110 C++ [Inline Frame] ffmpegmediaplugin.dll!?A0xa51a8272::applyConverterTypeByPixelFormat(AVPixelFormat) Line 54 C++ ffmpegmediaplugin.dll!QFFmpeg::TextureConverter::updateBackend(AVPixelFormat fmt) Line 108 C++ [Inline Frame] ffmpegmediaplugin.dll!QFFmpeg::TextureConverter::init(AVFrame &) Line 79 C++ ffmpegmediaplugin.dll!QFFmpegVideoBuffer::createTexturesFromHwFrame(QRhi & rhi, std::unique_ptr<QVideoFrameTextures,std::default_delete<QVideoFrameTextures>> & oldTextures) Line 227 C++ ffmpegmediaplugin.dll!QFFmpegVideoBuffer::mapTextures(QRhi & rhi, std::unique_ptr<QVideoFrameTextures,std::default_delete<QVideoFrameTextures>> & oldTextures) Line 204 C++ Qt6Multimedia.dll!QVideoTextureHelper::createTextures(const QVideoFrame & frame, QRhi & rhi, QRhiResourceUpdateBatch & rub, std::unique_ptr<QVideoFrameTextures,std::default_delete<QVideoFrameTextures>> oldTextures) Line 872 C++ Qt6Multimedia.dll!QVideoFrameTexturePool::updateTextures(QRhi & rhi, QRhiResourceUpdateBatch & rub) Line 22 C++ [Inline Frame] Qt6MultimediaQuick.dll!QSGVideoMaterial::updateTextures(QRhi *) Line 130 C++ Qt6MultimediaQuick.dll!QSGVideoMaterialRhiShader::updateUniformData(QSGMaterialShader::RenderState & state, QSGMaterial * newMaterial, QSGMaterial * oldMaterial) Line 157 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::updateMaterialDynamicData(QSGBatchRenderer::ShaderManagerShader * sms, QSGMaterialShader::RenderState & renderState, QSGMaterial * material, const QSGBatchRenderer::Batch * batch, QSGBatchRenderer::Element * e, int ubufOffset, int ubufRegionSize, char * directUpdatePtr) Line 2953 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::prepareRenderMergedBatch(QSGBatchRenderer::Batch * batch, QSGBatchRenderer::Renderer::PreparedRenderBatch * renderBatch) Line 3269 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::prepareRenderPass(QSGBatchRenderer::Renderer::RenderPassContext * ctx) Line 3870 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::render() Line 3661 C++ Qt6Quick.dll!QSGRenderer::renderScene() Line 146 C++ Qt6Quick.dll!QQuickWindowPrivate::renderSceneGraph() Line 692 C++ Qt6Quick.dll!QSGRenderThread::syncAndRender() Line 781 C++ Qt6Quick.dll!QSGRenderThread::run() Line 996 C++ Qt6Core.dll!QThreadPrivate::start(void * arg) Line 189 C++ kernel32.dll!BaseThreadInitThunk() Unknown ntdll.dll!RtlUserThreadStart() Unknown
D3D11 SW Backend
Main Thread
ntdll.dll!NtWaitForSingleObject() Unknown KernelBase.dll!WaitForSingleObjectEx() Unknown > Qt6Core.dll!QWaitConditionPrivate::wait(QWaitConditionEvent * wce, QDeadlineTimer deadline) Line 79 C++ Qt6Core.dll!QWaitCondition::wait(QMutex * mutex, QDeadlineTimer deadline) Line 148 C++ Qt6Quick.dll!QSGThreadedRenderLoop::polishAndSync(QSGThreadedRenderLoop::Window * w, bool inExpose) Line 1688 C++ Qt6Quick.dll!QSGThreadedRenderLoop::handleUpdateRequest(QQuickWindow * window) Line 1428 C++ Qt6Quick.dll!QQuickWindow::event(QEvent * event) Line 1596 C++ [Inline Frame] Qt6Core.dll!QCoreApplicationPrivate::notify_helper(QObject *) Line 1281 C++ [Inline Frame] Qt6Core.dll!doNotify(QObject *) Line 1210 C++ Qt6Core.dll!QCoreApplication::notify(QObject * receiver, QEvent * event) Line 1194 C++ Qt6Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1109 C++ Qt6Gui.dll!QPlatformWindow::deliverUpdateRequest() Line 832 C++ Qt6Gui.dll!QPlatformWindow::windowEvent(QEvent * event) Line 477 C++ [Inline Frame] qwindows.dll!QWindowsBaseWindow::windowEvent(QEvent *) Line 1436 C++ qwindows.dll!QWindowsWindow::windowEvent(QEvent * event) Line 2973 C++ [Inline Frame] Qt6Gui.dll!QGuiApplicationPrivate::sendQWindowEventToQPlatformWindow(QWindow *) Line 2124 C++ Qt6Gui.dll!QGuiApplication::notify(QObject * object, QEvent * event) Line 2036 C++ Qt6Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1109 C++ [Inline Frame] Qt6Core.dll!QCoreApplication::sendEvent(QObject *) Line 1549 C++ Qt6Core.dll!QEventDispatcherWin32Private::sendTimerEvent(int timerId) Line 417 C++ Qt6Core.dll!QEventDispatcherWin32::event(QEvent * e) Line 911 C++ [Inline Frame] Qt6Core.dll!QCoreApplicationPrivate::notify_helper(QObject *) Line 1281 C++ [Inline Frame] Qt6Core.dll!doNotify(QObject *) Line 1210 C++ Qt6Core.dll!QCoreApplication::notify(QObject * receiver, QEvent * event) Line 1194 C++ Qt6Core.dll!QCoreApplication::notifyInternal2(QObject * receiver, QEvent * event) Line 1109 C++ [Inline Frame] Qt6Core.dll!QCoreApplication::sendEvent(QObject *) Line 1549 C++ Qt6Core.dll!QCoreApplicationPrivate::sendPostedEvents(QObject * receiver, int event_type, QThreadData * data) Line 1889 C++ Qt6Gui.dll!QWindowsGuiEventDispatcher::sendPostedEvents() Line 44 C++ Qt6Core.dll!QEventDispatcherWin32::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 485 C++ Qt6Gui.dll!QWindowsGuiEventDispatcher::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 37 C++ [Inline Frame] Qt6Core.dll!QEventLoop::processEvents(QFlags<enum QEventLoop::ProcessEventsFlag>) Line 104 C++ Qt6Core.dll!QEventLoop::exec(QFlags<enum QEventLoop::ProcessEventsFlag> flags) Line 185 C++ Qt6Core.dll!QCoreApplication::exec() Line 1452 C++ qml.exe!main(int argc, char * * argv) Line 658 C++ [Inline Frame] qml.exe!invoke_main() Line 78 C++ qml.exe!__scrt_common_main_seh() Line 288 C++ kernel32.dll!BaseThreadInitThunk() Unknown ntdll.dll!RtlUserThreadStart() Unknown
QSG Render Thread
win32u.dll!NtGdiDdDDIAcquireKeyedMutex2() Unknown d3d11.dll!NDXGI::CDevice::WaitForGPUSyncObject(struct IDXGIResourceInternal *,class NDXGI::CKMResource *,unsigned __int64,unsigned long,union _D3D11_KEYED_MUTEX_PRIVATE_DATA *) Unknown d3d11.dll!NDXGI::CDevice::DXGIAcquireSync(struct IDXGIResourceInternal *,class NDXGI::CKMResource *,unsigned __int64,unsigned long) Unknown d3d11.dll!NDXGI::CResource::AcquireSync(unsigned __int64,unsigned long) Unknown > [Inline Frame] ffmpegmediaplugin.dll!QFFmpeg::TextureBridge::copyToSharedTex(ID3D11Device * dev, ID3D11DeviceContext * ctx, const Microsoft::WRL::ComPtr<ID3D11Texture2D> &) Line 114 C++ ffmpegmediaplugin.dll!QFFmpeg::D3D11TextureConverter::createTextureHandles(AVFrame * frame, std::unique_ptr<QVideoFrameTexturesHandles,std::default_delete<QVideoFrameTexturesHandles>> __formal) Line 317 C++ [Inline Frame] ffmpegmediaplugin.dll!QFFmpeg::TextureConverter::createTextureHandles(AVFrame &) Line 100 C++ ffmpegmediaplugin.dll!QFFmpegVideoBuffer::createTexturesFromHwFrame(QRhi & rhi, std::unique_ptr<QVideoFrameTextures,std::default_delete<QVideoFrameTextures>> & oldTextures) Line 238 C++ ffmpegmediaplugin.dll!QFFmpegVideoBuffer::mapTextures(QRhi & rhi, std::unique_ptr<QVideoFrameTextures,std::default_delete<QVideoFrameTextures>> & oldTextures) Line 204 C++ Qt6Multimedia.dll!QVideoTextureHelper::createTextures(const QVideoFrame & frame, QRhi & rhi, QRhiResourceUpdateBatch & rub, std::unique_ptr<QVideoFrameTextures,std::default_delete<QVideoFrameTextures>> oldTextures) Line 872 C++ Qt6Multimedia.dll!QVideoFrameTexturePool::updateTextures(QRhi & rhi, QRhiResourceUpdateBatch & rub) Line 22 C++ [Inline Frame] Qt6MultimediaQuick.dll!QSGVideoMaterial::updateTextures(QRhi *) Line 130 C++ Qt6MultimediaQuick.dll!QSGVideoMaterialRhiShader::updateUniformData(QSGMaterialShader::RenderState & state, QSGMaterial * newMaterial, QSGMaterial * oldMaterial) Line 157 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::updateMaterialDynamicData(QSGBatchRenderer::ShaderManagerShader * sms, QSGMaterialShader::RenderState & renderState, QSGMaterial * material, const QSGBatchRenderer::Batch * batch, QSGBatchRenderer::Element * e, int ubufOffset, int ubufRegionSize, char * directUpdatePtr) Line 2953 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::prepareRenderMergedBatch(QSGBatchRenderer::Batch * batch, QSGBatchRenderer::Renderer::PreparedRenderBatch * renderBatch) Line 3269 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::prepareRenderPass(QSGBatchRenderer::Renderer::RenderPassContext * ctx) Line 3870 C++ Qt6Quick.dll!QSGBatchRenderer::Renderer::render() Line 3661 C++ Qt6Quick.dll!QSGRenderer::renderScene() Line 146 C++ Qt6Quick.dll!QQuickWindowPrivate::renderSceneGraph() Line 692 C++ Qt6Quick.dll!QSGRenderThread::syncAndRender() Line 781 C++ Qt6Quick.dll!QSGRenderThread::run() Line 996 C++ Qt6Core.dll!QThreadPrivate::start(void * arg) Line 189 C++ kernel32.dll!BaseThreadInitThunk() Unknown ntdll.dll!RtlUserThreadStart() Unknown
Tested with different systems (Windows 10/11) and graphic cards (Intel UHD Graphics 770 / GeForce RTX 3090), the results are identical.
Attachments
Issue Links
- depends on
-
QTBUG-134607 Video playback crash when setting QQuickWindow GraphicsAPI to Vulkan
-
- Reported
-
-
QTBUG-115309 Implement DirectX texture propagation from FFMPEG to OpenGL RHI
-
- Reported
-