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

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

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

Saved successfully!

Ooh no, something went wrong!