1. 程式人生 > >NV12剪下區域時的對齊程式碼

NV12剪下區域時的對齊程式碼

如果沒有對齊,底邊有時顏色會有點問題(比如綠色)。

所以專門寫了程式碼進行對齊。

#define NV12_PACK 2

//如果沒有對齊,NV12無法生成JPG,或者底邊顏色異常。對齊時要避免剪下區域變小。
int clipNv12Pack(int* pnClipLeft, int* pnClipTop, int* pnClipWidth, int* pnClipHeight)
{
    const int clipLeft  = *pnClipLeft;
    const int clipTop   = *pnClipTop;
    const int clipWidth = *pnClipWidth;
    const int clipHeight= *pnClipHeight;

    if (*pnClipLeft % NV12_PACK != 0)
    {
        *pnClipLeft  = clipLeft/NV12_PACK*NV12_PACK;
        *pnClipWidth = clipWidth+(clipLeft-*pnClipLeft);
    }

    *pnClipWidth  = (*pnClipWidth+NV12_PACK-1)/NV12_PACK*NV12_PACK;

    if (*pnClipTop % NV12_PACK != 0)
    {
        *pnClipTop   = clipTop/NV12_PACK*NV12_PACK;
        *pnClipHeight= clipHeight+(clipTop-*pnClipTop);
    }

    *pnClipHeight = (*pnClipHeight+NV12_PACK-1)/NV12_PACK*NV12_PACK;

    return 0;
}