📄 umc_h264_mc.cpp
字号:
ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size8x4); break; case MBTYPE_BWD_FWD_16x8: // 2 vectors for the MB (2 - 8x4 chroma blocks) block_ref = pRefIdxL1[0]; futr_frame = get_chroma_ptr(pRefPicList1[block_ref], is_v_plane) + uOffset; pMCRef = futr_frame + SubpelChromaMVAdjust(pMVBwd, uPitch, iXType, iYType); // interpolate copy the 8x4 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size8x4); // Do other 8x4 block pMVFwd += uWidthIn4x4Blocks * 2; // Reposition MV pointer to next 16x8 pDst += DEST_PITCH*4; block_ref = pRefIdxL0[uWidthIn4x4Blocks * 2]; prev_frame = get_chroma_ptr(pRefPicList0[block_ref], is_v_plane) + uOffset + uPitch*4; pMCRef = prev_frame + SubpelChromaMVAdjust(pMVFwd, uPitch, iXType, iYType); // interpolate copy the 8x4 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size8x4); break; case MBTYPE_BWD_BWD_16x8: // 2 vectors for the MB (2 - 8x4 chroma blocks) block_ref = pRefIdxL1[0]; futr_frame = get_chroma_ptr(pRefPicList1[block_ref], is_v_plane) + uOffset; pMCRef = futr_frame + SubpelChromaMVAdjust(pMVBwd, uPitch, iXType, iYType); // interpolate copy the 8x4 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size8x4); // Do other 8x4 block pMVBwd += uWidthIn4x4Blocks * 2; // Reposition MV pointer to next 16x8 pDst += DEST_PITCH*4; block_ref = pRefIdxL1[uWidthIn4x4Blocks * 2]; futr_frame = get_chroma_ptr(pRefPicList1[block_ref], is_v_plane) + uOffset + uPitch*4; pMCRef = futr_frame + SubpelChromaMVAdjust(pMVBwd, uPitch, iXType, iYType); // interpolate copy the 8x4 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size8x4); break; case MBTYPE_BIDIR_FWD_16x8: MCOneBiDirMBChroma( uMB, uPitch, pMVFwd, pMVBwd, pDst, m_pCurrentFrame->pTempBuff4DirectB, is_v_plane ); // Do other 8x4 block pMVFwd += uWidthIn4x4Blocks * 2; // Reposition MV pointer to next 16x8 pDst += DEST_PITCH*4; block_ref = pRefIdxL0[uWidthIn4x4Blocks * 2]; prev_frame = get_chroma_ptr(pRefPicList0[block_ref], is_v_plane) + uOffset + uPitch*4; pMCRef = prev_frame + SubpelChromaMVAdjust(pMVFwd, uPitch, iXType, iYType); // interpolate copy the 8x4 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size8x4); break; case MBTYPE_FWD_BIDIR_16x8: MCOneBiDirMBChroma( uMB, uPitch, pMVFwd, pMVBwd, pDst, m_pCurrentFrame->pTempBuff4DirectB, is_v_plane ); // Do first 8x4 block // 2 vectors for the MB (2 - 8x4 chroma blocks) block_ref = pRefIdxL0[0]; prev_frame = get_chroma_ptr(pRefPicList0[block_ref], is_v_plane) + uOffset; pMCRef = prev_frame + SubpelChromaMVAdjust(pMVFwd, uPitch, iXType, iYType); // interpolate copy the 8x4 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size8x4); break; case MBTYPE_BIDIR_BWD_16x8: MCOneBiDirMBChroma( uMB, uPitch, pMVFwd, pMVBwd, pDst, m_pCurrentFrame->pTempBuff4DirectB, is_v_plane ); // Do other 8x4 block pMVBwd += uWidthIn4x4Blocks * 2; // Reposition MV pointer to next 16x8 pDst += DEST_PITCH*4; block_ref = pRefIdxL1[uWidthIn4x4Blocks * 2]; futr_frame = get_chroma_ptr(pRefPicList1[block_ref], is_v_plane) + uOffset + uPitch*4; pMCRef = futr_frame + SubpelChromaMVAdjust(pMVBwd, uPitch, iXType, iYType); // interpolate copy the 8x4 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size8x4); break; case MBTYPE_BWD_BIDIR_16x8: MCOneBiDirMBChroma( uMB, uPitch, pMVFwd, pMVBwd, pDst, m_pCurrentFrame->pTempBuff4DirectB, is_v_plane ); // Do first 8x4 block // 2 vectors for the MB (2 - 8x4 chroma blocks) block_ref = pRefIdxL1[0]; futr_frame = get_chroma_ptr(pRefPicList1[block_ref], is_v_plane) + uOffset; pMCRef = futr_frame + SubpelChromaMVAdjust(pMVBwd, uPitch, iXType, iYType); // interpolate copy the 8x4 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size8x4); break; case MBTYPE_INTER_8x16: case MBTYPE_FWD_FWD_8x16: // 2 vectors for the MB (2 - 4x8 chroma blocks) block_ref = pRefIdxL0[0]; prev_frame = get_chroma_ptr(pRefPicList0[block_ref], is_v_plane) + uOffset; pMCRef = prev_frame + SubpelChromaMVAdjust(pMVFwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); // Do other 4x8 block pMVFwd += 2; // Reposition MV pointer to next 8x16 pDst += 4; block_ref = pRefIdxL0[2]; prev_frame = get_chroma_ptr(pRefPicList0[block_ref], is_v_plane) + uOffset + 4; pMCRef = prev_frame + SubpelChromaMVAdjust(pMVFwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); break; case MBTYPE_FWD_BWD_8x16: // 2 vectors for the MB (2 - 4x8 chroma blocks) block_ref = pRefIdxL0[0]; prev_frame = get_chroma_ptr(pRefPicList0[block_ref], is_v_plane) + uOffset; pMCRef = prev_frame + SubpelChromaMVAdjust(pMVFwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); // Do other 4x8 block pMVBwd += 2; // Reposition MV pointer to next 8x16 pDst += 4; block_ref = pRefIdxL1[2]; futr_frame = get_chroma_ptr(pRefPicList1[block_ref], is_v_plane) + uOffset + 4; pMCRef = futr_frame + SubpelChromaMVAdjust(pMVBwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); break; case MBTYPE_BWD_FWD_8x16: // 2 vectors for the MB (2 - 4x8 chroma blocks) block_ref = pRefIdxL1[0]; futr_frame = get_chroma_ptr(pRefPicList1[block_ref], is_v_plane) + uOffset; pMCRef = futr_frame + SubpelChromaMVAdjust(pMVBwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); // Do other 4x8 block pMVFwd += 2; // Reposition MV pointer to next 8x16 pDst += 4; block_ref = pRefIdxL0[2]; prev_frame = get_chroma_ptr(pRefPicList0[block_ref], is_v_plane) + uOffset + 4; pMCRef = prev_frame + SubpelChromaMVAdjust(pMVFwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); break; case MBTYPE_BWD_BWD_8x16: block_ref = pRefIdxL1[0]; futr_frame = get_chroma_ptr(pRefPicList1[block_ref], is_v_plane) + uOffset; pMCRef = futr_frame + SubpelChromaMVAdjust(pMVBwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); // Do other 4x8 block pMVBwd += 2; // Reposition MV pointer to next 8x16 pDst += 4; block_ref = pRefIdxL1[2]; futr_frame = get_chroma_ptr(pRefPicList1[block_ref], is_v_plane) + uOffset + 4; pMCRef = futr_frame + SubpelChromaMVAdjust(pMVBwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); break; case MBTYPE_BIDIR_FWD_8x16: MCOneBiDirMBChroma( uMB, uPitch, pMVFwd, pMVBwd, pDst, m_pCurrentFrame->pTempBuff4DirectB, is_v_plane ); // Do other 4x8 block pMVFwd += 2; // Reposition MV pointer to next 8x16 pDst += 4; block_ref = pRefIdxL0[2]; prev_frame = get_chroma_ptr(pRefPicList0[block_ref], is_v_plane) + uOffset + 4; pMCRef = prev_frame + SubpelChromaMVAdjust(pMVFwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); break; case MBTYPE_FWD_BIDIR_8x16: MCOneBiDirMBChroma( uMB, uPitch, pMVFwd, pMVBwd, pDst, m_pCurrentFrame->pTempBuff4DirectB, is_v_plane ); block_ref = pRefIdxL0[0]; prev_frame = get_chroma_ptr(pRefPicList0[block_ref], is_v_plane) + uOffset; pMCRef = prev_frame + SubpelChromaMVAdjust(pMVFwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); break; case MBTYPE_BWD_BIDIR_8x16: MCOneBiDirMBChroma( uMB, uPitch, pMVFwd, pMVBwd, pDst, m_pCurrentFrame->pTempBuff4DirectB, is_v_plane ); block_ref = pRefIdxL1[0]; futr_frame = get_chroma_ptr(pRefPicList1[block_ref], is_v_plane) + uOffset; pMCRef = futr_frame + SubpelChromaMVAdjust(pMVBwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); break; case MBTYPE_BIDIR_BWD_8x16: MCOneBiDirMBChroma( uMB, uPitch, pMVFwd, pMVBwd, pDst, m_pCurrentFrame->pTempBuff4DirectB, is_v_plane ); // Do other 4x8 block pMVBwd += 2; // Reposition MV pointer to next 8x16 pDst += 4; block_ref = pRefIdxL1[2]; futr_frame = get_chroma_ptr(pRefPicList1[block_ref], is_v_plane) + uOffset + 4; pMCRef = futr_frame + SubpelChromaMVAdjust(pMVBwd, uPitch, iXType, iYType); // interpolate copy the 4x8 block ippiInterpolateChroma_H264_8u_C1R (pMCRef, uPitch, pDst, DEST_PITCH, iXType, iYType, size4x8); break; case MBTYPE_INTER_8x8: case MBTYPE_INTER_8x8_REF0: case MBTYPE_B_8x8: {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -