Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/mpc-hc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCasimir666 <casimir666@users.sourceforge.net>2006-06-25 01:37:43 +0400
committerCasimir666 <casimir666@users.sourceforge.net>2006-06-25 01:37:43 +0400
commit0868305e78da2b0742c2ce349efa041d5622ae21 (patch)
tree663fd93132c7927910ba7c13188d6332b2e3e5b2 /src/apps/mplayerc/FGManager.h
parent43c8656956a0460fc4551e3ea7a39b9f3094a3e3 (diff)
git-svn-id: https://mpc-hc.svn.sourceforge.net/svnroot/mpc-hc/trunk@14 10f7b99b-c216-0410-bff0-8a66a9350fd8
Diffstat (limited to 'src/apps/mplayerc/FGManager.h')
-rw-r--r--src/apps/mplayerc/FGManager.h164
1 files changed, 164 insertions, 0 deletions
diff --git a/src/apps/mplayerc/FGManager.h b/src/apps/mplayerc/FGManager.h
new file mode 100644
index 000000000..a660b5478
--- /dev/null
+++ b/src/apps/mplayerc/FGManager.h
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2003-2006 Gabest
+ * http://www.gabest.org
+ *
+ * This Program 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, or (at your option)
+ * any later version.
+ *
+ * This Program 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 GNU Make; see the file COPYING. If not, write to
+ * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+#pragma once
+
+#include "FGFilter.h"
+#include "IGraphBuilder2.h"
+
+class CFGManager
+ : public CUnknown
+ , public IGraphBuilder2
+ , public IGraphBuilderDeadEnd
+ , public CCritSec
+{
+public:
+ struct path_t {CLSID clsid; CString filter, pin;};
+
+ class CStreamPath : public CAtlList<path_t>
+ {
+ public:
+ void Append(IBaseFilter* pBF, IPin* pPin);
+ bool Compare(const CStreamPath& path);
+ };
+
+ class CStreamDeadEnd : public CStreamPath
+ {
+ public:
+ CAtlList<CMediaType> mts;
+ };
+
+private:
+ CComPtr<IUnknown> m_pUnkInner;
+ DWORD m_dwRegister;
+
+ CStreamPath m_streampath;
+ CAutoPtrArray<CStreamDeadEnd> m_deadends;
+
+protected:
+ CComPtr<IFilterMapper2> m_pFM;
+ CInterfaceList<IUnknown, &IID_IUnknown> m_pUnks;
+ CAtlList<CFGFilter*> m_source, m_transform, m_override;
+
+ static bool CheckBytes(HANDLE hFile, CString chkbytes);
+
+ HRESULT AddSourceFilter(CFGFilter* pFGF, LPCWSTR lpcwstrFileName, LPCWSTR lpcwstrFilterName, IBaseFilter** ppBF);
+
+ // IFilterGraph
+
+ STDMETHODIMP AddFilter(IBaseFilter* pFilter, LPCWSTR pName);
+ STDMETHODIMP RemoveFilter(IBaseFilter* pFilter);
+ STDMETHODIMP EnumFilters(IEnumFilters** ppEnum);
+ STDMETHODIMP FindFilterByName(LPCWSTR pName, IBaseFilter** ppFilter);
+ STDMETHODIMP ConnectDirect(IPin* pPinOut, IPin* pPinIn, const AM_MEDIA_TYPE* pmt);
+ STDMETHODIMP Reconnect(IPin* ppin);
+ STDMETHODIMP Disconnect(IPin* ppin);
+ STDMETHODIMP SetDefaultSyncSource();
+
+ // IGraphBuilder
+
+ STDMETHODIMP Connect(IPin* pPinOut, IPin* pPinIn);
+ STDMETHODIMP Render(IPin* pPinOut);
+ STDMETHODIMP RenderFile(LPCWSTR lpcwstrFile, LPCWSTR lpcwstrPlayList);
+ STDMETHODIMP AddSourceFilter(LPCWSTR lpcwstrFileName, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter);
+ STDMETHODIMP SetLogFile(DWORD_PTR hFile);
+ STDMETHODIMP Abort();
+ STDMETHODIMP ShouldOperationContinue();
+
+ // IFilterGraph2
+
+ STDMETHODIMP AddSourceFilterForMoniker(IMoniker* pMoniker, IBindCtx* pCtx, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter);
+ STDMETHODIMP ReconnectEx(IPin* ppin, const AM_MEDIA_TYPE* pmt);
+ STDMETHODIMP RenderEx(IPin* pPinOut, DWORD dwFlags, DWORD* pvContext);
+
+ // IGraphBuilder2
+
+ STDMETHODIMP IsPinDirection(IPin* pPin, PIN_DIRECTION dir);
+ STDMETHODIMP IsPinConnected(IPin* pPin);
+ STDMETHODIMP ConnectFilter(IBaseFilter* pBF, IPin* pPinIn);
+ STDMETHODIMP ConnectFilter(IPin* pPinOut, IBaseFilter* pBF);
+ STDMETHODIMP ConnectFilterDirect(IPin* pPinOut, IBaseFilter* pBF, const AM_MEDIA_TYPE* pmt);
+ STDMETHODIMP NukeDownstream(IUnknown* pUnk);
+ STDMETHODIMP FindInterface(REFIID iid, void** ppv, BOOL bRemove);
+ STDMETHODIMP AddToROT();
+ STDMETHODIMP RemoveFromROT();
+
+ // IGraphBuilderDeadEnd
+
+ STDMETHODIMP_(size_t) GetCount();
+ STDMETHODIMP GetDeadEnd(int iIndex, CAtlList<CStringW>& path, CAtlList<CMediaType>& mts);
+
+public:
+ CFGManager(LPCTSTR pName, LPUNKNOWN pUnk);
+ virtual ~CFGManager();
+
+ DECLARE_IUNKNOWN;
+ STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void** ppv);
+};
+
+class CFGManagerCustom : public CFGManager
+{
+public:
+ // IFilterGraph
+
+ STDMETHODIMP AddFilter(IBaseFilter* pFilter, LPCWSTR pName);
+
+public:
+ CFGManagerCustom(LPCTSTR pName, LPUNKNOWN pUnk, UINT src, UINT tra);
+};
+
+class CFGManagerPlayer : public CFGManagerCustom
+{
+protected:
+ HWND m_hWnd;
+ UINT64 m_vrmerit, m_armerit;
+
+ // IFilterGraph
+
+ STDMETHODIMP ConnectDirect(IPin* pPinOut, IPin* pPinIn, const AM_MEDIA_TYPE* pmt);
+
+public:
+ CFGManagerPlayer(LPCTSTR pName, LPUNKNOWN pUnk, UINT src, UINT tra, HWND hWnd);
+};
+
+class CFGManagerDVD : public CFGManagerPlayer
+{
+protected:
+ // IGraphBuilder
+
+ STDMETHODIMP AddSourceFilter(LPCWSTR lpcwstrFileName, LPCWSTR lpcwstrFilterName, IBaseFilter** ppFilter);
+
+public:
+ CFGManagerDVD(LPCTSTR pName, LPUNKNOWN pUnk, UINT src, UINT tra, HWND hWnd);
+};
+
+class CFGManagerCapture : public CFGManagerPlayer
+{
+public:
+ CFGManagerCapture(LPCTSTR pName, LPUNKNOWN pUnk, UINT src, UINT tra, HWND hWnd);
+};
+
+class CFGManagerMuxer : public CFGManagerCustom
+{
+public:
+ CFGManagerMuxer(LPCTSTR pName, LPUNKNOWN pUnk);
+};
+