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

P2P编程

开发平台:

Visual C++

  1. #include "stdafx.h"
  2. //
  3. //////////////////////////////////////////////////////////////
  4. // audio
  5. CTVStreamSourceAudioPin::CTVStreamSourceAudioPin(HRESULT *phr, CSource *pFilter)
  6. : CTVStreamSourcePin(NAME("Chaos Filter Audio Pin"), phr, pFilter, true)
  7. {
  8. }
  9. HRESULT CTVStreamSourceAudioPin::OnThreadStartPlay(void)    
  10. {
  11. m_pFilter->SetBaseRef(_I64_MAX);
  12. m_pFilter->SetRawAudioRef(_I64_MAX);
  13. //
  14. return CTVStreamSourcePin::OnThreadStartPlay();
  15. }
  16. HRESULT CTVStreamSourceAudioPin::OnThreadDestroy(void)
  17. {
  18. m_pFilter->SetRawAudioRef(_I64_MAX);
  19. return CTVStreamSourcePin::OnThreadDestroy();
  20. }
  21. //
  22. STDMETHODIMP CTVStreamSourceAudioPin::NonDelegatingQueryInterface(REFIID riid, void ** ppv)
  23. {
  24. return CTVStreamSourcePin::NonDelegatingQueryInterface(riid,ppv);
  25. }
  26. //IMediaSeeking
  27. HRESULT CTVStreamSourceAudioPin::ChangeStart()
  28. {
  29. //SetCurrTime(0);
  30. //SetBaseRef(_I64_MAX);
  31. if (m_pFilter && m_pFilter->m_pComm)
  32. return NOERROR;
  33. //
  34. if (ThreadExists()) 
  35. {
  36. // next time round the loop the worker thread will
  37. // pick up the position change.
  38. // We need to flush all the existing data - we must do that here
  39. // as our thread will probably be blocked in GetBuffer otherwise
  40. DeliverBeginFlush();
  41. // make sure we have stopped pushing
  42. Stop();
  43. // complete the flush
  44. DeliverEndFlush();
  45. // restart
  46. Run();
  47. }
  48. return NOERROR;
  49. }
  50. //
  51. HRESULT CTVStreamSourceAudioPin::ChangeStop()
  52. {
  53. return NOERROR;
  54. }
  55. //
  56. HRESULT CTVStreamSourceAudioPin::ChangeRate()
  57. {
  58. return NOERROR;
  59. }
  60. //
  61. HRESULT CTVStreamSourceAudioPin::Active(void)
  62. {
  63. //SetSeekData(m_rtStart + m_llBaseTime);
  64. return CSourceStream::Active();
  65. }
  66. void CTVStreamSourceAudioPin::RawSync(LONGLONG start)
  67. {
  68. m_pFilter->SetRawAudioRef(start);
  69. }