DescriptionFix a crasher in the GPU process caused by the DXVA code attempting to create an instance of the Video processor MFT
The DXVA decoder object on Windows 8+ uses DX11 if available and in this mode it uses the VideoProcessor MFT for colorspace
conversion. This object exposes the IMFTransform interface and can be created like a traditional COM object via the
CoCreateInstance API. However this API expects CoInitialize to be called which is not the case on the main GPU thread and
fails with an error indicating that the COM apartment is not initialized. It is not clear as to why it is not failing in all
cases.
Proposed fix is to use DllGetClassObject and IClassFactory::CreateInstance to create the object directly and avoid using
CoCreateInstance. For this purpose added a helper function CreateCOMObjectFromDll in the dxva code.
BUG=493894
R=dalecurtis
Committed: https://crrev.com/f74c38420401d72fc8fdae2b8d03aece1279f7e7
Cr-Commit-Position: refs/heads/master@{#338975}
Patch Set 1 #
Total comments: 8
Patch Set 2 : Address review comments #
Total comments: 2
Patch Set 3 : Fix indent #
Depends on Patchset: Messages
Total messages: 12 (1 generated)
|