1

H.265 モーション補正と検索 (HEVC-ここからの libx265 実装: https://bitbucket.org/multicoreware/x265/downloads ) で遊んでみます。エッジ拡張検索を少し拡張し、サンプル ビデオが円柱のように見えるように (右端が左端に接続されているように)、左端のピクセルでマクロ ブロックを埋める必要があります。

私がする必要があるのは基本的にこれです:

ここに画像の説明を入力

これを行う 1 つの方法は、エッジ拡張領域 (既にコード内の にありますframeFilter.cpp) を変更し、ブロックの右端と左端のピクセルで外れた部分を塗りつぶすことです。ここで、明らかにその原因となっているコードを特定しました。誰かがこの機能の実装を手伝ってくれますか?

if ((col == 0) | (col == m_frameFilter->m_numCols - 1))
    {
        // TODO: improve by process on Left or Right only
        primitives.extendRowBorder(reconPic->getLumaAddr(m_rowAddr), stride, reconPic->m_picWidth, realH, reconPic->m_lumaMarginX);

        if (m_frameFilter->m_param->internalCsp != X265_CSP_I400)
        {
            primitives.extendRowBorder(reconPic->getCbAddr(m_rowAddr), strideC, reconPic->m_picWidth >> hChromaShift, realH >> vChromaShift, reconPic->m_chromaMarginX);
            primitives.extendRowBorder(reconPic->getCrAddr(m_rowAddr), strideC, reconPic->m_picWidth >> hChromaShift, realH >> vChromaShift, reconPic->m_chromaMarginX);
        }
    }

    // Extra Left and Right border on first and last CU
    if ((col == 0) | (col == m_frameFilter->m_numCols - 1))
    {
        copySizeY += lumaMarginX;
        copySizeC += chromaMarginX;
    }

    // First column need extension left padding area and first CU
    if (col == 0)
    {
        pixY -= lumaMarginX;
        pixU -= chromaMarginX;
        pixV -= chromaMarginX;
    }
4

0 に答える 0