Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * @def GET_MVDATA_INT(_dmv_x, _dmv_y)
- * @brief Get MV differentials for interlaced picture
- * @Ref 10.7.3.6 Decoding Motion Vector Differential (also 10.3.5.4.2.1)
- * @param _dmv_x Horizontal differential for decoded MV
- * @param _dmv_y Vertical differential for decoded MV
- */
- #define GET_MVDATA_INT(_dmv_x, _dmv_y, _pred_flag, bits, fieldmode, esc) \
- index = get_vlc2(gb, v->imv_vlc->table, \
- VC1_1REF_MVDATA_VLC_BITS, 2); \
- if (index == esc) { \
- _dmv_x = get_bits(gb, v->k_x); \
- _dmv_y = get_bits(gb, v->k_y); \
- if (fieldmode) { \
- _pred_flag = _dmv_y & 1; \
- _dmv_y = (_dmv_y + _pred_flad) >> 1; \
- } \
- } \
- else { \
- if (extend_x) offs_tab = offset_table2; \
- else offs_tab = offset_table1; \
- index1 = (index + 1) % 9; \
- if (index1 != 0) { \
- val = get_bits(gb, index1 + extend_x); \
- sign = 0 -(val & 1); \
- _dmv_x = (sign ^ ((val >> 1) + offs_tab[index1])) - sign; \
- } else _dmv_x = 0; \
- if (extend_y) offs_tab = offset_table2; \
- else offs_tab = offset_table1; \
- index1 = (index + 1) / 9; \
- if (index1 > fieldmode) { \
- val = get_bits(gb, (index1 + (extend_y << 1)) >> 1); \
- sign = 0 - (val & 1); \
- _dmv_y = (sign ^ ((val >> 1) + offs_tab[index1 >> fieldmode])) - sign; \
- } else _dmv_y = 0; \
- _pred_flag = index1 & 1; \
- }
- #define GET_MVDATA_INTFI1REF(_dmv_x, _dmv_y) GET_MVDATA_INT(_dmv_x, _dmv_y, NULL, VC1_1REF_MVDATA_VLC_BITS, 0, 71)
- #define GET_MVDATA_INTFI2REF(_dmv_x, _dmv_y, _pred_flag) GET_MVDATA_INT(_dmv_x, _dmv_y, _pred_flag, VC1_2REF_MVDATA_VLC_BITS, 0, 125)
- #define GET_MVDATA_INTFR(_dmv_x, _dmv_y) GET_MVDATA_INTFI1REF(_dmv_x, _dmv_y)
Add Comment
Please, Sign In to add comment