Encode_Status VaapiEncoderH264::reorder(const SurfacePtr& surface, uint64_t timeStamp, bool forceKeyFrame) { if (!surface) return ENCODE_INVALID_PARAMS; PicturePtr picture(new VaapiEncPictureH264(m_context, surface, timeStamp)); bool isIdr = (m_frameIndex == 0 ||m_frameIndex >= keyFramePeriod() || forceKeyFrame); if (isIdr) { setIdrFrame (picture); m_reorderFrameList.push_back(picture); m_curFrameNum++; m_reorderState = VAAPI_ENC_REORD_DUMP_FRAMES; } else if (m_frameIndex % intraPeriod() == 0) { setIFrame (picture); m_reorderFrameList.push_front(picture); m_curFrameNum++; m_reorderState = VAAPI_ENC_REORD_DUMP_FRAMES; }else if (m_frameIndex % (m_numBFrames + 1) != 0) { setBFrame (picture); m_reorderFrameList.push_back(picture); } else { setPFrame (picture); m_reorderFrameList.push_front(picture); m_curFrameNum++; m_reorderState = VAAPI_ENC_REORD_DUMP_FRAMES; } picture->m_poc = ((m_frameIndex * 2) % m_maxPicOrderCnt); m_frameIndex++; return ENCODE_SUCCESS; }
Encode_Status VaapiEncoderH264::reorder(const SurfacePtr& surface, uint64_t timeStamp, bool forceKeyFrame) { if (!surface) return ENCODE_INVALID_PARAMS; PicturePtr picture(new VaapiEncPictureH264(m_context, surface, timeStamp)); bool isIdr = (m_frameIndex == 0 ||m_frameIndex >= m_keyPeriod || forceKeyFrame); if (isIdr) { // If the last frame before IDR is B frame, set it to P frame. if (m_reorderFrameList.size()) { PicturePtr lastPic = m_reorderFrameList.back(); if (lastPic->m_type == VAAPI_PICTURE_TYPE_B) { lastPic->m_type = VAAPI_PICTURE_TYPE_P; m_reorderFrameList.pop_back(); m_reorderFrameList.push_front(lastPic); } } setIdrFrame (picture); m_reorderFrameList.push_back(picture); m_curFrameNum++; m_reorderState = VAAPI_ENC_REORD_DUMP_FRAMES; } else if (m_frameIndex % intraPeriod() == 0) { setIFrame (picture); m_reorderFrameList.push_front(picture); m_curFrameNum++; m_reorderState = VAAPI_ENC_REORD_DUMP_FRAMES; }else if (m_frameIndex % (m_numBFrames + 1) != 0) { setBFrame (picture); m_reorderFrameList.push_back(picture); } else { setPFrame (picture); m_reorderFrameList.push_front(picture); m_curFrameNum++; m_reorderState = VAAPI_ENC_REORD_DUMP_FRAMES; } picture->m_poc = ((m_frameIndex * 2) % m_maxPicOrderCnt); m_frameIndex++; return ENCODE_SUCCESS; }
void InspectorLayerTreeAgent::reasonsForCompositingLayer(ErrorString& errorString, const String& layerId, RefPtr<Inspector::Protocol::LayerTree::CompositingReasons>& compositingReasonsResult) { const RenderLayer* renderLayer = m_idToLayer.get(layerId); if (!renderLayer) { errorString = ASCIILiteral("Could not find a bound layer for the provided id"); return; } CompositingReasons reasonsBitmask = renderLayer->compositor().reasonsForCompositing(*renderLayer); auto compositingReasons = Inspector::Protocol::LayerTree::CompositingReasons::create().release(); if (reasonsBitmask & CompositingReason3DTransform) compositingReasons->setTransform3D(true); if (reasonsBitmask & CompositingReasonVideo) compositingReasons->setVideo(true); else if (reasonsBitmask & CompositingReasonCanvas) compositingReasons->setCanvas(true); else if (reasonsBitmask & CompositingReasonPlugin) compositingReasons->setPlugin(true); else if (reasonsBitmask & CompositingReasonIFrame) compositingReasons->setIFrame(true); if (reasonsBitmask & CompositingReasonBackfaceVisibilityHidden) compositingReasons->setBackfaceVisibilityHidden(true); if (reasonsBitmask & CompositingReasonClipsCompositingDescendants) compositingReasons->setClipsCompositingDescendants(true); if (reasonsBitmask & CompositingReasonAnimation) compositingReasons->setAnimation(true); if (reasonsBitmask & CompositingReasonFilters) compositingReasons->setFilters(true); if (reasonsBitmask & CompositingReasonPositionFixed) compositingReasons->setPositionFixed(true); if (reasonsBitmask & CompositingReasonPositionSticky) compositingReasons->setPositionSticky(true); if (reasonsBitmask & CompositingReasonOverflowScrollingTouch) compositingReasons->setOverflowScrollingTouch(true); if (reasonsBitmask & CompositingReasonStacking) compositingReasons->setStacking(true); if (reasonsBitmask & CompositingReasonOverlap) compositingReasons->setOverlap(true); if (reasonsBitmask & CompositingReasonNegativeZIndexChildren) compositingReasons->setNegativeZIndexChildren(true); if (reasonsBitmask & CompositingReasonTransformWithCompositedDescendants) compositingReasons->setTransformWithCompositedDescendants(true); if (reasonsBitmask & CompositingReasonOpacityWithCompositedDescendants) compositingReasons->setOpacityWithCompositedDescendants(true); if (reasonsBitmask & CompositingReasonMaskWithCompositedDescendants) compositingReasons->setMaskWithCompositedDescendants(true); if (reasonsBitmask & CompositingReasonReflectionWithCompositedDescendants) compositingReasons->setReflectionWithCompositedDescendants(true); if (reasonsBitmask & CompositingReasonFilterWithCompositedDescendants) compositingReasons->setFilterWithCompositedDescendants(true); if (reasonsBitmask & CompositingReasonBlendingWithCompositedDescendants) compositingReasons->setBlendingWithCompositedDescendants(true); if (reasonsBitmask & CompositingReasonIsolatesCompositedBlendingDescendants) compositingReasons->setIsolatesCompositedBlendingDescendants(true); if (reasonsBitmask & CompositingReasonPerspective) compositingReasons->setPerspective(true); if (reasonsBitmask & CompositingReasonPreserve3D) compositingReasons->setPreserve3D(true); if (reasonsBitmask & CompositingReasonWillChange) compositingReasons->setWillChange(true); if (reasonsBitmask & CompositingReasonRoot) compositingReasons->setRoot(true); compositingReasonsResult = WTF::move(compositingReasons); }