Пример #1
0
void SubpelRefine::MatchPic(const PicArray& pic_data , const PicArray& refup_data , MEData& me_data ,
                             int ref_id)
{
    // Match a picture against a single reference. Loop over all the blocks
    // doing the matching

    // Initialisation //
    ////////////////////

    // Provide aliases for the appropriate motion vector data components
    MvArray& mv_array = me_data.Vectors( ref_id );
    TwoDArray<MvCostData>& pred_costs = me_data.PredCosts( ref_id );

    // Provide a block matching object to do the work
    BlockMatcher my_bmatch( pic_data , refup_data , m_predparams->LumaBParams(2) ,
                            m_predparams->MVPrecision() , mv_array , pred_costs );

    // Do the work //
    /////////////////

    // Loop over all the blocks, doing the work

    for (int yblock=0 ; yblock<m_predparams->YNumBlocks() ; ++yblock){
        for (int xblock=0 ; xblock<m_predparams->XNumBlocks() ; ++xblock){
            DoBlock(xblock , yblock , my_bmatch , me_data , ref_id );
        }// xblock
    }// yblock

}