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