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;
}
Ejemplo n.º 2
0
//初始化场景
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;
}