# Source: webWorker/decoders/decoderAbstract.js

    export default class Decoder {
      constructor () {
        this.codec = undefined
        this.decoder = undefined
      }

      _initialize () {
        return Promise.resolve()
      }

      /** Decode image.
       *
       * @param {Uint8Array} byteArray - Image array
       *
       * @returns {Promise<object>} decoded array and frame information
       */
      async decode (byteArray) {
        if (!this.codec) {
          await this._initialize()
        }

        const encodedBuffer = this.decoder.getEncodedBuffer(byteArray.length)
        encodedBuffer.set(byteArray)
        this.decoder.decode()

        return {
          frameBuffer: this.decoder.getDecodedBuffer(),
          frameInfo: this.decoder.getFrameInfo()
        }
      }
    }