1// Copyright (c) 2012 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#ifndef MEDIA_AUDIO_WIN_DEVICE_ENUMERATION_WIN_H_
6#define MEDIA_AUDIO_WIN_DEVICE_ENUMERATION_WIN_H_
7
8#include <string>
9
10#include "media/audio/audio_device_name.h"
11
12namespace media {
13
14// Returns a list of audio input or output device structures (name and
15// unique device ID) using the MMDevice API which is supported on
16// Windows Vista and higher.
17// Example record in the output list:
18// - device_name: "Microphone (Realtek High Definition Audio)".
19// - unique_id: "{0.0.1.00000000}.{8db6020f-18e3-4f25-b6f5-7726c9122574}"
20// This method must be called from a COM thread using MTA.
21bool GetInputDeviceNamesWin(media::AudioDeviceNames* device_names);
22bool GetOutputDeviceNamesWin(media::AudioDeviceNames* device_names);
23
24// Returns a list of audio input or output device structures (name and
25// unique device ID) using the WaveIn API which is supported on
26// Windows XP and higher.
27// Example record in the output list:
28// - device_name: "Microphone (Realtek High Defini".
29// - unique_id: "Microphone (Realtek High Defini" (same as friendly name).
30bool GetInputDeviceNamesWinXP(media::AudioDeviceNames* device_names);
31bool GetOutputDeviceNamesWinXP(media::AudioDeviceNames* device_names);
32
33// Converts an input device ID generated by |GetInputDeviceNamesWin()| to the
34// corresponding ID by |GetInputDeviceNamesWinXP()|. Returns an empty string on
35// failure.
36// Example input and output:
37// - input ID: "{0.0.1.00000000}.{8db6020f-18e3-4f25-b6f5-7726c9122574}"
38// - output ID: "Microphone (Realtek High Defini"
39std::string ConvertToWinXPInputDeviceId(const std::string& device_id);
40
41}  // namespace media
42
43#endif  // MEDIA_AUDIO_WIN_DEVICE_ENUMERATION_WIN_H_
44
45