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.

関連情報