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..2518960701f353b25a4a396ce55f106481a443f3 100644 |
--- a/media/video/capture/win/video_capture_device_win.h |
+++ b/media/video/capture/win/video_capture_device_win.h |
@@ -54,11 +54,12 @@ 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, |
PIN_DIRECTION pin_dir, |
- REFGUID category); |
+ REFGUID category, |
+ REFGUID major_type); |
static VideoPixelFormat TranslateMediaSubtypeToPixelFormat( |
const GUID& sub_type); |
@@ -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_; |