Index: media/video/capture/win/filter_base_win.h |
=================================================================== |
--- media/video/capture/win/filter_base_win.h (revision 0) |
+++ media/video/capture/win/filter_base_win.h (revision 0) |
@@ -0,0 +1,74 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Implement a simple base class for DirectShow filters. It may only be used in |
+// a single threaded apartment. |
+ |
+#ifndef MEDIA_VIDEO_CAPTURE_WIN_FILTER_BASE_WIN_H_ |
+#define MEDIA_VIDEO_CAPTURE_WIN_FILTER_BASE_WIN_H_ |
+#pragma once |
+ |
+// Avoid including strsafe.h via dshow as it will cause build warnings. |
+#define NO_DSHOW_STRSAFE |
+#include <dshow.h> |
+ |
+#include "base/memory/ref_counted.h" |
+#include "base/win/scoped_comptr.h" |
+ |
+namespace media { |
+ |
+class FilterBase |
+ : public IBaseFilter, |
+ public base::RefCounted<FilterBase> { |
+ public: |
+ FilterBase(); |
+ virtual ~FilterBase(); |
+ |
+ // Number of pins connected to this filter. |
+ virtual size_t NoOfPins() = 0; |
+ // Returns the IPin interface pin no index. |
+ virtual IPin* GetPin(int index) = 0; |
+ |
+ // Inherited from IUnknown. |
+ STDMETHOD(QueryInterface)(REFIID id, void** object_ptr); |
+ STDMETHOD_(ULONG, AddRef)(); |
+ STDMETHOD_(ULONG, Release)(); |
+ |
+ // Inherited from IBaseFilter. |
+ STDMETHOD(EnumPins)(IEnumPins** enum_pins); |
+ |
+ STDMETHOD(FindPin)(LPCWSTR id, IPin** pin); |
+ |
+ STDMETHOD(QueryFilterInfo)(FILTER_INFO* info); |
+ |
+ STDMETHOD(JoinFilterGraph)(IFilterGraph* graph, LPCWSTR name); |
+ |
+ STDMETHOD(QueryVendorInfo)(LPWSTR* vendor_info); |
+ |
+ // Inherited from IMediaFilter. |
+ STDMETHOD(Stop)(); |
+ |
+ STDMETHOD(Pause)(); |
+ |
+ STDMETHOD(Run)(REFERENCE_TIME start); |
+ |
+ STDMETHOD(GetState)(DWORD msec_timeout, FILTER_STATE* state); |
+ |
+ STDMETHOD(SetSyncSource)(IReferenceClock* clock); |
+ |
+ STDMETHOD(GetSyncSource)(IReferenceClock** clock); |
+ |
+ // Inherited from IPersistent. |
+ STDMETHOD(GetClassID)(CLSID* class_id) = 0; |
+ |
+ private: |
+ FILTER_STATE state_; |
+ base::win::ScopedComPtr<IFilterGraph> owning_graph_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(FilterBase); |
+}; |
+ |
+} // namespace media |
+ |
+#endif // MEDIA_VIDEO_CAPTURE_WIN_FILTER_BASE_WIN_H_ |