⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ecodeblock.cpp

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 CPP
字号:
/* ////////////////////////////////////////////////////////////////////////////                  INTEL CORPORATION PROPRIETARY INFORMATION//     This software is supplied under the terms of a license agreement or//     nondisclosure agreement with Intel Corporation and may not be copied//     or disclosed except in accordance with the terms of that agreement.//          Copyright(c) 2002-2005 Intel Corporation. All Rights Reserved.//////*/#include <cfloat>#include "ecodeblock.h"const double ECodeBlock::m_BadRDSlope = -1.0;ECodeBlock::ECodeBlock(): m_curPass(m_passes.ItrBackBound()), m_Lblock(3), m_isFirstInclusion(true), m_curPassStore(m_passes.ItrBackBound()), m_LblockStore(3), m_isFirstInclusionStore(true){}void ECodeBlock::SetNOfZeroBits(int nOfZeroBits){    m_nOfZeroBits = nOfZeroBits;}void ECodeBlock::PushPass(int end, double dist){    int start = 0;    if( ! m_passes.IsEmpty() )        start = m_passes.Back().m_end;    m_passes.PushBack();    m_passes.Back().m_start= start;    m_passes.Back().m_end  = end;    m_passes.Back().m_dist = dist;    m_nOfPasses++;    m_passes.Back().m_data = &m_data[m_passes.Back().m_start];}void ECodeBlock::ScaleDist(double factor){    for (ECBPassIterator pass = m_passes.ItrFront(); pass != m_passes.ItrBackBound(); ++pass)        pass->m_dist*=factor;}void ECodeBlock::CalcRDSlopes(){    ECBPassIterator pass2 = m_passes.ItrFront();    while (pass2 != m_passes.ItrBackBound())    {        ECBPassIterator pass0 = m_passes.ItrBackBound();        for (ECBPassIterator pass1 = m_passes.ItrFront(); pass1 != m_passes.ItrBackBound(); ++pass1)        {            double deltaDist = pass1->m_dist;            int    deltaRate = pass1->m_end;            if(pass0 != m_passes.ItrBackBound())            {                deltaDist -= pass0->m_dist;                deltaRate -= pass0->m_end;            }            if (deltaDist > 0)            {                if (pass1 == pass2 || pass1->m_rdSlope > 0)                {                    if (!deltaRate)                    {                        pass0->m_rdSlope = 0;                        break;                    }                    double slope = deltaDist / (double)deltaRate;                    if (pass0!=m_passes.ItrBackBound())                    {                        if(slope >= pass0->m_rdSlope)                        {                            pass0->m_rdSlope = 0;                            break;                        }                    }                    pass0            = pass1;                    pass1->m_rdSlope = slope;               }            }            else pass1->m_rdSlope = m_BadRDSlope;            if (pass1 == pass2) ++pass2;        }    }}void ECodeBlock::RDSlopesMinMax(double &min, double &max) const{    min = DBL_MAX;    max = 0;    for (ECBPassIterator pass = m_passes.ItrFront(); pass != m_passes.ItrBackBound(); ++pass)    {        if(pass->m_rdSlope > 0)        {            if(pass->m_rdSlope > max) max = pass->m_rdSlope;            if(pass->m_rdSlope < min) min = pass->m_rdSlope;        }    }}void ECodeBlock::AssignLayerTillCurPass(int layer, double threshold){    if (NOfPasses())    {        ECBPassIterator passThresh = m_curPass;        ECBPassIterator pass       = m_curPass;        for (pass = m_curPass; pass != m_passes.ItrBackBound(); ++pass)        {            if (pass->m_rdSlope >= threshold)            {                passThresh = pass;                ++passThresh;            }        }        for (pass = m_curPass; pass != passThresh; ++pass)            pass->m_layer = layer;        for (; pass != m_passes.ItrBackBound(); ++pass)            pass->m_layer = -1;    }}void ECodeBlock::AssignLayerTillCurPass(int layer){    if(NOfPasses())    {        ECBPassIterator pass = m_passes.ItrFront();        for (; pass != m_curPass; ++pass)            pass->m_layer = layer;        for (; pass != m_passes.ItrBackBound(); ++pass)            pass->m_layer = -1;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -