18b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// Copyright (c) 2012 The Chromium Authors. All rights reserved. 28b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// Use of this source code is governed by a BSD-style license that can be 38b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// found in the LICENSE file. 48b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 58b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "media/base/media.h" 68b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 78b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <windows.h> 88b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#if defined(_WIN32_WINNT_WIN8) 98b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project// The Windows 8 SDK defines FACILITY_VISUALCPP in winerror.h. 108b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#undef FACILITY_VISUALCPP 118b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#endif 128b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include <delayimp.h> 135d8f37ad78fc66901af50c762029a501561f3b23David 'Digit' Turner 148b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#include "base/files/file_path.h" 158b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 168b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project#pragma comment(lib, "delayimp.lib") 178b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 188b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectnamespace media { 198b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectnamespace internal { 208b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 218b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Projectbool InitializeMediaLibraryInternal(const base::FilePath& module_dir) { 228b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project // LoadLibraryEx(..., LOAD_WITH_ALTERED_SEARCH_PATH) cannot handle 238b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project // relative path. 248b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project if (!module_dir.IsAbsolute()) 258b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return false; 268b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 278b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project // Use alternate DLL search path so we don't load dependencies from the 288b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project // system path. Refer to http://crbug.com/35857 298b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project static const char kFFmpegDLL[] = "ffmpegsumo.dll"; 308b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project HMODULE lib = ::LoadLibraryEx( 318b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project module_dir.AppendASCII(kFFmpegDLL).value().c_str(), NULL, 328b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project LOAD_WITH_ALTERED_SEARCH_PATH); 338b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 348b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project // Check that we loaded the library successfully. 358b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project return lib != NULL; 368b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} 378b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project 3820894ae3fa98f82da925fbeb72e616eef509758aDavid 'Digit' Turner} // namespace internal 398b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project} // namespace media 408b23a6c7e1aee255004dd19098d4c2462b61b849The Android Open Source Project