12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /* Copyright (C) 2013 Mamadou DIOP
- * Copyright (C) 2013 Doubango Telecom <http://www.doubango.org>
- *
- * This file is part of Open Source Doubango Framework.
- *
- * DOUBANGO 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 3 of the License, or
- * (at your option) any later version.
- *
- * DOUBANGO 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 DOUBANGO.
- */
- #ifndef PLUGIN_WIN_MF_CODEC_TOPOLOGY_H
- #define PLUGIN_WIN_MF_CODEC_TOPOLOGY_H
- #include "mf_codec.h"
- #include "mf_custom_src.h"
- #include "tsk_thread.h"
- class MFCodecTopologySampleGrabberCB;
- class MFCodecTopology : IUnknown
- {
- friend class MFCodecTopologySampleGrabberCB;
- public:
- MFCodecTopology(MFCodec* pCodec, HRESULT &hr);
- virtual ~MFCodecTopology();
- virtual HRESULT Initialize();
- virtual HRESULT DeInitialize();
- virtual HRESULT ProcessInput(IMFSample* pSample);
- virtual HRESULT ProcessOutput(IMFSample **ppSample);
- // IUnknown
- STDMETHODIMP QueryInterface(REFIID iid, void** ppv);
- STDMETHODIMP_(ULONG) AddRef();
- STDMETHODIMP_(ULONG) Release();
- inline BOOL isStarted() {
- return m_bStarted;
- }
- inline BOOL isInitialized() {
- return m_bInitialized;
- }
- private:
- static void* TSK_STDCALL RunSessionThread(void *pArg);
- protected:
- HRESULT Start();
- HRESULT Stop();
- private:
- long m_nRefCount;
- protected:
- BOOL m_bInitialized;
- BOOL m_bStarted;
- MFCodec* m_pCodec;
- CMFSource *m_pSource;
- IMFMediaSession *m_pSession;
- IMFTopology *m_pTopologyFull;
- IMFTopology *m_pTopologyPartial;
- IMFMediaType *m_pOutputType;
- IMFMediaType *m_pInputType;
- MFCodecTopologySampleGrabberCB *m_pGrabberCallback;
- IMFActivate *m_pGrabberActivate;
- tsk_thread_handle_t* m_pTread;
- SampleQueue m_SampleQueue;
- };
- class MFCodecVideoTopology : public MFCodecTopology
- {
- public:
- MFCodecVideoTopology(MFCodec* pCodec, HRESULT &hr);
- virtual ~MFCodecVideoTopology();
- private:
- UINT32 m_nWidth, m_nHeight;
- };
- #endif /* PLUGIN_WIN_MF_CODEC_TOPOLOGY_H */
|