docs: function VideoBaseTexture(source, scaleMode)
  {
      if (!source)
      {
          throw new Error('No video source element specified.');
      }
  
      // hook in here to check if video is already available.
      // BaseTexture looks for a source.complete boolean, plus width & height.
  
      if ((source.readyState === source.HAVE_ENOUGH_DATA || source.readyState === source.HAVE_FUTURE_DATA) && source.width && source.height)
      {
          source.complete = true;
      }
  
      BaseTexture.call(this, source, scaleMode);
  
      /**
       * Should the base texture automatically update itself, set to true by default
       *
       * @member {boolean}
       * @default true
       */
      this.autoUpdate = false;
  
      this._onUpdate = this._onUpdate.bind(this);
      this._onCanPlay = this._onCanPlay.bind(this);
  
      if (!source.complete)
      {
          source.addEventListener('canplay', this._onCanPlay);
          source.addEventListener('canplaythrough', this._onCanPlay);
  
          // started playing..
          source.addEventListener('play', this._onPlayStart.bind(this));
          source.addEventListener('pause', this._onPlayStop.bind(this));
      }
  
      this.__loaded = false;
  }