- 
    
Bug
 - 
    Resolution: Fixed
 - 
    
P2: Important
 - 
    6.3.2, 6.5.2, 6.6.0 Beta2
 - 
    None
 
- 
        
 - 
        9fcfa21aa (dev), 34e6dec02 (6.6), d2feae42c (dev), 77050605b (6.6), ff4ddd4d5 (6.5), 0caa9caea (6.5)
 
Audio recording does not start immediately. There is a delay (about a second) between calling the record() function and starting to actually record the sound.
Sample code:
import QtQuick import QtQuick.Window import QtMultimedia Window { width: 640 height: 480 visible: true CaptureSession { id: captureSession audioInput: AudioInput {} recorder: MediaRecorder { id: recorder onRecorderStateChanged: function (state) { if (state === MediaRecorder.RecordingState) { console.log('Recording started') console.timeEnd('Initialization cost') } } onErrorOccurred: function (error, errorString) { console.log('Error: ' + error + ' (' + errorString + ')') } } } Component.onCompleted: { console.time('Initialization cost') console.log('Start recording...') recorder.record() } }
Just run it and check console output.
qml: Start recording... qml: Recording started Initialization cost: 1720ms
The problem analysis:
When recording starts, the QMediaFormat::resolveForEncoding() function is called internally, which enumerates all system codecs and supported file formats, also for video, regardless of whether video recording is actually required.  This happens directly in QWindowsFormatInfo constructor.
On my system (Win 10 with standard system codecs) enumerating video codecs takes about 900-12000ms (in a release build). Note that this not only delays the recording, but also blocks the UI thread for a while.
Just a sample call stack when pausing execution during recorder initialization:
                                                                                                                                                        
                                                                                                                                                        
1  NtMapViewOfSection                                                                               ntdll                                0x7ffd4bc4d514 
2  umppc17010                                                                                                                            0x1b1b0ef7963  
3  umppc17010                                                                                                                            0x1b1b0ef7d09  
4  RtlIsCriticalSectionLockedByThread                                                               ntdll                                0x7ffd4bbc4d42 
5  RtlIsCriticalSectionLockedByThread                                                               ntdll                                0x7ffd4bbc4aaa 
6  RtlUnlockHeap                                                                                    ntdll                                0x7ffd4bc0fd93 
7  RtlUnlockHeap                                                                                    ntdll                                0x7ffd4bc0fac0 
8  RtlUnlockHeap                                                                                    ntdll                                0x7ffd4bc0ed5f 
9  RtlGetFullPathName_UstrEx                                                                        ntdll                                0x7ffd4bbcfb53 
10 RtlDosPathNameToNtPathName_U                                                                     ntdll                                0x7ffd4bbc73e4 
11 LdrLoadDll                                                                                       ntdll                                0x7ffd4bbc6af4 
12 LoadLibraryExW                                                                                   KERNELBASE                           0x7ffd496556b2 
13 LoadLibraryExA                                                                                   KERNELBASE                           0x7ffd4964e6a1 
14 OpenAdapter10_2                                                                                  igd10um64gen11                       0x7ffd3193417b 
15 GTPin_Init                                                                                       igd10um64gen11                       0x7ffd31ad80d6 
16 OpenAdapter10_2                                                                                  igd10um64gen11                       0x7ffd319a1673 
17 D3DKMTWaitForVerticalBlankEvent                                                                  d3d11                                0x7ffd44d8617e 
18 EnableFeatureLevelUpgrade                                                                        d3d11                                0x7ffd44d07f8e 
19 D3D11CoreCreateDevice                                                                            d3d11                                0x7ffd44d3cc26 
20 D3D11CoreCreateDevice                                                                            d3d11                                0x7ffd44d3c676 
21 D3D11CoreCreateDevice                                                                            d3d11                                0x7ffd44d2df03 
22 DllUnregisterServer                                                                              mfx_mft_mjpgvd_64                    0x7ffcb7b67958 
23 DllUnregisterServer                                                                              mfx_mft_mjpgvd_64                    0x7ffcb7b677f4 
24 DllUnregisterServer                                                                              mfx_mft_mjpgvd_64                    0x7ffcb7b662e2 
25 DllUnregisterServer                                                                              mfx_mft_mjpgvd_64                    0x7ffcb7b66a73 
26 DllUnregisterServer                                                                              mfx_mft_mjpgvd_64                    0x7ffcb7b6655e 
27 DllUnregisterServer                                                                              mfx_mft_mjpgvd_64                    0x7ffcb7b98d8a 
28 DllUnregisterServer                                                                              mfx_mft_mjpgvd_64                    0x7ffcb7b8ccbc 
29 DllUnregisterServer                                                                              mfx_mft_mjpgvd_64                    0x7ffcb7b8eccf 
30 CoGetTreatAsClass                                                                                combase                              0x7ffd49de5134 
31 StringFromGUID2                                                                                  combase                              0x7ffd49d91a00 
32 CoGetTreatAsClass                                                                                combase                              0x7ffd49de58bc 
33 CoDisableCallCancellation                                                                        combase                              0x7ffd49e21b88 
34 Ordinal167                                                                                       combase                              0x7ffd49e26a90 
35 CoTaskMemRealloc                                                                                 combase                              0x7ffd49e1eff1 
36 CoDisableCallCancellation                                                                        combase                              0x7ffd49e21dc0 
37 StringFromGUID2                                                                                  combase                              0x7ffd49d91a00 
38 StringFromGUID2                                                                                  combase                              0x7ffd49d8dc6f 
39 StringFromGUID2                                                                                  combase                              0x7ffd49d91a00 
40 CoCreateInstance                                                                                 combase                              0x7ffd49d7bd2a 
41 CoCreateInstance                                                                                 combase                              0x7ffd49d7a7d0 
42 CoCreateInstance                                                                                 combase                              0x7ffd49d7a52c 
43 MFGetAttributesAsBlob                                                                            MFPlat                               0x7ffd4321da68 
44 MFGetAttributesAsBlob                                                                            MFPlat                               0x7ffd4321d764 
45 MFInitVideoFormat_RGB                                                                            MFPlat                               0x7ffd4322e3fc 
46 MFEnumLocalMFTRegistrations                                                                      MFPlat                               0x7ffd4322fb78 
47 getCodecSet<enum QMediaFormat::VideoCodec>                                                       qwindowsformatinfo.cpp          49   0x7ffcedb91b59 
48 QWindowsFormatInfo::QWindowsFormatInfo                                                           qwindowsformatinfo.cpp          153  0x7ffcedb90cbf 
49 QWindowsMediaIntegration::formatInfo                                                             qwindowsintegration.cpp         55   0x7ffcedbac567 
50 formatInfo                                                                                       qmediaformat.cpp                462  0x7ffcbc847231 
51 QMediaFormat::supportedFileFormats                                                               qmediaformat.cpp                504  0x7ffcbc846021 
52 QMediaFormat::resolveForEncoding                                                                 qmediaformat.cpp                789  0x7ffcbc846cea 
53 QMediaEncoderSettings::resolveFormat                                                             qplatformmediarecorder_p.h      52   0x7ffcbc80594a 
54 QMediaRecorder::record                                                                           qmediarecorder.cpp              347  0x7ffcbc874716 
55 QMediaRecorder::qt_static_metacall                                                               moc_qmediarecorder.cpp          331  0x7ffcbc872955 
56 QMediaRecorder::qt_metacall                                                                      moc_qmediarecorder.cpp          525  0x7ffcbc8726ab 
57 QMetaObject::metacall                                                                            qmetaobject.cpp                 335  0x7ffcae4bf939 
58 QQmlObjectOrGadget::metacall                                                                     qqmlobjectorgadget.cpp          15   0x7ffcb182c9e0 
59 QV4::CallMethod                                                                                  qv4qobjectwrapper.cpp           1542 0x7ffcb147e1eb 
60 QV4::CallPrecise                                                                                 qv4qobjectwrapper.cpp           1834 0x7ffcb147f51c 
61 <lambda_3e8464433ed092c25780b342b967fe3f>::operator()                                            qv4qobjectwrapper.cpp           2731 0x7ffcb1481b53 
62 <lambda_4473c4284921ec2280ffebb7045bfe66>::operator()<<lambda_3e8464433ed092c25780b342b967fe3f>> qv4qobjectwrapper.cpp           2709 0x7ffcb148d1fc 
63 QV4::QObjectMethod::callInternal                                                                 qv4qobjectwrapper.cpp           2731 0x7ffcb14784ae 
64 QV4::QObjectMethod::virtualCall                                                                  qv4qobjectwrapper.cpp           2621 0x7ffcb1477ddc 
65 QV4::FunctionObject::call                                                                        qv4functionobject_p.h           172  0x7ffcb12afbed 
66 QV4::Moth::VME::interpret                                                                        qv4vme_moth.cpp                 902  0x7ffcb155c501 
67 QV4::Moth::VME::exec                                                                             qv4vme_moth.cpp                 584  0x7ffcb1558b35 
68 QV4::doCall                                                                                      qv4function.cpp                 54   0x7ffcb13d4647 
69 QV4::Function::call                                                                              qv4function.cpp                 80   0x7ffcb13d3876 
70 <lambda_f15eb9b3a6e26b3d0034fc979a0ed169>::operator()                                            qv4function.cpp                 31   0x7ffcb13d441d 
71 QV4::convertAndCall<<lambda_f15eb9b3a6e26b3d0034fc979a0ed169>>                                   qv4jscall_p.h                   185  0x7ffcb13d7439 
72 QV4::Function::call                                                                              qv4function.cpp                 27   0x7ffcb13d352e 
73 QQmlJavaScriptExpression::evaluate                                                               qqmljavascriptexpression.cpp    270  0x7ffcb1791a3d 
74 QQmlBoundSignalExpression::evaluate                                                              qqmlboundsignal.cpp             202  0x7ffcb160fad1 
75 QQmlBoundSignal_callback                                                                         qqmlboundsignal.cpp             315  0x7ffcb16100d9 
76 QQmlNotifier::emitNotify                                                                         qqmlnotifier.cpp                71   0x7ffcb180113a 
77 QQmlData::signalEmitted                                                                          qqmlengine.cpp                  356  0x7ffcb1673328 
78 doActivate<0>                                                                                    qobject.cpp                     3913 0x7ffcae56d3b0 
79 QMetaObject::activate                                                                            qobject.cpp                     4078 0x7ffcae554408 
80 QQmlComponentAttached::completed                                                                 moc_qqmlcomponentattached_p.cpp 163  0x7ffcb1639f52 
81 QQmlObjectCreator::finalize                                                                      qqmlobjectcreator.cpp           1520 0x7ffcb1804469 
82 QQmlComponentPrivate::complete                                                                   qqmlcomponent.cpp               1149 0x7ffcb16389db 
83 QQmlComponentPrivate::completeCreate                                                             qqmlcomponent.cpp               1253 0x7ffcb16372db 
84 QQmlComponent::completeCreate                                                                    qqmlcomponent.cpp               1231 0x7ffcb1633e53 
85 QQmlComponentPrivate::createWithProperties                                                       qqmlcomponent.cpp               959  0x7ffcb16399f5 
86 QQmlComponent::create                                                                            qqmlcomponent.cpp               908  0x7ffcb1633c35 
87 QQmlApplicationEnginePrivate::finishLoad                                                         qqmlapplicationengine.cpp       135  0x7ffcb15effcb 
88 QQmlApplicationEnginePrivate::ensureLoadingFinishes                                              qqmlapplicationengine.cpp       163  0x7ffcb15f026e 
89 QQmlApplicationEnginePrivate::startLoad                                                          qqmlapplicationengine.cpp       110  0x7ffcb15efa3b 
90 QQmlApplicationEngine::load                                                                      qqmlapplicationengine.cpp       324  0x7ffcb15ee9ae 
91 main                                                                                             main.cpp                        16   0x7ff6eea1399b 
92 qtEntryPoint                                                                                     qtentrypoint_win.cpp            50   0x7ff6eea22107 
93 WinMain                                                                                          qtentrypoint_win.cpp            60   0x7ff6eea21f0e 
94 invoke_main                                                                                      exe_common.inl                  107  0x7ff6eea1ebb2 
95 __scrt_common_main_seh                                                                           exe_common.inl                  288  0x7ff6eea1ea9e 
96 __scrt_common_main                                                                               exe_common.inl                  331  0x7ff6eea1e95e 
97 WinMainCRTStartup                                                                                exe_winmain.cpp                 17   0x7ff6eea1ec4e 
98 BaseThreadInitThunk                                                                              KERNEL32                             0x7ffd4a7a7614 
99 RtlUserThreadStart                                                                               ntdll                                0x7ffd4bc026b1 
- relates to
 - 
                    
