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

📄 umc_avs_dec_decompressor_rec_i.cpp

📁 audio-video-codecs.rar语音编解码器
💻 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) 2007 Intel Corporation. All Rights Reserved.
//
//
*/

#include "umc_defs.h"
#if defined(UMC_ENABLE_AVS_VIDEO_DECODER)

#include "umc_avs_dec_decompressor.h"
#include "umc_avs_picture_header.h"
#include "umc_avs_dec_mb_info.h"
#include "umc_avs_dec_tables.h"

namespace UMC
{

void AVSDecompressor::ReconstructIMacroBlocksRow(void)
{
    MbMax = m_recCtx.MbIndex + m_recCtx.MbWidth;

    MbIndex = m_recCtx.MbIndex;

    PrepareNeighbours(&m_recCtx);
    // set coeffs buffers
    m_pReadCoeffs = m_recCtx.m_pCoeffs;

    do
    {
        // decode next macroblock
        ReconstructIMacroBlock();

        MbIndex += 1;
        AdvanceNeighbours();
        AdvanceReconstruction();

    } while (MbIndex < MbMax);

    // update context
    FinalizeReconstruction();

} // void AVSDecompressor::ReconstructIMacroBlocksRow(void)

void AVSDecompressor::ReconstructIMacroBlock(void)
{
    Ipp32u chromaQP;
    Ipp32s edge_type = 0;

    // prepare macroblock's absent block edges variable
    edge_type |= (m_pMbInfoLeft) ?
                 (0) : (IPPVC_LEFT_EDGE);
    edge_type |= (m_pMbInfoTop) ?
                 (0) : (IPPVC_TOP_EDGE);
    edge_type |= ((m_recCtx.MbY + 1) * m_recCtx.MbWidth - 1 != MbIndex) ?
                 (0) : (IPPVC_TOP_RIGHT_EDGE);

    // reconstruct luminance blocks
    ippiReconstructLumaIntra_AVS_16s8u_C1R(&m_pReadCoeffs,
                                           m_recCtx.m_pPlanes8u[0],
                                           m_recCtx.m_iPitch,
                                           m_pMbInfo->IntraLumaPredMode,
                                           m_pMbInfo->NumCoeffs,
                                           m_pMbInfo->MbCBP,
                                           m_pMbInfo->QP,
                                           edge_type);

    // reconstruct chrominance blocks
    chromaQP = AVSChromaQPTable[m_pMbInfo->QP];
    ippiReconstructChromaIntra_AVS_16s8u_C1R(&m_pReadCoeffs,
                                             m_recCtx.m_pPlanes8u[1],
                                             m_recCtx.m_pPlanes8u[2],
                                             m_recCtx.m_iPitch,
                                             m_pMbInfo->IntraChromaPredMode[0],
                                             m_pMbInfo->NumCoeffs + 4,
                                             m_pMbInfo->MbCBP >> 4,
                                             chromaQP,
                                             edge_type);

} // void AVSDecompressor::ReconstructIMacroBlock(void)

} // namespace UMC

#endif // #if defined(UMC_ENABLE_AVS_VIDEO_DECODER)

⌨️ 快捷键说明

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