clock.js 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. "use strict";
  2. /**
  3. * mux.js
  4. *
  5. * Copyright (c) Brightcove
  6. * Licensed Apache-2.0 https://github.com/videojs/mux.js/blob/master/LICENSE
  7. */
  8. var ONE_SECOND_IN_TS = 90000,
  9. // 90kHz clock
  10. secondsToVideoTs,
  11. secondsToAudioTs,
  12. videoTsToSeconds,
  13. audioTsToSeconds,
  14. audioTsToVideoTs,
  15. videoTsToAudioTs,
  16. metadataTsToSeconds;
  17. secondsToVideoTs = function secondsToVideoTs(seconds) {
  18. return seconds * ONE_SECOND_IN_TS;
  19. };
  20. secondsToAudioTs = function secondsToAudioTs(seconds, sampleRate) {
  21. return seconds * sampleRate;
  22. };
  23. videoTsToSeconds = function videoTsToSeconds(timestamp) {
  24. return timestamp / ONE_SECOND_IN_TS;
  25. };
  26. audioTsToSeconds = function audioTsToSeconds(timestamp, sampleRate) {
  27. return timestamp / sampleRate;
  28. };
  29. audioTsToVideoTs = function audioTsToVideoTs(timestamp, sampleRate) {
  30. return secondsToVideoTs(audioTsToSeconds(timestamp, sampleRate));
  31. };
  32. videoTsToAudioTs = function videoTsToAudioTs(timestamp, sampleRate) {
  33. return secondsToAudioTs(videoTsToSeconds(timestamp), sampleRate);
  34. };
  35. /**
  36. * Adjust ID3 tag or caption timing information by the timeline pts values
  37. * (if keepOriginalTimestamps is false) and convert to seconds
  38. */
  39. metadataTsToSeconds = function metadataTsToSeconds(timestamp, timelineStartPts, keepOriginalTimestamps) {
  40. return videoTsToSeconds(keepOriginalTimestamps ? timestamp : timestamp - timelineStartPts);
  41. };
  42. module.exports = {
  43. ONE_SECOND_IN_TS: ONE_SECOND_IN_TS,
  44. secondsToVideoTs: secondsToVideoTs,
  45. secondsToAudioTs: secondsToAudioTs,
  46. videoTsToSeconds: videoTsToSeconds,
  47. audioTsToSeconds: audioTsToSeconds,
  48. audioTsToVideoTs: audioTsToVideoTs,
  49. videoTsToAudioTs: videoTsToAudioTs,
  50. metadataTsToSeconds: metadataTsToSeconds
  51. };