FFmpeg
Loading...
Searching...
No Matches
mvs.h
Go to the documentation of this file.
1/*
2 * VVC motion vector decoder
3 *
4 * Copyright (C) 2023 Nuo Mi
5 *
6 * This file is part of FFmpeg.
7 *
8 * FFmpeg is free software; you can redistribute it and/or
9 * modify it under the terms of the GNU Lesser General Public
10 * License as published by the Free Software Foundation; either
11 * version 2.1 of the License, or (at your option) any later version.
12 *
13 * FFmpeg is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16 * Lesser General Public License for more details.
17 *
18 * You should have received a copy of the GNU Lesser General Public
19 * License along with FFmpeg; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21 */
22
23#ifndef AVCODEC_VVC_MVS_H
24#define AVCODEC_VVC_MVS_H
25
26#include "ctu.h"
27
28void ff_vvc_round_mv(Mv *mv, int lshift, int rshift);
29void ff_vvc_clip_mv(Mv *mv);
30void ff_vvc_mv_scale(Mv *dst, const Mv *src, int td, int tb);
31void ff_vvc_luma_mv_merge_mode(VVCLocalContext *lc, int merge_idx, int ciip_flag, MvField *mv);
32void ff_vvc_luma_mv_merge_gpm(VVCLocalContext *lc, const int merge_gpm_idx[2], MvField *mv);
33int ff_vvc_luma_mv_merge_ibc(VVCLocalContext *lc, int merge_idx, Mv *mv);
34void ff_vvc_mvp(VVCLocalContext *lc, const int *mvp_lx_flag, const int amvr_shift, MotionInfo *mi);
35int ff_vvc_mvp_ibc(VVCLocalContext *lc, int mvp_l0_flag, int amvr_shift, Mv *mv);
36void ff_vvc_sb_mv_merge_mode(VVCLocalContext *lc, int merge_subblock_idx, PredictionUnit *pu);
37void ff_vvc_affine_mvp(VVCLocalContext *lc, const int *mvp_lx_flag, const int amvr_shift, MotionInfo* mi);
39void ff_vvc_store_mv(const VVCLocalContext *lc, const MotionInfo *mi);
40void ff_vvc_store_mvf(const VVCLocalContext *lc, const MvField *mvf);
41void ff_vvc_store_gpm_mvf(const VVCLocalContext *lc, const PredictionUnit* pu);
44MvField* ff_vvc_get_mvf(const VVCFrameContext *fc, const int x0, const int y0);
45void ff_vvc_set_mvf(const VVCLocalContext *lc, const int x0, const int y0, const int w, const int h, const MvField *mvf);
46void ff_vvc_set_intra_mvf(const VVCLocalContext *lc, bool dmvr, PredFlag pf, bool ciip_flag);
47
48#endif //AVCODEC_VVC_MVS_H
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
Definition dsp.h:87
static const uint16_t fc[]
Definition dcaenc.h:43
PredFlag
Definition hevcdec.h:117
static void FUNC dmvr(int16_t *dst, const uint8_t *_src, const ptrdiff_t _src_stride, const int height, const intptr_t mx, const intptr_t my, const int width)
static const int8_t mv[256][2]
Definition 4xm.c:81
uint8_t w
Definition llvidencdsp.c:39
void ff_vvc_store_gpm_mvf(const VVCLocalContext *lc, const PredictionUnit *pu)
Definition mvs.c:457
int ff_vvc_no_backward_pred_flag(const VVCLocalContext *lc)
Definition mvs.c:121
void ff_vvc_store_mvf(const VVCLocalContext *lc, const MvField *mvf)
Definition mvs.c:502
void ff_vvc_mvp(VVCLocalContext *lc, const int *mvp_lx_flag, const int amvr_shift, MotionInfo *mi)
Definition mvs.c:1614
void ff_vvc_round_mv(Mv *mv, int lshift, int rshift)
Definition mvs.c:1888
int ff_vvc_luma_mv_merge_ibc(VVCLocalContext *lc, int merge_idx, Mv *mv)
Definition mvs.c:1744
int ff_vvc_mvp_ibc(VVCLocalContext *lc, int mvp_l0_flag, int amvr_shift, Mv *mv)
Definition mvs.c:1735
void ff_vvc_luma_mv_merge_gpm(VVCLocalContext *lc, const int merge_gpm_idx[2], MvField *mv)
Definition mvs.c:842
void ff_vvc_update_hmvp(VVCLocalContext *lc, const MotionInfo *mi)
Definition mvs.c:1941
MvField * ff_vvc_get_mvf(const VVCFrameContext *fc, const int x0, const int y0)
Definition mvs.c:1960
void ff_vvc_luma_mv_merge_mode(VVCLocalContext *lc, int merge_idx, int ciip_flag, MvField *mv)
Definition mvs.c:829
void ff_vvc_clip_mv(Mv *mv)
Definition mvs.c:1900
void ff_vvc_mv_scale(Mv *dst, const Mv *src, int td, int tb)
Definition mvs.c:71
void ff_vvc_set_intra_mvf(const VVCLocalContext *lc, bool dmvr, PredFlag pf, bool ciip_flag)
Definition mvs.c:271
void ff_vvc_sb_mv_merge_mode(VVCLocalContext *lc, int merge_subblock_idx, PredictionUnit *pu)
Definition mvs.c:1424
void ff_vvc_store_sb_mvs(const VVCLocalContext *lc, PredictionUnit *pu)
Definition mvs.c:412
void ff_vvc_set_mvf(const VVCLocalContext *lc, const int x0, const int y0, const int w, const int h, const MvField *mvf)
Definition mvs.c:256
void ff_vvc_store_mv(const VVCLocalContext *lc, const MotionInfo *mi)
Definition mvs.c:508
void ff_vvc_affine_mvp(VVCLocalContext *lc, const int *mvp_lx_flag, const int amvr_shift, MotionInfo *mi)
Definition mvs.c:1873
Definition hevcdec.h:303
#define src
Definition vp8dsp.c:248
#define mi