TVStreamSink.h
上传用户:liguizhu
上传日期:2015-11-01
资源大小:2422k
文件大小:3k
源码类别:

P2P编程

开发平台:

Visual C++

  1. /*
  2. *  Openmysee
  3. *
  4. *  This program is free software; you can redistribute it and/or modify
  5. *  it under the terms of the GNU General Public License as published by
  6. *  the Free Software Foundation; either version 2 of the License, or
  7. *  (at your option) any later version.
  8. *
  9. *  This program is distributed in the hope that it will be useful,
  10. *  but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  12. *  GNU General Public License for more details.
  13. *
  14. *  You should have received a copy of the GNU General Public License
  15. *  along with this program; if not, write to the Free Software
  16. *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  17. *
  18. */
  19. #ifndef __TV_STREAM_SINK_H__
  20. #define __TV_STREAM_SINK_H__
  21. #include "tvsourceconfig.h"
  22. #include "CaptureServer.h"
  23. class CTVStreamSinkInputPin;
  24. class CTVStreamSink : public CBaseFilter,
  25.                   public IFileSinkFilter,
  26.   public ITVSourceConfig
  27. {
  28. friend class CTVStreamSinkInputPin;
  29. private:
  30. CTVStreamSinkInputPin *m_pVideoPin;  // A simple rendered input pin
  31. CTVStreamSinkInputPin *m_pAudioPin; 
  32.     static CCritSec m_Lock; // Main renderer critical section
  33. LPWSTR   m_pFileName;
  34. CaptureServer cs;
  35. int m_iIsStop; //判断是否全部结束
  36. int m_iState; //0为运行,1为停止(全部文件转化完成为停止)。-1为发生意外错误停止(用户点击Stop为意外停止)
  37. private:
  38.     CTVStreamSink(LPUNKNOWN pUnk, CCritSec *pLock, HRESULT *pHr);
  39.     virtual ~CTVStreamSink();
  40. public:
  41. DECLARE_IUNKNOWN
  42. // initializator for class factory
  43.     static CUnknown * WINAPI CreateInstance(LPUNKNOWN punk, HRESULT *pHr);
  44. private:
  45.     // Overriden to say what interfaces we support where
  46.     STDMETHOD(NonDelegatingQueryInterface)(REFIID riid, void ** ppv);
  47. public:
  48. // overrides from CBaseFilter
  49. int GetPinCount();
  50.     CBasePin *GetPin(int n);
  51. STDMETHOD(Run)(REFERENCE_TIME tStart);
  52.     STDMETHOD(Pause)();
  53.     STDMETHOD(Stop)();
  54. // Implements the IFileSinkFilter interface
  55.     STDMETHOD(SetFileName)(LPCOLESTR pszFileName,const AM_MEDIA_TYPE *pmt);
  56.     STDMETHOD(GetCurFile)(LPOLESTR * ppszFileName,AM_MEDIA_TYPE *pmt);
  57. // interface ITVSourceConfig
  58. STDMETHODIMP_(float) GetCompressedSpeed();
  59. STDMETHODIMP_(LONGLONG) GetTotalBytes();
  60. STDMETHODIMP_(void) SetAudioOrVideoOnly(BOOL isAudio);
  61. STDMETHODIMP_(void) SetParentWindow(HWND handle);
  62. STDMETHODIMP_(BOOL) Login(int userID, char* pass);
  63. STDMETHODIMP_(int) CheckPassword();
  64. STDMETHODIMP_(void) SetProgramStorePath(LPCTSTR path);
  65. STDMETHODIMP_(void) SetChannelName(LPCTSTR astrChannelName);
  66. STDMETHODIMP_(void) GetZZLState(int* apiState);
  67.     STDMETHODIMP_(bool) EndOfStream();
  68. public:
  69. HRESULT WriteFormatTypeHeader(CMediaType *pmt, BOOL isAudio);
  70. private:
  71. //创建调试信息(日志)
  72. bool CreateDebugInfo();
  73. };
  74. #endif// __TV_STREAM_SINK_H__