Index: media/video/capture/win/video_capture_device_win.h |
diff --git a/media/video/capture/win/video_capture_device_win.h b/media/video/capture/win/video_capture_device_win.h |
index 48bc5e6ec28d61cc80268620d715f1c86b4abb06..1338f90cb6c161b7b6bc0f6b15f3aead6e86656a 100644 |
--- a/media/video/capture/win/video_capture_device_win.h |
+++ b/media/video/capture/win/video_capture_device_win.h |
@@ -54,6 +54,7 @@ class VideoCaptureDeviceWin |
}; |
static HRESULT GetDeviceFilter(const std::string& device_id, |
+ const CLSID device_class_id, |
IBaseFilter** filter); |
static bool PinMatchesCategory(IPin* pin, REFGUID category); |
static base::win::ScopedComPtr<IPin> GetPin(IBaseFilter* filter, |
@@ -86,6 +87,8 @@ class VideoCaptureDeviceWin |
bool CreateCapabilityMap(); |
void SetAntiFlickerInCaptureFilter(); |
+ HRESULT InstantiateWDMFiltersAndPins(); |
+ HRESULT AddWDMCrossbarFilterToGraphAndConnect(); |
void SetErrorState(const std::string& reason); |
Name device_name_; |
@@ -101,6 +104,11 @@ class VideoCaptureDeviceWin |
base::win::ScopedComPtr<IBaseFilter> mjpg_filter_; |
base::win::ScopedComPtr<IPin> input_mjpg_pin_; |
base::win::ScopedComPtr<IPin> output_mjpg_pin_; |
+ // Used for WDM devices as specified by |device_name_|. These devices need a |
+ // WDM Crossbar Filter upstream from the Capture filter. |
+ base::win::ScopedComPtr<IBaseFilter> crossbar_filter_; |
+ base::win::ScopedComPtr<IPin> crossbar_video_output_pin_; |
+ base::win::ScopedComPtr<IPin> analog_video_input_pin_; |
scoped_refptr<SinkFilter> sink_filter_; |