void GPUFilter::setDimensions(const IntPoint& srcSize, const IntRect& destRect, unsigned texMode) { bool bProjectionChanged = false; if (destRect != m_DestRect) { m_pFBOs.clear(); for (unsigned i=0; i<m_NumTextures; ++i) { FBOPtr pFBO = FBOPtr(new FBO(destRect.size(), m_PFDest, 1, 1, false, m_bMipmap)); m_pFBOs.push_back(pFBO); } m_DestRect = destRect; bProjectionChanged = true; } if (m_bStandalone && srcSize != m_SrcSize) { m_pSrcTex = GLTexturePtr(new GLTexture(srcSize, m_PFSrc, false, texMode, texMode)); m_pSrcPBO = PBOPtr(new PBO(srcSize, m_PFSrc, GL_STREAM_DRAW)); bProjectionChanged = true; } m_SrcSize = srcSize; if (bProjectionChanged) { m_pProjection = ImagingProjectionPtr(new ImagingProjection(srcSize, destRect)); } }
void OffscreenCanvas::initPlayback() { m_bUseMipmaps = getMipmap(); m_pFBO = FBOPtr(new FBO(getSize(), B8G8R8A8, 1, getMultiSampleSamples(), true, m_bUseMipmaps)); Canvas::initPlayback(getMultiSampleSamples()); m_bIsRendered = false; }
void VideoWriter::stop() { if (!m_bStopped) { getFrameFromPBO(); if (!m_bHasValidData) { writeDummyFrame(); } m_bStopped = true; m_CmdQueue.pushCmd(boost::bind(&VideoWriterThread::stop, _1)); m_pCanvas->unregisterFrameEndListener(this); m_pCanvas->unregisterPlaybackEndListener(this); m_pFBO = FBOPtr(); m_pFilter = GPURGB2YUVFilterPtr(); } }
void OffscreenCanvas::stopPlayback() { m_pFBO = FBOPtr(); Canvas::stopPlayback(); m_bIsRendered = false; }
bool OffscreenCanvas::isRunning() const { return (m_pFBO != FBOPtr()); }