tvpinvideo.cpp

来自「mysee网络直播源代码Mysee Lite是Mysee独立研发的网络视频流媒体」· C++ 代码 · 共 85 行

CPP
85
字号
#include "stdafx.h"

// Video Pin
CTVStreamSourceVideoPin::CTVStreamSourceVideoPin(HRESULT *phr, CSource *pFilter)
	: CTVStreamSourcePin(NAME("Chaos Filter Video Pin"), phr, pFilter, false)
{

	
}
//
CTVStreamSourceVideoPin::~CTVStreamSourceVideoPin() 
{
}
//
HRESULT CTVStreamSourceVideoPin::ChangeStop()
{
	return NOERROR;
}
//
HRESULT CTVStreamSourceVideoPin::ChangeRate()
{
	return NOERROR;
}
//
HRESULT CTVStreamSourceVideoPin::SeekTime(REFERENCE_TIME rtPos)
{
	SetSeekData(rtPos);
	//
	return S_FALSE;
}
//
STDMETHODIMP CTVStreamSourceVideoPin::NonDelegatingQueryInterface(REFIID riid, void ** ppv) 
{
	CheckPointer(ppv, E_POINTER);
	return CTVStreamSourcePin::NonDelegatingQueryInterface(riid, ppv);
}
//
HRESULT CTVStreamSourceVideoPin::ChangeStart()
{
	if (m_pFilter && m_pFilter->m_pComm)
		return NOERROR;
	//
	if (ThreadExists()) 
    {
        DeliverBeginFlush();
		//
	    Stop();
        // complete the flush
        DeliverEndFlush();	
	    // restart
		Run();
       
    }
	//
	return NOERROR;
}
//
HRESULT CTVStreamSourceVideoPin::OnThreadStartPlay(void) 
{
	m_pFilter->SetBaseRef(_I64_MAX);
	//
	SetSeekData(m_rtStart + m_llBaseTime);
	//
    return CTVStreamSourcePin::OnThreadStartPlay();
}

HRESULT CTVStreamSourceVideoPin::OnThreadDestroy(void) 
{
	return  CTVStreamSourcePin::OnThreadDestroy();
}
//
HRESULT CTVStreamSourceVideoPin::Active(void)
{
	return CSourceStream::Active();
}

void	CTVStreamSourceVideoPin::RawSync(LONGLONG start)
{
	LONGLONG m_audiotime = m_pFilter->GetRawAudioRef();
	//如果videopin太快,则拖延一下video的行为
	if(m_audiotime != _I64_MAX && (start > m_audiotime) && (start - m_audiotime > 50000000))
	{
		Sleep(1000);
	}
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?