utils.js 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. // helper functions
  2. /**
  3. * Provides requestAnimationFrame in a cross browser way.
  4. */
  5. window.requestAnimFrame = (function() {
  6. return window.requestAnimationFrame ||
  7. window.webkitRequestAnimationFrame ||
  8. window.mozRequestAnimationFrame ||
  9. window.oRequestAnimationFrame ||
  10. window.msRequestAnimationFrame ||
  11. function(/* function FrameRequestCallback */ callback, /* DOMElement Element */ element) {
  12. return window.setTimeout(callback, 1000/60);
  13. };
  14. })();
  15. /**
  16. * Provides cancelRequestAnimationFrame in a cross browser way.
  17. */
  18. window.cancelRequestAnimFrame = (function() {
  19. return window.cancelAnimationFrame ||
  20. window.webkitCancelRequestAnimationFrame ||
  21. window.mozCancelRequestAnimationFrame ||
  22. window.oCancelRequestAnimationFrame ||
  23. window.msCancelRequestAnimationFrame ||
  24. window.clearTimeout;
  25. })();
  26. // video support utility functions
  27. function supports_video() {
  28. return !!document.createElement('video').canPlayType;
  29. }
  30. function supports_h264_baseline_video() {
  31. if (!supports_video()) { return false; }
  32. var v = document.createElement("video");
  33. return v.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"');
  34. }
  35. function supports_ogg_theora_video() {
  36. if (!supports_video()) { return false; }
  37. var v = document.createElement("video");
  38. return v.canPlayType('video/ogg; codecs="theora, vorbis"');
  39. }