28.11.2012 Views

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 ...

SHOW MORE
SHOW LESS

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 />

}

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!