当前位置: 首页>>代码示例>>C++>>正文


C++ TComSlice::getWpScaling方法代码示例

本文整理汇总了C++中TComSlice::getWpScaling方法的典型用法代码示例。如果您正苦于以下问题:C++ TComSlice::getWpScaling方法的具体用法?C++ TComSlice::getWpScaling怎么用?C++ TComSlice::getWpScaling使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TComSlice的用法示例。


在下文中一共展示了TComSlice::getWpScaling方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: getWpScaling

/** derivation of wp tables
 * \param TComDataCU* cu
 * \param refIdx0
 * \param refIdx1
 * \param wpScalingParam *&wp0
 * \param wpScalingParam *&wp1
 * \param ibdi
 * \returns void
 */
void TComWeightPrediction::getWpScaling(TComDataCU* cu, int refIdx0, int refIdx1, wpScalingParam *&wp0, wpScalingParam *&wp1)
{
    TComSlice*      slice = cu->getSlice();
    const TComPPS*  pps     = cu->getSlice()->getPPS();
    bool            wpBiPred = pps->getWPBiPred();
    wpScalingParam* pwp;
    bool            bBiDir   = (refIdx0 >= 0 && refIdx1 >= 0);
    bool            bUniDir  = !bBiDir;

    if (bUniDir || wpBiPred)
    { // explicit --------------------
        if (refIdx0 >= 0)
        {
            slice->getWpScaling(REF_PIC_LIST_0, refIdx0, wp0);
        }
        if (refIdx1 >= 0)
        {
            slice->getWpScaling(REF_PIC_LIST_1, refIdx1, wp1);
        }
    }
    else
    {
        X265_CHECK(0, "unexpected wpScaling configuration\n");
    }

    if (refIdx0 < 0)
    {
        wp0 = NULL;
    }
    if (refIdx1 < 0)
    {
        wp1 = NULL;
    }

    if (bBiDir)
    { // Bi-Dir case
        for (int yuv = 0; yuv < 3; yuv++)
        {
            wp0[yuv].w      = wp0[yuv].inputWeight;
            wp0[yuv].o      = wp0[yuv].inputOffset * (1 << (X265_DEPTH - 8));
            wp1[yuv].w      = wp1[yuv].inputWeight;
            wp1[yuv].o      = wp1[yuv].inputOffset * (1 << (X265_DEPTH - 8));
            wp0[yuv].shift  = wp0[yuv].log2WeightDenom;
            wp0[yuv].round  = (1 << wp0[yuv].log2WeightDenom);
            wp1[yuv].shift  = wp0[yuv].shift;
            wp1[yuv].round  = wp0[yuv].round;
        }
    }
    else
    { // Unidir
        pwp = (refIdx0 >= 0) ? wp0 : wp1;
        for (int yuv = 0; yuv < 3; yuv++)
        {
            pwp[yuv].w      = pwp[yuv].inputWeight;
            pwp[yuv].offset = pwp[yuv].inputOffset * (1 << (X265_DEPTH - 8));
            pwp[yuv].shift  = pwp[yuv].log2WeightDenom;
            pwp[yuv].round  = (pwp[yuv].log2WeightDenom >= 1) ? (1 << (pwp[yuv].log2WeightDenom - 1)) : (0);
        }
    }
}
开发者ID:frankyao47,项目名称:x265_1.2_comment,代码行数:69,代码来源:TComWeightPrediction.cpp


注:本文中的TComSlice::getWpScaling方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。