コード例 #1
0
ファイル: RenderGraph.cpp プロジェクト: pics860/callcenter
HRESULT CGraphRender::RecordFile(LPCWSTR lpszFile, WORD nPayloadMask)
{
	HRESULT hr = S_OK;
	this->Stop();
	
	// File
	
	CComPtr<IFileSinkFilter> pFileSink;
	hr = m_pCapGraphBuilder->SetOutputFileName( &MEDIASUBTYPE_Avi, lpszFile, &m_pMultiplexer, &pFileSink );
	
	pFileSink->QueryInterface( IID_IBaseFilter, reinterpret_cast<void **>( &m_pFileSink ) );
	
	// Audio Capture
	
	CComPtr<IBaseFilter> pCapture;
	if ( SUCCEEDED(hr) && (RecordPayload(nPayloadMask) & PayloadMask_Audio) &&
		FAILED(hr = m_pGraphBuilder->FindFilterByName( L"Audio Receiver", &pCapture )) )
	{
		hr = InstallRender( new CRtpReceiverFilter(Payload_Alaw, (WAVEFORMATEX*)0, this), L"Audio Receiver", &pCapture );
	}
	
	CComPtr<IPin> pPinOut;
	if ( SUCCEEDED(hr) && pCapture && SUCCEEDED(
		hr = pCapture->FindPin( L"Capture", &pPinOut )) )
	{
		hr = m_pGraphBuilder->Render( pPinOut );
	}
	
	// Video Capture
	
	pCapture.Release();
	if ( SUCCEEDED(hr) && (RecordPayload(nPayloadMask) & PayloadMask_Video) &&
		FAILED(hr = m_pGraphBuilder->FindFilterByName(L"Video Receiver", &pCapture)) )
	{
		hr = InstallRender( new CRtpReceiverFilter(Payload_H263, (VIDEOINFOHEADER*)0, this), L"Video Receiver", &pCapture );
	}
	
	pPinOut.Release();
	if ( SUCCEEDED(hr) && pCapture && SUCCEEDED(
		hr = pCapture->FindPin( L"Capture", &pPinOut )) )
	{
		hr = m_pGraphBuilder->Render( pPinOut );
	}
	
	// Config Stream
	
	CComPtr<IConfigAviMux> pConfigAviMux;
	if ( SUCCEEDED(hr) ) hr =
	m_pMultiplexer->QueryInterface( IID_IConfigAviMux, (void **)&pConfigAviMux);
	
	if ( SUCCEEDED(hr) )
	{
		hr=pConfigAviMux->SetOutputCompatibilityIndex( TRUE );
		hr=pConfigAviMux->SetMasterStream( 0 );
	}
	
	DbgLog((LOG_TRACE, 0, TEXT("Record[%s]: %ls"), GetNamed(), lpszFile));
	return Run();
}
コード例 #2
0
ファイル: wndmonitor.cpp プロジェクト: pics860/callcenter
void CMonitorWnd::Apply()
{
	CRegistry pRegistry;
	
	DWORD nPayloadMask = pRegistry.GetInt( "Monitor", "RecMask", RecordPayload(PayloadMask_Audio) );
	pRegistry.SetInt( "Monitor", "RecMask", nPayloadMask );
}
コード例 #3
0
ファイル: wndmonitor.cpp プロジェクト: pics860/callcenter
void CMonitorWnd::OnMediaRecMask() 
{
	CRegistry pRegistry;
	DWORD nPayloadMask = pRegistry.GetInt( "Monitor", "RecMask" );
	
	pRegistry.SetInt( "Monitor", "RecMask", RecordPayload(nPayloadMask) ^ PayloadMask_Video );
}
コード例 #4
0
ファイル: wndmonitor.cpp プロジェクト: pics860/callcenter
void CMonitorWnd::OnUpdateMediaRecMask(CCmdUI* pCmdUI)
{
	CRegistry pRegistry;
	DWORD nPayloadMask = pRegistry.GetInt( "Monitor", "RecMask" );
	
	pCmdUI->SetCheck( (RecordPayload(nPayloadMask) & PayloadMask_Video) == PayloadMask_Video );
}
コード例 #5
0
ファイル: URI.cpp プロジェクト: MarceloSalazar/mbed-os
size_t URI::get_record_size() const
{
    if (!_uri) {
        return 0;
    }

    return MessageBuilder::compute_record_size(
               Record(
                   RecordType(
                       RecordType::well_known_type,
                       uri_record_type_value
                   ),
                   RecordPayload(_uri, _uri_size),
                   RecordID(),
                   /* chunk */ false,
                   /* last record */ false
               )
           );
}
コード例 #6
0
ファイル: Text.cpp プロジェクト: MarceloSalazar/mbed-os
size_t Text::get_record_size() const
{
    if (!_text_record) {
        return 0;
    }

    return MessageBuilder::compute_record_size(
               Record(
                   RecordType(
                       RecordType::well_known_type,
                       text_record_type_value
                   ),
                   RecordPayload(_text_record, _text_record_size),
                   RecordID(),
                   /* chunk */ false,
                   /* last record */ false
               )
           );
}