PageRenderTime 35ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/H264Dec/paint_1.js

http://github.com/mbebenita/Broadway
JavaScript | 51 lines | 47 code | 4 blank | 0 comment | 4 complexity | cf628237dbbcf5f5fb562f4b599d3cb1 MD5 | raw file
Possible License(s): BSD-3-Clause
  1. function getSurface() {
  2. var surface = SDL.surfaces[SDL.screen];
  3. if (!surface.image) {
  4. surface.image = surface.ctx.getImageData(0, 0, surface.width, surface.height);
  5. var data = surface.image.data;
  6. var num = data.length;
  7. for (var i = 0; i < num/4; i++) {
  8. data[i*4+3] = 255; // opacity, as canvases blend alpha
  9. }
  10. }
  11. return surface;
  12. }
  13. Module['paint'] = function ($luma, $cb, $cr, w, h) {
  14. for (var y1,y2,u,v,ruv,guv,buv,j,w_2=w>>1,W=w*4, surface = getSurface(), d=surface.image.data, r=0; h-=2;) {
  15. for (j=w_2; j--;) {
  16. u = IHEAP[$cr++];
  17. v = IHEAP[$cb++];
  18. ruv = 409*u-56992;
  19. guv = 34784-208*u-100*v;
  20. buv = 516*v-70688;
  21. y2 = IHEAP[$luma+w]*298;
  22. y1 = IHEAP[$luma++]*298;
  23. d[r+W] = y2+ruv>>8;
  24. d[r++] = y1+ruv>>8;
  25. d[r+W] = y2+guv>>8;
  26. d[r++] = y1+guv>>8;
  27. d[r+W] = y2+buv>>8;
  28. d[r++] = y1+buv>>8;
  29. r++;
  30. y2 = IHEAP[$luma+w]*298;
  31. y1 = IHEAP[$luma++]*298;
  32. d[r+W] = y2+ruv>>8;
  33. d[r++] = y1+ruv>>8;
  34. d[r+W] = y2+guv>>8;
  35. d[r++] = y1+guv>>8;
  36. d[r+W] = y2+buv>>8;
  37. d[r++] = y1+buv>>8;
  38. r++;
  39. }
  40. r+=W;
  41. $luma+=w;
  42. }
  43. surface.ctx.putImageData(surface.image, 0, 0 );
  44. }
  45. _paint = function ($luma, $cb, $cr, w, h) {
  46. Module['paint'] ($luma, $cb, $cr, w, h);
  47. }