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 ...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
<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 98<br />
{<br />
CPersistStream(punk, phr)<br />
char sz[60];<br />
GetProfileStringA("Quartz", "EffectStart", "0.0", sz, 60);<br />
m_effectStartTime = COARefTime(atof(sz));<br />
GetProfileStringA("Quartz", "EffectL<strong>en</strong>gth", "50000.0", sz, 60);<br />
m_effectTime = COARefTime(atof(sz));<br />
} // (Constructor)<br />
//<br />
// CreateInstance<br />
//<br />
// Provee la via para que COM cree un objeto EZrgb24<br />
//<br />
CUnknown *CEZrgb24::CreateInstance(LPUNKNOWN punk, HRESULT *phr)<br />
{<br />
CEZrgb24 *pNewObject = new CEZrgb24(NAME("Image Effects"), punk, phr);<br />
if (pNewObject == NULL) {<br />
*phr = E_OUTOFMEMORY;<br />
}<br />
return pNewObject;<br />
} // CreateInstance<br />
//<br />
// NonDelegatingQueryInterface<br />
//<br />
// Pres<strong>en</strong>ta las paginas propietarias IIPEffect y ISpecifyPropertyPages<br />
//<br />
STDMETHODIMP CEZrgb24::NonDelegatingQueryInterface(REFIID riid, void **ppv)<br />
{<br />
CheckPointer(ppv,E_POINTER);<br />
if (riid == IID_IIPEffect) {<br />
return GetInterface((IIPEffect *) this, ppv);<br />
} else if (riid == IID_ISpecifyPropertyPages) {<br />
return GetInterface((ISpecifyPropertyPages *) this, ppv);<br />
} else {<br />
return CTransformFilter::NonDelegatingQueryInterface(riid, ppv);<br />
}<br />
} // NonDelegatingQueryInterface<br />
//<br />
// Transform<br />
//<br />
// Copia la muestra <strong>de</strong> <strong>en</strong>trada hacia la muestra <strong>de</strong> salida - <strong>en</strong>tonces transforma<br />
// la muestra <strong>de</strong> salida 'in place'.<br />
HRESULT CEZrgb24::Transform(IMediaSample *pIn, IMediaSample *pOut)<br />
{<br />
// Copia las propieda<strong>de</strong>s<br />
HRESULT hr = Copy(pIn, pOut);<br />
if (FAILED(hr)) {<br />
return hr;<br />
}<br />
// Checa para ver si es <strong>tiempo</strong> <strong>de</strong> hacer la muestra<br />
CRefTime tStart, tStop ;<br />
pIn->GetTime((REFERENCE_TIME *) &tStart, (REFERENCE_TIME *) &tStop);<br />
if (tStart >= m_effectStartTime) {<br />
if (tStop