Guest User

Untitled

a guest
Oct 21st, 2017
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.65 KB | None | 0 0
  1. /**
  2. * @def GET_MVDATA_INT(_dmv_x, _dmv_y)
  3. * @brief Get MV differentials for interlaced picture
  4. * @Ref 10.7.3.6 Decoding Motion Vector Differential (also 10.3.5.4.2.1)
  5. * @param _dmv_x Horizontal differential for decoded MV
  6. * @param _dmv_y Vertical differential for decoded MV
  7. */
  8. #define GET_MVDATA_INT(_dmv_x, _dmv_y, _pred_flag, bits, fieldmode, esc) \
  9. index = get_vlc2(gb, v->imv_vlc->table, \
  10. VC1_1REF_MVDATA_VLC_BITS, 2); \
  11. if (index == esc) { \
  12. _dmv_x = get_bits(gb, v->k_x); \
  13. _dmv_y = get_bits(gb, v->k_y); \
  14. if (fieldmode) { \
  15. _pred_flag = _dmv_y & 1; \
  16. _dmv_y = (_dmv_y + _pred_flad) >> 1; \
  17. } \
  18. } \
  19. else { \
  20. if (extend_x) offs_tab = offset_table2; \
  21. else offs_tab = offset_table1; \
  22. index1 = (index + 1) % 9; \
  23. if (index1 != 0) { \
  24. val = get_bits(gb, index1 + extend_x); \
  25. sign = 0 -(val & 1); \
  26. _dmv_x = (sign ^ ((val >> 1) + offs_tab[index1])) - sign; \
  27. } else _dmv_x = 0; \
  28. if (extend_y) offs_tab = offset_table2; \
  29. else offs_tab = offset_table1; \
  30. index1 = (index + 1) / 9; \
  31. if (index1 > fieldmode) { \
  32. val = get_bits(gb, (index1 + (extend_y << 1)) >> 1); \
  33. sign = 0 - (val & 1); \
  34. _dmv_y = (sign ^ ((val >> 1) + offs_tab[index1 >> fieldmode])) - sign; \
  35. } else _dmv_y = 0; \
  36. _pred_flag = index1 & 1; \
  37. }
  38.  
  39. #define GET_MVDATA_INTFI1REF(_dmv_x, _dmv_y) GET_MVDATA_INT(_dmv_x, _dmv_y, NULL, VC1_1REF_MVDATA_VLC_BITS, 0, 71)
  40. #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)
  41.  
  42. #define GET_MVDATA_INTFR(_dmv_x, _dmv_y) GET_MVDATA_INTFI1REF(_dmv_x, _dmv_y)
Add Comment
Please, Sign In to add comment