Procesamiento digital de video en tiempo real y - Maestría en ...
Procesamiento digital de video en tiempo real y - Maestría en ...
Procesamiento digital de video en tiempo real y - Maestría en ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
<strong>Procesami<strong>en</strong>to</strong> <strong>digital</strong> <strong>de</strong> vi<strong>de</strong>o <strong>en</strong> <strong>tiempo</strong> <strong>real</strong> y “vi<strong>de</strong>o wall” con la PC 104<br />
// Checktransform<br />
//<br />
// Checa que una transformacion pueda llevarse a cabo <strong>en</strong>tre estos formatos<br />
//<br />
HRESULT CEZrgb24::CheckTransform(const CMediaType *mtIn, const CMediaType *mtOut)<br />
{<br />
if (CanPerformEZrgb24(mtIn)) {<br />
if (*mtIn == *mtOut) {<br />
return NOERROR;<br />
}<br />
}<br />
return E_FAIL;<br />
} // CheckTransform<br />
//<br />
// Deci<strong>de</strong>BufferSize<br />
//<br />
// Le dice al localizador <strong>de</strong>l pin output que tamaño <strong>de</strong> buffer requerimos.<br />
// Po<strong>de</strong>mos hacer esto solo cuando el input esta conectado<br />
//<br />
HRESULT CEZrgb24::Deci<strong>de</strong>BufferSize(IMemAllocator *pAlloc,ALLOCATOR_PROPERTIES *pProperties)<br />
{<br />
// Esta conectado el input pin?<br />
if (m_pInput->IsConnected() == FALSE) {<br />
return E_UNEXPECTED;<br />
}<br />
ASSERT(pAlloc);<br />
ASSERT(pProperties);<br />
HRESULT hr = NOERROR;<br />
pProperties->cBuffers = 1;<br />
pProperties->cbBuffer = m_pInput->Curr<strong>en</strong>tMediaType().GetSampleSize();<br />
ASSERT(pProperties->cbBuffer);<br />
// Pregunta al locaclizador para reservarnos alguna memoria para la muestra.<br />
ALLOCATOR_PROPERTIES Actual;<br />
hr = pAlloc->SetProperties(pProperties,&Actual);<br />
if (FAILED(hr)) {<br />
return hr;<br />
}<br />
ASSERT( Actual.cBuffers == 1 );<br />
if (pProperties->cBuffers > Actual.cBuffers ||<br />
pProperties->cbBuffer > Actual.cbBuffer) {<br />
return E_FAIL;<br />
}<br />
return NOERROR;<br />
} // Deci<strong>de</strong>BufferSize<br />
//<br />
// GetMediaType<br />
//<br />
// Soporto un tipo, normalem<strong>en</strong>te el tipo <strong>de</strong>l input pin<br />
// Este tipo solo esta disponible si mi input esta conectado<br />
//<br />
HRESULT CEZrgb24::GetMediaType(int iPosition, CMediaType *pMediaType)<br />
{<br />
// Esta conectado el input pin?<br />
if (m_pInput->IsConnected() == FALSE) {<br />
return E_UNEXPECTED;<br />
}