bool VaapiDecoderVP8::allocNewPicture() { m_currentPicture = createPicture(m_currentPTS); if (!m_currentPicture) return false; SurfacePtr surface = m_currentPicture->getSurface(); ASSERT(m_frameWidth && m_frameHeight); if (!surface->resize(m_frameWidth, m_frameHeight)) { ASSERT(0 && "frame size is bigger than internal surface resolution"); return false; } DEBUG ("alloc new picture: %p with surface ID: %x", m_currentPicture.get(), m_currentPicture->getSurfaceID()); return true; }
SurfacePtr Video::initSurfDesc(int16 width, int16 height, int16 flags) { SurfacePtr descPtr; if (flags & PRIMARY_SURFACE) assert((width == _surfWidth) && (height == _surfHeight)); if (flags & PRIMARY_SURFACE) { _vm->_global->_primaryWidth = width; _vm->_global->_primaryHeight = height; descPtr = _vm->_global->_primarySurfDesc; descPtr->resize(width, height); } else { assert(!(flags & DISABLE_SPR_ALLOC)); if (!(flags & SCUMMVM_CURSOR)) width = (width + 7) & 0xFFF8; descPtr = SurfacePtr(new Surface(width, height, _vm->getPixelFormat().bytesPerPixel)); } return descPtr; }