#include "internal.h"
#include "avcodec.h"
#include "h264dec.h"
#include "mpegutils.h"
#include "libavutil/avassert.h"
Go to the source code of this file.
|
static av_always_inline int | fetch_diagonal_mv (const H264Context *h, H264SliceContext *sl, const int16_t **C, int i, int list, int part_width) |
|
static av_always_inline void | pred_motion (const H264Context *const h, H264SliceContext *sl, int n, int part_width, int list, int ref, int *const mx, int *const my) |
| Get the predicted MV. More...
|
|
static av_always_inline void | pred_16x8_motion (const H264Context *const h, H264SliceContext *sl, int n, int list, int ref, int *const mx, int *const my) |
| Get the directionally predicted 16x8 MV. More...
|
|
static av_always_inline void | pred_8x16_motion (const H264Context *const h, H264SliceContext *sl, int n, int list, int ref, int *const mx, int *const my) |
| Get the directionally predicted 8x16 MV. More...
|
|
static av_always_inline void | pred_pskip_motion (const H264Context *const h, H264SliceContext *sl) |
|
static void | fill_decode_neighbors (const H264Context *h, H264SliceContext *sl, int mb_type) |
|
static void | fill_decode_caches (const H264Context *h, H264SliceContext *sl, int mb_type) |
|
static void av_unused | decode_mb_skip (const H264Context *h, H264SliceContext *sl) |
| decodes a P_SKIP or B_SKIP macroblock More...
|
|
H.264 / AVC / MPEG-4 part10 motion vector prediction.
- Author
- Michael Niedermayer micha.nosp@m.elni.nosp@m.@gmx..nosp@m.at
Definition in file h264_mvpred.h.
◆ SET_DIAG_MV
#define SET_DIAG_MV |
( |
|
MV_OP, |
|
|
|
REF_OP, |
|
|
|
XY, |
|
|
|
Y4 |
|
) |
| |
Value: const int xy = XY, y4 = Y4; \
const
int mb_type = mb_types[xy + (y4 >> 2) *
h->mb_stride]; \
mv =
h->cur_pic_ptr->motion_val[
list][
h->mb2b_xy[xy] + 3 + y4 *
h->b_stride]; \
return
h->cur_pic_ptr->ref_index[
list][4 * xy + 1 + (y4 & ~1)] REF_OP;
◆ FIX_MV_MBAFF
#define FIX_MV_MBAFF |
( |
|
type, |
|
|
|
refn, |
|
|
|
mvn, |
|
|
|
idx |
|
) |
| |
Value:
refn <<= 1; \
AV_COPY32(mvbuf[idx], mvn); \
mvbuf[idx][1] /= 2; \
mvn = mvbuf[idx]; \
} \
} else { \
refn >>= 1; \
AV_COPY32(mvbuf[idx], mvn); \
mvbuf[idx][1] *= 2; \
mvn = mvbuf[idx]; \
} \
} \
}
Definition at line 238 of file h264_mvpred.h.
◆ MAP_MVS
Value:
MAP_F2F(
scan8[0] + 0 - 1 * 8, top_type) \
MAP_F2F(
scan8[0] + 1 - 1 * 8, top_type) \
MAP_F2F(
scan8[0] + 2 - 1 * 8, top_type) \
MAP_F2F(
scan8[0] + 3 - 1 * 8, top_type) \
MAP_F2F(
scan8[0] + 4 - 1 * 8, topright_type) \
MAP_F2F(
scan8[0] - 1 + 0 * 8, left_type[
LTOP]) \
MAP_F2F(
scan8[0] - 1 + 1 * 8, left_type[
LTOP]) \
MAP_F2F(
scan8[0] - 1 + 2 * 8, left_type[
LBOT]) \
MAP_F2F(
scan8[0] - 1 + 3 * 8, left_type[
LBOT])
◆ MAP_F2F [1/2]
#define MAP_F2F |
( |
|
idx, |
|
|
|
mb_type |
|
) |
| |
Value:
sl->ref_cache[
list][idx] *= 2; \
sl->mv_cache[
list][idx][1] /= 2; \
sl->mvd_cache[
list][idx][1] >>= 1; \
}
◆ MAP_F2F [2/2]
#define MAP_F2F |
( |
|
idx, |
|
|
|
mb_type |
|
) |
| |
Value:
sl->ref_cache[
list][idx] >>= 1; \
sl->mv_cache[
list][idx][1] *= 2; \
sl->mvd_cache[
list][idx][1] <<= 1; \
}
◆ fetch_diagonal_mv()
◆ pred_motion()
◆ pred_16x8_motion()
◆ pred_8x16_motion()
◆ pred_pskip_motion()
◆ fill_decode_neighbors()
◆ fill_decode_caches()
◆ decode_mb_skip()