QTBUG-102716 [Windows] Access violation in QWindowsFormatInfo
-         
 - Closed
 
 -         
 
| For Gerrit Dashboard: QTBUG-116075 | ||||||
|---|---|---|---|---|---|---|
| # | Subject | Branch | Project | Status | CR | V | 
| 497612,10 | QWindowsFormatInfo: optimize creation time a bit | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 | 
| 499979,2 | Don't initialize format info lazily with Windows backend | dev | qt/qtmultimedia | Status: ABANDONED | +1 | 0 | 
| 501819,5 | QWindowsFormatInfo: optimize creation time a bit | 6.5 | qt/qtmultimedia | Status: MERGED | +2 | 0 | 
| 501820,2 | QWindowsFormatInfo: optimize creation time a bit | 6.6 | qt/qtmultimedia | Status: MERGED | +2 | 0 | 
| 502125,4 | Move formatInfo initialization delay to the QMediaRecorder construction | dev | qt/qtmultimedia | Status: MERGED | +2 | 0 | 
| 502707,2 | Move formatInfo initialization delay to the QMediaRecorder construction | 6.5 | qt/qtmultimedia | Status: MERGED | +2 | 0 | 
| 502708,2 | Move formatInfo initialization delay to the QMediaRecorder construction | 6.6 | qt/qtmultimedia | Status: MERGED | +2 | 0 |