-
Notifications
You must be signed in to change notification settings - Fork 147
/
Filters.cs
109 lines (96 loc) · 4.75 KB
/
Filters.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#region Copyright (C) 2005-2011 Team MediaPortal
// Copyright (C) 2005-2011 Team MediaPortal
// http://www.team-mediaportal.com
//
// MediaPortal is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 2 of the License, or
// (at your option) any later version.
//
// MediaPortal is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with MediaPortal. If not, see <http://www.gnu.org/licenses/>.
#endregion
using System.Threading;
using MediaPortal.GUI.Library;
namespace DShowNET.Helper
{
/// <summary>
/// Provides collections of devices and compression codecs
/// installed on the system.
/// </summary>
/// <example>
/// Devices and compression codecs are implemented in DirectShow
/// as filters, see the <see cref="Filter"/> class for more
/// information. To list the available video devices:
/// <code><div style="background-color:whitesmoke;">
/// Filters filters = new Filters();
/// foreach ( Filter f in filters.VideoInputDevices )
/// {
/// Debug.WriteLine( f.Name );
/// }
/// </div></code>
/// <seealso cref="Filter"/>
/// </example>
public class Filters
{
// ------------------ Public Properties --------------------
/// <summary> Collection of available video capture devices. </summary>
public static FilterCollection VideoInputDevices;
/// <summary> Collection of available audio capture devices. </summary>
public static FilterCollection AudioInputDevices;
/// <summary> Collection of available video compressors. </summary>
public static FilterCollection VideoCompressors;
/// <summary> Collection of available audio compressors. </summary>
public static FilterCollection AudioCompressors;
public static FilterCollection LegacyFilters;
public static FilterCollection AudioRenderers;
public static FilterCollection WDMEncoders;
public static FilterCollection WDMcrossbars;
public static FilterCollection WDMTVTuners;
public static FilterCollection BDAReceivers;
public static FilterCollection AllFilters;
public static readonly AutoResetEvent finished = new AutoResetEvent(false);
public static void FilterCollectionReload()
{
new Thread(() =>
{
Thread.CurrentThread.IsBackground = true;
Thread.CurrentThread.Name = "FilterCollectionReload";
Thread.Sleep(500);
Log.Debug($"Filter: FilterCollectionReload init");
VideoInputDevices = new FilterCollection(FilterCategory.VideoInputDevice, true);
AudioInputDevices = new FilterCollection(FilterCategory.AudioInputDevice, true);
VideoCompressors = new FilterCollection(FilterCategory.VideoCompressorCategory, true);
AudioCompressors = new FilterCollection(FilterCategory.AudioCompressorCategory, true);
LegacyFilters = new FilterCollection(FilterCategory.LegacyAmFilterCategory, true);
AudioRenderers = new FilterCollection(FilterCategory.AudioRendererDevice, true);
WDMEncoders = new FilterCollection(FilterCategory.AM_KSEncoder, true);
WDMcrossbars = new FilterCollection(FilterCategory.AM_KSCrossBar, true);
WDMTVTuners = new FilterCollection(FilterCategory.AM_KSTvTuner, true);
BDAReceivers = new FilterCollection(FilterCategory.AM_KS_BDA_RECEIVER_COMPONENT, true);
AllFilters = new FilterCollection(FilterCategory.ActiveMovieCategory, true);
Log.Debug($"Filter: FilterCollectionReload done");
finished.Set();
}).Start();
}
static Filters()
{
VideoInputDevices = new FilterCollection(FilterCategory.VideoInputDevice, true);
AudioInputDevices = new FilterCollection(FilterCategory.AudioInputDevice, true);
VideoCompressors = new FilterCollection(FilterCategory.VideoCompressorCategory, true);
AudioCompressors = new FilterCollection(FilterCategory.AudioCompressorCategory, true);
LegacyFilters = new FilterCollection(FilterCategory.LegacyAmFilterCategory, true);
AudioRenderers = new FilterCollection(FilterCategory.AudioRendererDevice, true);
WDMEncoders = new FilterCollection(FilterCategory.AM_KSEncoder, true);
WDMcrossbars = new FilterCollection(FilterCategory.AM_KSCrossBar, true);
WDMTVTuners = new FilterCollection(FilterCategory.AM_KSTvTuner, true);
BDAReceivers = new FilterCollection(FilterCategory.AM_KS_BDA_RECEIVER_COMPONENT, true);
AllFilters = new FilterCollection(FilterCategory.ActiveMovieCategory, true);
}
}
}