Chromium Code Reviews| Index: content/common/gpu/media/dxva_video_decode_accelerator.cc |
| diff --git a/content/common/gpu/media/dxva_video_decode_accelerator.cc b/content/common/gpu/media/dxva_video_decode_accelerator.cc |
| index 1c9f6f313ac12abeb26f85eb016c82c64e849820..e872beeaf291a85ccebe9b7a623d4da6974b1cb2 100644 |
| --- a/content/common/gpu/media/dxva_video_decode_accelerator.cc |
| +++ b/content/common/gpu/media/dxva_video_decode_accelerator.cc |
| @@ -18,6 +18,7 @@ |
| #include "base/callback.h" |
| #include "base/command_line.h" |
| #include "base/debug/trace_event.h" |
| +#include "base/file_version_info.h" |
| #include "base/logging.h" |
| #include "base/memory/scoped_ptr.h" |
| #include "base/memory/shared_memory.h" |
| @@ -638,6 +639,19 @@ bool DXVAVideoDecodeAccelerator::InitDecoder(media::VideoCodecProfile profile) { |
| "msmpeg2vdec.dll required for decoding is not loaded", |
| false); |
| + // Check version of DLL, version 6.7.7140 is blacklisted due to high crash |
| + // rates in browsers loading that DLL. If that is the version installed we |
| + // fall back to software decoding. |
|
scherkus (not reviewing)
2014/08/26 20:31:44
nit: link to crbug
luken
2014/08/26 22:59:25
Done.
|
| + FileVersionInfo* version_info = |
| + FileVersionInfo::CreateFileVersionInfoForModule(decoder_dll); |
| + RETURN_ON_FAILURE(version_info, |
| + "unable to get version of msmpeg2vdec.dll", |
| + false); |
| + base::string16 file_version = version_info->file_version(); |
| + RETURN_ON_FAILURE(file_version.find(L"6.1.7140") == base::string16::npos, |
| + "blacklisted version of msmpeg2vdec.dll 6.7.7140", |
| + false); |
| + |
| typedef HRESULT(WINAPI * GetClassObject)( |
| const CLSID & clsid, const IID & iid, void * *object); |