Esempio n. 1
0
const bool	WavWriter::InputMedia(CMediaData *pMediaData, const DWORD dwInputIndex)
{
	if(dwInputIndex > GetInputNum()){
		return false;
	}
	
	return CFileWriter::InputMedia(pMediaData, dwInputIndex);
}
Esempio n. 2
0
const bool CTsPacketParser::InputMedia(CMediaData *pMediaData, const DWORD dwInputIndex)
{
	if(dwInputIndex >= GetInputNum())return false;
	if(!pMediaData)return false;

	// TSパケットを処理する
	SyncPacket(pMediaData->GetData(), pMediaData->GetSize());

	return true;
}
Esempio n. 3
0
const bool	WavSplitWriter::InputMedia(CMediaData *pMediaData, const DWORD dwInputIndex)
{
	if(dwInputIndex > GetInputNum()){
		return false;
	}

	/*
		速度は出ないけどなるべく他のモジュールに修正を入れないように作る
	*/

	std::vector<WavWriter*>& v = m_OutFiles;
	
	DWORD dwBlockAlign    = m_dwBlockAlign;
	DWORD dwChannel       = v.size();
	DWORD dwBytePerSample = dwBlockAlign / dwChannel;
	DWORD dwSample        = pMediaData->GetSize() / dwBlockAlign;
	DWORD dwChannelSize   = dwBytePerSample * dwSample;

	std::vector<BYTE> tmp(pMediaData->GetSize());

	{
		LPBYTE p1 = &tmp[0];
		LPBYTE p2 = pMediaData->GetData();

		for(DWORD i=0;i<dwSample;i++){

			for(DWORD j=0;j<dwChannel;j++){
				::CopyMemory(p1 + (dwChannelSize * j), p2 + (dwBytePerSample * j), dwBytePerSample);
			}

			p1 += dwBytePerSample;
			p2 += dwBlockAlign;

		}

	}

	{
		LPBYTE p1 = &tmp[0];

		CMediaData sample(dwChannelSize);

		for(std::vector<WavWriter*>::iterator it=v.begin();it!=v.end();++it){

			sample.SetData(p1, dwChannelSize);

			(*it)->InputMedia(&sample, dwInputIndex);

			p1 += dwChannelSize;

		}
	}

	return true;
}
Esempio n. 4
0
const bool CAacConverter::InputMedia(CMediaData *pMediaData, const DWORD dwInputIndex)
{
	if(dwInputIndex > GetInputNum())return false;

	CAdtsFrame *pAdtsFrame = static_cast<CAdtsFrame *>(pMediaData);

	// 入力メディアデータは互換性がない
	if(!pAdtsFrame)return false;

	// AACデコーダに入力
	return m_AacDecoder.Decode(pAdtsFrame);
}
Esempio n. 5
0
const bool CMediaGrabber::InputMedia(CMediaData *pMediaData, const DWORD dwInputIndex)
{
	if(dwInputIndex > GetInputNum())return false;

	// コールバックに通知する
	if(m_pfnMediaGrabFunc)m_pfnMediaGrabFunc(pMediaData, m_pMediaGrabParam);

	// 下位デコーダにデータを渡す
	OutputMedia(pMediaData);

	return true;
}
Esempio n. 6
0
const bool CProgManager::InputMedia(CMediaData *pMediaData, const DWORD dwInputIndex)
{
	if(dwInputIndex >= GetInputNum())return false;

	CTsPacket *pTsPacket = static_cast<CTsPacket *>(pMediaData);

	// 入力メディアデータは互換性がない
	if(!pTsPacket)return false;

	// PIDルーティング
	m_PidMapManager.StorePacket(pTsPacket);

	// 次のフィルタにデータを渡す
	OutputMedia(pMediaData);

	return true;
}
Esempio n. 7
0
const bool CTsDemuxer::InputMedia(CMediaData *pMediaData, const DWORD dwInputIndex)
{
	if(dwInputIndex >= GetInputNum())return false;

	CTsPacket *pTsPacket = dynamic_cast<CTsPacket *>(pMediaData);

	// 入力メディアデータは互換性がない
	if(!pTsPacket)return false;

	// 映像PESパケット抽出
	if(pTsPacket->GetPID() == m_wVideoPID){
		m_VideoPesParser.StorePacket(pTsPacket);
		return true;
		}

	// 音声PESパケット抽出
	if(pTsPacket->GetPID() == m_wAudioPID){
		m_AudioPesParser.StorePacket(pTsPacket);
		return true;
		}

	return true;
}