constructor(fieldNum, channelNum) {
    /**
     * Current Caption Type.
     * @public {!shaka.cea.Cea608DataChannel.CaptionType}
     */
    this.type_ = shaka.cea.Cea608DataChannel.CaptionType.NONE;

    /**
     * Text buffer for CEA-608 "text mode". Although, we don't emit text mode.
     * So, this buffer serves as a no-op placeholder, just in case we receive
     * captions that toggle text mode.
     * @private @const {!shaka.cea.Cea608Memory}
     */
    this.text_ =
        new shaka.cea.Cea608Memory(fieldNum, channelNum);

    /**
     * Displayed memory.
     * @private {!shaka.cea.Cea608Memory}
     */
    this.displayedMemory_ =
        new shaka.cea.Cea608Memory(fieldNum, channelNum);

    /**
     * Non-displayed memory.
     * @private {!shaka.cea.Cea608Memory}
     */
    this.nonDisplayedMemory_ =
        new shaka.cea.Cea608Memory(fieldNum, channelNum);

    /**
     * Points to current buffer.
     * @private {!shaka.cea.Cea608Memory}
     */
    this.curBuf_ = this.nonDisplayedMemory_;

    /**
     * End time of the previous caption, serves as start time of next caption.
     * @private {number}
     */
    this.prevEndTime_ = 0;

    /**
     * Last control pair, 16 bits representing byte 1 and byte 2
     * @private {?number}
     */
    this.lastCp_ = null;
  }
@param {number} fieldNum Field number.
@param {number} channelNum Channel number.