avrt_wrapper_win.h revision 5821806d5e7f356e8fa4b058a389a808ea183019
1// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4//
5// The avrt namespace encapsulates the details needed to support MMCSS.
6//
7// The Multimedia Class Scheduler service (MMCSS) enables multimedia
8// applications to ensure that their time-sensitive processing receives
9// prioritized access to CPU resources. This service enables multimedia
10// applications to utilize as much of the CPU as possible without denying
11// CPU resources to lower-priority applications.
12// MMCSS requires Windows Vista or higher and that the Avrt DLL is loaded.
13//
14// TODO(henrika): refactor and merge into existing thread implementation
15// for Windows to ensure that MMCSS can be enabled for all threads.
16//
17#ifndef MEDIA_AUDIO_WIN_AVRT_WRAPPER_WIN_H_
18#define MEDIA_AUDIO_WIN_AVRT_WRAPPER_WIN_H_
19
20#include <windows.h>
21#include <avrt.h>
22
23#include "base/basictypes.h"
24
25namespace avrt {
26
27// Loads the Avrt.dll which is available on Windows Vista and later.
28bool Initialize();
29
30// Function wrappers for the underlying MMCSS functions.
31bool AvRevertMmThreadCharacteristics(HANDLE avrt_handle);
32HANDLE AvSetMmThreadCharacteristics(const wchar_t* task_name,
33                                    DWORD* task_index);
34bool AvSetMmThreadPriority(HANDLE avrt_handle, AVRT_PRIORITY priority);
35
36}  // namespace avrt
37
38#endif  // MEDIA_AUDIO_WIN_AVRT_WRAPPER_WIN_H_
39
40