15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Contains code that should be used for initializing, or querying the state 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// of the media library as a whole. 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef MEDIA_BASE_MEDIA_H_ 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define MEDIA_BASE_MEDIA_H_ 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "media/base/media_export.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class FilePath; 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace media { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Attempts to initialize the media library (loading DLLs, DSOs, etc.). 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// If |module_dir| is the empty string, then the system default library paths 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// are searched for the dynamic libraries. If a |module_dir| is provided, then 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// only the specified |module_dir| will be searched for the dynamic libraries. 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// If multiple initializations are attempted with different |module_dir|s 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// specified then the first one to succeed remains effective for the lifetime 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// of the process. 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Returns true if everything was successfully initialized, false otherwise. 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)MEDIA_EXPORT bool InitializeMediaLibrary(const base::FilePath& module_dir); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Helper function for unit tests to avoid boiler plate code everywhere. This 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// function will crash if it fails to load the media library. This ensures tests 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// fail if the media library is not available. 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MEDIA_EXPORT void InitializeMediaLibraryForTesting(); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use this if you need to check whether the media library is initialized 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// for the this process, without actually trying to initialize it. 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)MEDIA_EXPORT bool IsMediaLibraryInitialized(); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 41b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// Use this if you need to initialize CPU specific features WITHOUT loading 42b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// DLLs, DSOs, etc. Only necessary if InitializeMediaLibrary() is not called; 43b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// does nothing if the media library has already been initialized. 44b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)MEDIA_EXPORT void InitializeCPUSpecificMediaFeatures(); 45b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace media 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // MEDIA_BASE_MEDIA_H_ 49