// // For "if" test nodes. There are three children; a condition, // a true path, and a false path. The two paths are in the // nodePair. // // Returns the selection node created. // TIntermNode *TIntermediate::addSelection( TIntermTyped *cond, TIntermNodePair nodePair, const TSourceLoc &line) { // // For compile time constant selections, prune the code and // test now. // if (cond->getAsTyped() && cond->getAsTyped()->getAsConstantUnion()) { if (cond->getAsConstantUnion()->getBConst(0) == true) { return nodePair.node1 ? setAggregateOperator( nodePair.node1, EOpSequence, nodePair.node1->getLine()) : NULL; } else { return nodePair.node2 ? setAggregateOperator( nodePair.node2, EOpSequence, nodePair.node2->getLine()) : NULL; } } TIntermSelection *node = new TIntermSelection( cond, ensureSequence(nodePair.node1), ensureSequence(nodePair.node2)); node->setLine(line); return node; }
// For "if" test nodes. There are three children; a condition, // a true path, and a false path. The two paths are in the // nodePair. // // Returns the node created. TIntermNode *TIntermediate::addIfElse(TIntermTyped *cond, TIntermNodePair nodePair, const TSourceLoc &line) { // For compile time constant conditions, prune the code now. if (cond->getAsConstantUnion()) { if (cond->getAsConstantUnion()->getBConst(0) == true) { return nodePair.node1 ? setAggregateOperator(nodePair.node1, EOpSequence, nodePair.node1->getLine()) : nullptr; } else { return nodePair.node2 ? setAggregateOperator(nodePair.node2, EOpSequence, nodePair.node2->getLine()) : nullptr; } } TIntermIfElse *node = new TIntermIfElse(cond, ensureSequence(nodePair.node1), ensureSequence(nodePair.node2)); node->setLine(line); return node; }
Encode_Status VaapiEncoderH264::encodePicture(const PicturePtr& picture) { Encode_Status ret = ENCODE_FAIL; SurfacePtr reconstruct = createSurface(); if (!reconstruct) return ret; { AutoLock locker(m_paramLock); #ifdef __BUILD_GET_MV__ uint32_t size; void *buffer = NULL; getMVBufferSize(&size); if (!picture->editMVBuffer(buffer, &size)) return ret; #endif if (!ensureSequence (picture)) return ret; if (!ensureMiscParams (picture.get())) return ret; if (!ensurePicture(picture, reconstruct)) return ret; if (!ensureSlices (picture)) return ret; } if (!picture->encode()) return ret; if (!referenceListUpdate (picture, reconstruct)) return ret; return ENCODE_SUCCESS; }
// // Create loop nodes. // TIntermNode *TIntermediate::addLoop( TLoopType type, TIntermNode *init, TIntermTyped *cond, TIntermTyped *expr, TIntermNode *body, const TSourceLoc &line) { TIntermNode *node = new TIntermLoop(type, init, cond, expr, ensureSequence(body)); node->setLine(line); return node; }