FFMPEG 모션 보상 및 검색

FFMPEG 모션 보상 및 검색

FFMPEG의 모션 감지 부분을 수정하려고 합니다. 내가 원하는 것은 검색 공간을 확장하여 매크로블록이 프레임의 가장 오른쪽 가장자리에 닿을 때마다 블록이 연결된 것처럼 가장 왼쪽으로 이동하도록 하는 것입니다(예제 비디오에서는 오른쪽 가장자리). 실제로는 왼쪽 가장자리의 연속입니다). 누군가가 FFMPEG 소스 코드, x265 또는 x264 내에서 정확히 수정할 수 있는 위치를 알려줄 수 있습니까?

여기에 이미지 설명을 입력하세요

나는 H265를 예로 들었다.여기. 아래와 같이 가능한 블록 크기를 훌륭하게 지정하는 파일이 있지만 motion.c프레임을 순회하는 특정 루프를 찾을 수 없습니다. 도움을 주시면 감사하겠습니다.

#define SETUP_SCALE(W, H) \
    sizeScale[LUMA_ ## W ## x ## H] = (H * H) >> 4;
    SETUP_SCALE(4, 4);
    SETUP_SCALE(8, 8);
    SETUP_SCALE(8, 4);
    SETUP_SCALE(4, 8);
    SETUP_SCALE(16, 16);
    SETUP_SCALE(16, 8);
    SETUP_SCALE(8, 16);
    SETUP_SCALE(16, 12);
    SETUP_SCALE(12, 16);
    SETUP_SCALE(4, 16);
    SETUP_SCALE(16, 4);
    SETUP_SCALE(32, 32);
    SETUP_SCALE(32, 16);
    SETUP_SCALE(16, 32);
    SETUP_SCALE(32, 24);
    SETUP_SCALE(24, 32);
    SETUP_SCALE(32, 8);
    SETUP_SCALE(8, 32);
    SETUP_SCALE(64, 64);
    SETUP_SCALE(64, 32);
    SETUP_SCALE(32, 64);
    SETUP_SCALE(64, 48);
    SETUP_SCALE(48, 64);
    SETUP_SCALE(64, 16);
    SETUP_SCALE(16, 64);
#undef SETUP_SCALE

기본 의사 코드는 다음과 같아야 합니다.

block.rightX ==block.width; // a block initiates from left part of the frame
while(block.leftX <=frame.width) //until it hits the right most edge (assuming it moves from left to right for search)
for (int i=0;i<block.width();i++)
    for(int j=0;j< i<block.height();j++)
        block[i][j] = frame_pixel [(block.leftX+i) % frame.width] [block.leftY+j] //if the block's width passes frame's width, we just take the mod.

관련 정보