Decode_Status VaapiDecoderH264::decodePicture(H264NalUnit * nalu, H264SliceHdr * sliceHdr) { VaapiPictureH264 *picture; Decode_Status status; H264PPS *const pps = sliceHdr->pps; H264SPS *const sps = pps->sequence; status = decodeCurrentPicture(); if (status != DECODE_SUCCESS) return status; if (m_currentPicture) { /* Re-use current picture where the first field was decoded */ picture = m_currentPicture->newField(); if (!picture) { ERROR("failed to allocate field picture"); m_currentPicture = NULL; return DECODE_FAIL; } } else { /*accquire one surface from m_bufPool in base decoder */ picture = new VaapiPictureH264(m_VADisplay, m_VAContext, m_bufPool, VAAPI_PICTURE_STRUCTURE_FRAME); VAAPI_PICTURE_FLAG_SET(picture, VAAPI_PICTURE_FLAG_FF); /* hack code here */ } m_currentPicture = picture; picture->m_pps = pps; status = ensureQuantMatrix(picture); if (status != DECODE_SUCCESS) { ERROR("failed to reset quantizer matrix"); return status; } if (!initPicture(picture, sliceHdr, nalu)) return DECODE_FAIL; if (!fillPicture(picture, sliceHdr, nalu)) return DECODE_FAIL; return DECODE_SUCCESS; }
//初始化场景 bool ShopScene::init() { if ( !Layer::init() ) { return false; } //获取屏幕尺寸 size = Director::getInstance()->getVisibleSize(); //获取屏幕大小 str_introduction[0] = "THE BIG BAD BOY OF\n BOMBS! YOU ONLY NEED\n ONE OF THESE TO CLEAR THE\n BATTLEFIELD AND CLAIM THE\n SPOILS OF WAR! JUST TELL\n US WHERE TO DROP IT!"; str_introduction[1] = "FREEZE THE WORLE!\n\n THE MAGIC IN THIS ROD WILL\n FREZE ALL BADDIES AND\n PREVENT NEW ONES FROM\n APPROACHING "; str_introduction[2] = "BLAST YOUR ENEMIES TO\n PLECES WITH THESE\n SPECIALLY DESIGNED\n GNOME EXPLOSIVES.\n\n DESTRUCTION GUARANTEED."; str_introduction[3] = "THIS SPECIAL CONCOCTION\n WILL FREEZE YOUR ENEMIES\n HELPLESS IN PLACE FOR A\n WHILE"; str_introduction[4] = "MAGICAL HEARTS TRAPPED\n IN A BOX.\n\n BREAK GLASS IN AN\n EMERGENCY TO GAIN 5\n EXTRA LIVES."; str_introduction[5] = "LEAVE NOTHING TO CHANCE.\n BRING EXTRA GOLD TO THE\n BATTLEFIELD!\n\n EACH BIG WORTH 500\n GOLD PIECES."; str_name[0] = "BOY"; str_name[1] = "ICE"; str_name[2] = "BOMB"; str_name[3] = "WATER"; str_name[4] = "HEARTBOX"; str_name[5] = "MONEY"; str_gem[0] = 999; str_gem[1] = 250; str_gem[2] = 50; str_gem[3] = 50; str_gem[4] = 50; str_gem[5] = 500; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //黑板上的内容 //大标题 label = Label::createWithTTF("", "SohoGothicProMedium.ttf", 24); label->setPosition(Point(680, 560)); addChild(label,1); //数字 label2 = Label::createWithTTF(" ", "SohoGothicProMedium.ttf", 24); label2->setPosition(Point(900, 545)); addChild(label2,1); //简介 label3 = Label::createWithTTF("", "SohoGothicProMedium.ttf", 12); label3->setPosition(Point(900, 440)); addChild(label3,1); //宝石的数量=============================================== gem = UserDefault::getInstance()->getIntegerForKey(GameManager::getInstance()->SLOTX_GEM,0); //初始化购买物品的数量************************************ for(int i=0;i<6;i++) { count[i]=UserDefault::getInstance()->getIntegerForKey(String::createWithFormat(GameManager::getInstance()->SLOTX_SHOP,i)->getCString()); } //==========================================================//购买的物品 initBackpackIcon(); //=====================================================//宝石总数 gemLabel = Label::createWithTTF(String::createWithFormat("%d",gem)->getCString(), "SohoGothicProMedium.ttf", 30); gemLabel->setColor(Color3B::WHITE); gemLabel->setPosition(Point(size.width*0.35, size.height*0.92)); addChild(gemLabel,1); initPicture(); auto listenerkeyPad = EventListenerKeyboard::create(); listenerkeyPad->onKeyReleased = CC_CALLBACK_2(ShopScene::onKeyReleased, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listenerkeyPad, this); return true; }