Home Reference Source

src/utils/output-filter.ts

  1. import { CaptionScreen } from './cea-608-parser';
  2. import type TimelineController from '../controller/timeline-controller';
  3.  
  4. export default class OutputFilter {
  5. private timelineController: TimelineController;
  6. private cueRanges: Array<[number, number]> = [];
  7. private trackName: string;
  8. private startTime: number | null = null;
  9. private endTime: number | null = null;
  10. private screen: CaptionScreen | null = null;
  11.  
  12. constructor (timelineController: TimelineController, trackName: string) {
  13. this.timelineController = timelineController;
  14. this.trackName = trackName;
  15. }
  16.  
  17. dispatchCue () {
  18. if (this.startTime === null) {
  19. return;
  20. }
  21.  
  22. this.timelineController.addCues(this.trackName, this.startTime, this.endTime as number, this.screen as CaptionScreen, this.cueRanges);
  23. this.startTime = null;
  24. }
  25.  
  26. newCue (startTime: number, endTime: number, screen: CaptionScreen) {
  27. if (this.startTime === null || this.startTime > startTime) {
  28. this.startTime = startTime;
  29. }
  30.  
  31. this.endTime = endTime;
  32. this.screen = screen;
  33. this.timelineController.createCaptionsTrack(this.trackName);
  34. }
  35.  
  36. reset () {
  37. this.cueRanges = [];
  38. }
  39. }