Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
128
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.85 KB | None | 0 0
  1. #define LHFILTER(src) ((((src)[0]+(src)[1])*19 >> 1)-((src)[-1]+(src)[2 ])*2+(((src)[-2 ]+(src)[3 ])>>1)+8>>4)
  2. #define LVFILTER(src, i) ((((src)[0]+(src)[i])*19 >> 1)-((src)[-i]+(src)[2*i])*2+(((src)[-2*i]+(src)[3*i])>>1)+8>>4)
  3.  
  4. static void bink2f_y_mc(Bink2Context *c, int x, int y,
  5. uint8_t *dst, int stride,
  6. uint8_t *src, int sstride,
  7. int width, int height,
  8. int mv_x, int mv_y, int mode)
  9. {
  10. uint8_t *msrc;
  11.  
  12. msrc = src + mv_x + mv_y * sstride;
  13.  
  14. ff_dlog(NULL, "%d: %dx%d | %dx%d\n", mode, x, y, mv_x, mv_y);
  15. if (mode == 0) {
  16. copy_block16(dst, msrc, stride, sstride, 16);
  17. } else if (mode == 1) {
  18. for (int j = 0; j < 16; j++) {
  19. for (int i = 0; i < 16; i++)
  20. dst[i] = av_clip_uint8(LHFILTER(msrc + i));
  21. dst += stride;
  22. msrc += sstride;
  23. }
  24. } else if (mode == 2) {
  25. for (int j = 0; j < 16; j++) {
  26. for (int i = 0; i < 16; i++)
  27. dst[i*stride] = av_clip_uint8(LVFILTER(msrc + i*sstride, sstride));
  28. dst += 1;
  29. msrc += 1;
  30. }
  31. } else if (mode == 3) {
  32. uint8_t temph[21*21] = { 0 };
  33.  
  34. for (int j = 0; j < 16; j++) {
  35. for (int i = 0; i < 21; i++)
  36. temph[j*21+i+42] = av_clip_uint8(LHFILTER(msrc + i));
  37. msrc += sstride;
  38. }
  39.  
  40. for (int j = 0; j < 16; j++) {
  41. for (int i = 0; i < 16; i++)
  42. dst[i*stride] = av_clip_uint8(LVFILTER(temph + i*21+42, 21));
  43. dst += 1;
  44. }
  45. }
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement