clock.js 1.5 KB

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