// Copyright (c) 2022 Tencent. All rights reserved.
// Autogenerated from Pigeon (v9.2.5), do not edit directly.
// See also: https://pub.dev/packages/pigeon

package com.tencent.vod.flutter.messages;

import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import io.flutter.plugin.common.BasicMessageChannel;
import io.flutter.plugin.common.BinaryMessenger;
import io.flutter.plugin.common.MessageCodec;
import io.flutter.plugin.common.StandardMessageCodec;
import java.io.ByteArrayOutputStream;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/** Generated class from Pigeon. */
@SuppressWarnings({"unused", "unchecked", "CodeBlock2Expr", "RedundantSuppression", "serial"})
public class FtxMessages {

  /** Error class for passing custom error details to Flutter via a thrown PlatformException. */
  public static class FlutterError extends RuntimeException {

    /** The error code. */
    public final String code;

    /** The error details. Must be a datatype supported by the api codec. */
    public final Object details;

    public FlutterError(@NonNull String code, @Nullable String message, @Nullable Object details) 
    {
      super(message);
      this.code = code;
      this.details = details;
    }
  }

  @NonNull
  protected static ArrayList<Object> wrapError(@NonNull Throwable exception) {
    ArrayList<Object> errorList = new ArrayList<Object>(3);
    if (exception instanceof FlutterError) {
      FlutterError error = (FlutterError) exception;
      errorList.add(error.code);
      errorList.add(error.getMessage());
      errorList.add(error.details);
    } else {
      errorList.add(exception.toString());
      errorList.add(exception.getClass().getSimpleName());
      errorList.add(
        "Cause: " + exception.getCause() + ", Stacktrace: " + Log.getStackTraceString(exception));
    }
    return errorList;
  }

  /**
   * Pigeon original component, used to generate native communication code for `messages`.
   * The generation command is as follows. When using the generation command,
   * the two import statements above need to be implemented or commented out.
   *
   * pigeon原始原件，由此文件生成messages原生通信代码
   * 生成命令如下，使用生成命令的时候，需要实现注释掉以上两个import导入
   *
   * Generated class from Pigeon that represents data sent in messages.
   */
  public static final class PlayerMsg {
    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    public static final class Builder {

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      public @NonNull PlayerMsg build() {
        PlayerMsg pigeonReturn = new PlayerMsg();
        pigeonReturn.setPlayerId(playerId);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(1);
      toListResult.add(playerId);
      return toListResult;
    }

    static @NonNull PlayerMsg fromList(@NonNull ArrayList<Object> list) {
      PlayerMsg pigeonResult = new PlayerMsg();
      Object playerId = list.get(0);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class LicenseMsg {
    private @Nullable String licenseUrl;

    public @Nullable String getLicenseUrl() {
      return licenseUrl;
    }

    public void setLicenseUrl(@Nullable String setterArg) {
      this.licenseUrl = setterArg;
    }

    private @Nullable String licenseKey;

    public @Nullable String getLicenseKey() {
      return licenseKey;
    }

    public void setLicenseKey(@Nullable String setterArg) {
      this.licenseKey = setterArg;
    }

    public static final class Builder {

      private @Nullable String licenseUrl;

      public @NonNull Builder setLicenseUrl(@Nullable String setterArg) {
        this.licenseUrl = setterArg;
        return this;
      }

      private @Nullable String licenseKey;

      public @NonNull Builder setLicenseKey(@Nullable String setterArg) {
        this.licenseKey = setterArg;
        return this;
      }

      public @NonNull LicenseMsg build() {
        LicenseMsg pigeonReturn = new LicenseMsg();
        pigeonReturn.setLicenseUrl(licenseUrl);
        pigeonReturn.setLicenseKey(licenseKey);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(2);
      toListResult.add(licenseUrl);
      toListResult.add(licenseKey);
      return toListResult;
    }

    static @NonNull LicenseMsg fromList(@NonNull ArrayList<Object> list) {
      LicenseMsg pigeonResult = new LicenseMsg();
      Object licenseUrl = list.get(0);
      pigeonResult.setLicenseUrl((String) licenseUrl);
      Object licenseKey = list.get(1);
      pigeonResult.setLicenseKey((String) licenseKey);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class TXPlayInfoParamsPlayerMsg {
    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    private @Nullable Long appId;

    public @Nullable Long getAppId() {
      return appId;
    }

    public void setAppId(@Nullable Long setterArg) {
      this.appId = setterArg;
    }

    private @Nullable String fileId;

    public @Nullable String getFileId() {
      return fileId;
    }

    public void setFileId(@Nullable String setterArg) {
      this.fileId = setterArg;
    }

    private @Nullable String psign;

    public @Nullable String getPsign() {
      return psign;
    }

    public void setPsign(@Nullable String setterArg) {
      this.psign = setterArg;
    }

    private @Nullable String url;

    public @Nullable String getUrl() {
      return url;
    }

    public void setUrl(@Nullable String setterArg) {
      this.url = setterArg;
    }

    public static final class Builder {

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      private @Nullable Long appId;

      public @NonNull Builder setAppId(@Nullable Long setterArg) {
        this.appId = setterArg;
        return this;
      }

      private @Nullable String fileId;

      public @NonNull Builder setFileId(@Nullable String setterArg) {
        this.fileId = setterArg;
        return this;
      }

      private @Nullable String psign;

      public @NonNull Builder setPsign(@Nullable String setterArg) {
        this.psign = setterArg;
        return this;
      }

      private @Nullable String url;

      public @NonNull Builder setUrl(@Nullable String setterArg) {
        this.url = setterArg;
        return this;
      }

      public @NonNull TXPlayInfoParamsPlayerMsg build() {
        TXPlayInfoParamsPlayerMsg pigeonReturn = new TXPlayInfoParamsPlayerMsg();
        pigeonReturn.setPlayerId(playerId);
        pigeonReturn.setAppId(appId);
        pigeonReturn.setFileId(fileId);
        pigeonReturn.setPsign(psign);
        pigeonReturn.setUrl(url);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(5);
      toListResult.add(playerId);
      toListResult.add(appId);
      toListResult.add(fileId);
      toListResult.add(psign);
      toListResult.add(url);
      return toListResult;
    }

    static @NonNull TXPlayInfoParamsPlayerMsg fromList(@NonNull ArrayList<Object> list) {
      TXPlayInfoParamsPlayerMsg pigeonResult = new TXPlayInfoParamsPlayerMsg();
      Object playerId = list.get(0);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      Object appId = list.get(1);
      pigeonResult.setAppId((appId == null) ? null : ((appId instanceof Integer) ? (Integer) appId : (Long) appId));
      Object fileId = list.get(2);
      pigeonResult.setFileId((String) fileId);
      Object psign = list.get(3);
      pigeonResult.setPsign((String) psign);
      Object url = list.get(4);
      pigeonResult.setUrl((String) url);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class TXPlayerDrmMsg {
    private @NonNull String licenseUrl;

    public @NonNull String getLicenseUrl() {
      return licenseUrl;
    }

    public void setLicenseUrl(@NonNull String setterArg) {
      if (setterArg == null) {
        throw new IllegalStateException("Nonnull field \"licenseUrl\" is null.");
      }
      this.licenseUrl = setterArg;
    }

    private @NonNull String playUrl;

    public @NonNull String getPlayUrl() {
      return playUrl;
    }

    public void setPlayUrl(@NonNull String setterArg) {
      if (setterArg == null) {
        throw new IllegalStateException("Nonnull field \"playUrl\" is null.");
      }
      this.playUrl = setterArg;
    }

    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    private @Nullable String deviceCertificateUrl;

    public @Nullable String getDeviceCertificateUrl() {
      return deviceCertificateUrl;
    }

    public void setDeviceCertificateUrl(@Nullable String setterArg) {
      this.deviceCertificateUrl = setterArg;
    }

    /** Constructor is non-public to enforce null safety; use Builder. */
    TXPlayerDrmMsg() {}

    public static final class Builder {

      private @Nullable String licenseUrl;

      public @NonNull Builder setLicenseUrl(@NonNull String setterArg) {
        this.licenseUrl = setterArg;
        return this;
      }

      private @Nullable String playUrl;

      public @NonNull Builder setPlayUrl(@NonNull String setterArg) {
        this.playUrl = setterArg;
        return this;
      }

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      private @Nullable String deviceCertificateUrl;

      public @NonNull Builder setDeviceCertificateUrl(@Nullable String setterArg) {
        this.deviceCertificateUrl = setterArg;
        return this;
      }

      public @NonNull TXPlayerDrmMsg build() {
        TXPlayerDrmMsg pigeonReturn = new TXPlayerDrmMsg();
        pigeonReturn.setLicenseUrl(licenseUrl);
        pigeonReturn.setPlayUrl(playUrl);
        pigeonReturn.setPlayerId(playerId);
        pigeonReturn.setDeviceCertificateUrl(deviceCertificateUrl);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(4);
      toListResult.add(licenseUrl);
      toListResult.add(playUrl);
      toListResult.add(playerId);
      toListResult.add(deviceCertificateUrl);
      return toListResult;
    }

    static @NonNull TXPlayerDrmMsg fromList(@NonNull ArrayList<Object> list) {
      TXPlayerDrmMsg pigeonResult = new TXPlayerDrmMsg();
      Object licenseUrl = list.get(0);
      pigeonResult.setLicenseUrl((String) licenseUrl);
      Object playUrl = list.get(1);
      pigeonResult.setPlayUrl((String) playUrl);
      Object playerId = list.get(2);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      Object deviceCertificateUrl = list.get(3);
      pigeonResult.setDeviceCertificateUrl((String) deviceCertificateUrl);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class PipParamsPlayerMsg {
    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    private @Nullable String backIconForAndroid;

    public @Nullable String getBackIconForAndroid() {
      return backIconForAndroid;
    }

    public void setBackIconForAndroid(@Nullable String setterArg) {
      this.backIconForAndroid = setterArg;
    }

    private @Nullable String playIconForAndroid;

    public @Nullable String getPlayIconForAndroid() {
      return playIconForAndroid;
    }

    public void setPlayIconForAndroid(@Nullable String setterArg) {
      this.playIconForAndroid = setterArg;
    }

    private @Nullable String pauseIconForAndroid;

    public @Nullable String getPauseIconForAndroid() {
      return pauseIconForAndroid;
    }

    public void setPauseIconForAndroid(@Nullable String setterArg) {
      this.pauseIconForAndroid = setterArg;
    }

    private @Nullable String forwardIconForAndroid;

    public @Nullable String getForwardIconForAndroid() {
      return forwardIconForAndroid;
    }

    public void setForwardIconForAndroid(@Nullable String setterArg) {
      this.forwardIconForAndroid = setterArg;
    }

    public static final class Builder {

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      private @Nullable String backIconForAndroid;

      public @NonNull Builder setBackIconForAndroid(@Nullable String setterArg) {
        this.backIconForAndroid = setterArg;
        return this;
      }

      private @Nullable String playIconForAndroid;

      public @NonNull Builder setPlayIconForAndroid(@Nullable String setterArg) {
        this.playIconForAndroid = setterArg;
        return this;
      }

      private @Nullable String pauseIconForAndroid;

      public @NonNull Builder setPauseIconForAndroid(@Nullable String setterArg) {
        this.pauseIconForAndroid = setterArg;
        return this;
      }

      private @Nullable String forwardIconForAndroid;

      public @NonNull Builder setForwardIconForAndroid(@Nullable String setterArg) {
        this.forwardIconForAndroid = setterArg;
        return this;
      }

      public @NonNull PipParamsPlayerMsg build() {
        PipParamsPlayerMsg pigeonReturn = new PipParamsPlayerMsg();
        pigeonReturn.setPlayerId(playerId);
        pigeonReturn.setBackIconForAndroid(backIconForAndroid);
        pigeonReturn.setPlayIconForAndroid(playIconForAndroid);
        pigeonReturn.setPauseIconForAndroid(pauseIconForAndroid);
        pigeonReturn.setForwardIconForAndroid(forwardIconForAndroid);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(5);
      toListResult.add(playerId);
      toListResult.add(backIconForAndroid);
      toListResult.add(playIconForAndroid);
      toListResult.add(pauseIconForAndroid);
      toListResult.add(forwardIconForAndroid);
      return toListResult;
    }

    static @NonNull PipParamsPlayerMsg fromList(@NonNull ArrayList<Object> list) {
      PipParamsPlayerMsg pigeonResult = new PipParamsPlayerMsg();
      Object playerId = list.get(0);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      Object backIconForAndroid = list.get(1);
      pigeonResult.setBackIconForAndroid((String) backIconForAndroid);
      Object playIconForAndroid = list.get(2);
      pigeonResult.setPlayIconForAndroid((String) playIconForAndroid);
      Object pauseIconForAndroid = list.get(3);
      pigeonResult.setPauseIconForAndroid((String) pauseIconForAndroid);
      Object forwardIconForAndroid = list.get(4);
      pigeonResult.setForwardIconForAndroid((String) forwardIconForAndroid);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class StringListPlayerMsg {
    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    private @Nullable String vvtUrl;

    public @Nullable String getVvtUrl() {
      return vvtUrl;
    }

    public void setVvtUrl(@Nullable String setterArg) {
      this.vvtUrl = setterArg;
    }

    private @Nullable List<String> imageUrls;

    public @Nullable List<String> getImageUrls() {
      return imageUrls;
    }

    public void setImageUrls(@Nullable List<String> setterArg) {
      this.imageUrls = setterArg;
    }

    public static final class Builder {

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      private @Nullable String vvtUrl;

      public @NonNull Builder setVvtUrl(@Nullable String setterArg) {
        this.vvtUrl = setterArg;
        return this;
      }

      private @Nullable List<String> imageUrls;

      public @NonNull Builder setImageUrls(@Nullable List<String> setterArg) {
        this.imageUrls = setterArg;
        return this;
      }

      public @NonNull StringListPlayerMsg build() {
        StringListPlayerMsg pigeonReturn = new StringListPlayerMsg();
        pigeonReturn.setPlayerId(playerId);
        pigeonReturn.setVvtUrl(vvtUrl);
        pigeonReturn.setImageUrls(imageUrls);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(3);
      toListResult.add(playerId);
      toListResult.add(vvtUrl);
      toListResult.add(imageUrls);
      return toListResult;
    }

    static @NonNull StringListPlayerMsg fromList(@NonNull ArrayList<Object> list) {
      StringListPlayerMsg pigeonResult = new StringListPlayerMsg();
      Object playerId = list.get(0);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      Object vvtUrl = list.get(1);
      pigeonResult.setVvtUrl((String) vvtUrl);
      Object imageUrls = list.get(2);
      pigeonResult.setImageUrls((List<String>) imageUrls);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class BoolPlayerMsg {
    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    private @Nullable Boolean value;

    public @Nullable Boolean getValue() {
      return value;
    }

    public void setValue(@Nullable Boolean setterArg) {
      this.value = setterArg;
    }

    public static final class Builder {

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      private @Nullable Boolean value;

      public @NonNull Builder setValue(@Nullable Boolean setterArg) {
        this.value = setterArg;
        return this;
      }

      public @NonNull BoolPlayerMsg build() {
        BoolPlayerMsg pigeonReturn = new BoolPlayerMsg();
        pigeonReturn.setPlayerId(playerId);
        pigeonReturn.setValue(value);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(2);
      toListResult.add(playerId);
      toListResult.add(value);
      return toListResult;
    }

    static @NonNull BoolPlayerMsg fromList(@NonNull ArrayList<Object> list) {
      BoolPlayerMsg pigeonResult = new BoolPlayerMsg();
      Object playerId = list.get(0);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      Object value = list.get(1);
      pigeonResult.setValue((Boolean) value);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class StringIntPlayerMsg {
    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    private @Nullable String strValue;

    public @Nullable String getStrValue() {
      return strValue;
    }

    public void setStrValue(@Nullable String setterArg) {
      this.strValue = setterArg;
    }

    private @Nullable Long intValue;

    public @Nullable Long getIntValue() {
      return intValue;
    }

    public void setIntValue(@Nullable Long setterArg) {
      this.intValue = setterArg;
    }

    public static final class Builder {

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      private @Nullable String strValue;

      public @NonNull Builder setStrValue(@Nullable String setterArg) {
        this.strValue = setterArg;
        return this;
      }

      private @Nullable Long intValue;

      public @NonNull Builder setIntValue(@Nullable Long setterArg) {
        this.intValue = setterArg;
        return this;
      }

      public @NonNull StringIntPlayerMsg build() {
        StringIntPlayerMsg pigeonReturn = new StringIntPlayerMsg();
        pigeonReturn.setPlayerId(playerId);
        pigeonReturn.setStrValue(strValue);
        pigeonReturn.setIntValue(intValue);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(3);
      toListResult.add(playerId);
      toListResult.add(strValue);
      toListResult.add(intValue);
      return toListResult;
    }

    static @NonNull StringIntPlayerMsg fromList(@NonNull ArrayList<Object> list) {
      StringIntPlayerMsg pigeonResult = new StringIntPlayerMsg();
      Object playerId = list.get(0);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      Object strValue = list.get(1);
      pigeonResult.setStrValue((String) strValue);
      Object intValue = list.get(2);
      pigeonResult.setIntValue((intValue == null) ? null : ((intValue instanceof Integer) ? (Integer) intValue : (Long) intValue));
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class StringPlayerMsg {
    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    private @Nullable String value;

    public @Nullable String getValue() {
      return value;
    }

    public void setValue(@Nullable String setterArg) {
      this.value = setterArg;
    }

    public static final class Builder {

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      private @Nullable String value;

      public @NonNull Builder setValue(@Nullable String setterArg) {
        this.value = setterArg;
        return this;
      }

      public @NonNull StringPlayerMsg build() {
        StringPlayerMsg pigeonReturn = new StringPlayerMsg();
        pigeonReturn.setPlayerId(playerId);
        pigeonReturn.setValue(value);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(2);
      toListResult.add(playerId);
      toListResult.add(value);
      return toListResult;
    }

    static @NonNull StringPlayerMsg fromList(@NonNull ArrayList<Object> list) {
      StringPlayerMsg pigeonResult = new StringPlayerMsg();
      Object playerId = list.get(0);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      Object value = list.get(1);
      pigeonResult.setValue((String) value);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class DoublePlayerMsg {
    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    private @Nullable Double value;

    public @Nullable Double getValue() {
      return value;
    }

    public void setValue(@Nullable Double setterArg) {
      this.value = setterArg;
    }

    public static final class Builder {

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      private @Nullable Double value;

      public @NonNull Builder setValue(@Nullable Double setterArg) {
        this.value = setterArg;
        return this;
      }

      public @NonNull DoublePlayerMsg build() {
        DoublePlayerMsg pigeonReturn = new DoublePlayerMsg();
        pigeonReturn.setPlayerId(playerId);
        pigeonReturn.setValue(value);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(2);
      toListResult.add(playerId);
      toListResult.add(value);
      return toListResult;
    }

    static @NonNull DoublePlayerMsg fromList(@NonNull ArrayList<Object> list) {
      DoublePlayerMsg pigeonResult = new DoublePlayerMsg();
      Object playerId = list.get(0);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      Object value = list.get(1);
      pigeonResult.setValue((Double) value);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class IntPlayerMsg {
    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    private @Nullable Long value;

    public @Nullable Long getValue() {
      return value;
    }

    public void setValue(@Nullable Long setterArg) {
      this.value = setterArg;
    }

    public static final class Builder {

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      private @Nullable Long value;

      public @NonNull Builder setValue(@Nullable Long setterArg) {
        this.value = setterArg;
        return this;
      }

      public @NonNull IntPlayerMsg build() {
        IntPlayerMsg pigeonReturn = new IntPlayerMsg();
        pigeonReturn.setPlayerId(playerId);
        pigeonReturn.setValue(value);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(2);
      toListResult.add(playerId);
      toListResult.add(value);
      return toListResult;
    }

    static @NonNull IntPlayerMsg fromList(@NonNull ArrayList<Object> list) {
      IntPlayerMsg pigeonResult = new IntPlayerMsg();
      Object playerId = list.get(0);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      Object value = list.get(1);
      pigeonResult.setValue((value == null) ? null : ((value instanceof Integer) ? (Integer) value : (Long) value));
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class FTXVodPlayConfigPlayerMsg {
    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    private @Nullable Long connectRetryCount;

    public @Nullable Long getConnectRetryCount() {
      return connectRetryCount;
    }

    public void setConnectRetryCount(@Nullable Long setterArg) {
      this.connectRetryCount = setterArg;
    }

    private @Nullable Long connectRetryInterval;

    public @Nullable Long getConnectRetryInterval() {
      return connectRetryInterval;
    }

    public void setConnectRetryInterval(@Nullable Long setterArg) {
      this.connectRetryInterval = setterArg;
    }

    private @Nullable Long timeout;

    public @Nullable Long getTimeout() {
      return timeout;
    }

    public void setTimeout(@Nullable Long setterArg) {
      this.timeout = setterArg;
    }

    private @Nullable Long playerType;

    public @Nullable Long getPlayerType() {
      return playerType;
    }

    public void setPlayerType(@Nullable Long setterArg) {
      this.playerType = setterArg;
    }

    private @Nullable Map<String, String> headers;

    public @Nullable Map<String, String> getHeaders() {
      return headers;
    }

    public void setHeaders(@Nullable Map<String, String> setterArg) {
      this.headers = setterArg;
    }

    private @Nullable Boolean enableAccurateSeek;

    public @Nullable Boolean getEnableAccurateSeek() {
      return enableAccurateSeek;
    }

    public void setEnableAccurateSeek(@Nullable Boolean setterArg) {
      this.enableAccurateSeek = setterArg;
    }

    private @Nullable Boolean autoRotate;

    public @Nullable Boolean getAutoRotate() {
      return autoRotate;
    }

    public void setAutoRotate(@Nullable Boolean setterArg) {
      this.autoRotate = setterArg;
    }

    private @Nullable Boolean smoothSwitchBitrate;

    public @Nullable Boolean getSmoothSwitchBitrate() {
      return smoothSwitchBitrate;
    }

    public void setSmoothSwitchBitrate(@Nullable Boolean setterArg) {
      this.smoothSwitchBitrate = setterArg;
    }

    private @Nullable String cacheMp4ExtName;

    public @Nullable String getCacheMp4ExtName() {
      return cacheMp4ExtName;
    }

    public void setCacheMp4ExtName(@Nullable String setterArg) {
      this.cacheMp4ExtName = setterArg;
    }

    private @Nullable Long progressInterval;

    public @Nullable Long getProgressInterval() {
      return progressInterval;
    }

    public void setProgressInterval(@Nullable Long setterArg) {
      this.progressInterval = setterArg;
    }

    private @Nullable Double maxBufferSize;

    public @Nullable Double getMaxBufferSize() {
      return maxBufferSize;
    }

    public void setMaxBufferSize(@Nullable Double setterArg) {
      this.maxBufferSize = setterArg;
    }

    private @Nullable Double maxPreloadSize;

    public @Nullable Double getMaxPreloadSize() {
      return maxPreloadSize;
    }

    public void setMaxPreloadSize(@Nullable Double setterArg) {
      this.maxPreloadSize = setterArg;
    }

    private @Nullable Long firstStartPlayBufferTime;

    public @Nullable Long getFirstStartPlayBufferTime() {
      return firstStartPlayBufferTime;
    }

    public void setFirstStartPlayBufferTime(@Nullable Long setterArg) {
      this.firstStartPlayBufferTime = setterArg;
    }

    private @Nullable Long nextStartPlayBufferTime;

    public @Nullable Long getNextStartPlayBufferTime() {
      return nextStartPlayBufferTime;
    }

    public void setNextStartPlayBufferTime(@Nullable Long setterArg) {
      this.nextStartPlayBufferTime = setterArg;
    }

    private @Nullable String overlayKey;

    public @Nullable String getOverlayKey() {
      return overlayKey;
    }

    public void setOverlayKey(@Nullable String setterArg) {
      this.overlayKey = setterArg;
    }

    private @Nullable String overlayIv;

    public @Nullable String getOverlayIv() {
      return overlayIv;
    }

    public void setOverlayIv(@Nullable String setterArg) {
      this.overlayIv = setterArg;
    }

    private @Nullable Map<String, Object> extInfoMap;

    public @Nullable Map<String, Object> getExtInfoMap() {
      return extInfoMap;
    }

    public void setExtInfoMap(@Nullable Map<String, Object> setterArg) {
      this.extInfoMap = setterArg;
    }

    private @Nullable Boolean enableRenderProcess;

    public @Nullable Boolean getEnableRenderProcess() {
      return enableRenderProcess;
    }

    public void setEnableRenderProcess(@Nullable Boolean setterArg) {
      this.enableRenderProcess = setterArg;
    }

    private @Nullable Long preferredResolution;

    public @Nullable Long getPreferredResolution() {
      return preferredResolution;
    }

    public void setPreferredResolution(@Nullable Long setterArg) {
      this.preferredResolution = setterArg;
    }

    /**
     * Media asset type, default auto type, refer to value see[TXVodPlayEvent]
     * 媒资类型，默认auto类型, 取值参考 see[TXVodPlayEvent]
     */
    private @Nullable Long mediaType;

    public @Nullable Long getMediaType() {
      return mediaType;
    }

    public void setMediaType(@Nullable Long setterArg) {
      this.mediaType = setterArg;
    }

    public static final class Builder {

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      private @Nullable Long connectRetryCount;

      public @NonNull Builder setConnectRetryCount(@Nullable Long setterArg) {
        this.connectRetryCount = setterArg;
        return this;
      }

      private @Nullable Long connectRetryInterval;

      public @NonNull Builder setConnectRetryInterval(@Nullable Long setterArg) {
        this.connectRetryInterval = setterArg;
        return this;
      }

      private @Nullable Long timeout;

      public @NonNull Builder setTimeout(@Nullable Long setterArg) {
        this.timeout = setterArg;
        return this;
      }

      private @Nullable Long playerType;

      public @NonNull Builder setPlayerType(@Nullable Long setterArg) {
        this.playerType = setterArg;
        return this;
      }

      private @Nullable Map<String, String> headers;

      public @NonNull Builder setHeaders(@Nullable Map<String, String> setterArg) {
        this.headers = setterArg;
        return this;
      }

      private @Nullable Boolean enableAccurateSeek;

      public @NonNull Builder setEnableAccurateSeek(@Nullable Boolean setterArg) {
        this.enableAccurateSeek = setterArg;
        return this;
      }

      private @Nullable Boolean autoRotate;

      public @NonNull Builder setAutoRotate(@Nullable Boolean setterArg) {
        this.autoRotate = setterArg;
        return this;
      }

      private @Nullable Boolean smoothSwitchBitrate;

      public @NonNull Builder setSmoothSwitchBitrate(@Nullable Boolean setterArg) {
        this.smoothSwitchBitrate = setterArg;
        return this;
      }

      private @Nullable String cacheMp4ExtName;

      public @NonNull Builder setCacheMp4ExtName(@Nullable String setterArg) {
        this.cacheMp4ExtName = setterArg;
        return this;
      }

      private @Nullable Long progressInterval;

      public @NonNull Builder setProgressInterval(@Nullable Long setterArg) {
        this.progressInterval = setterArg;
        return this;
      }

      private @Nullable Double maxBufferSize;

      public @NonNull Builder setMaxBufferSize(@Nullable Double setterArg) {
        this.maxBufferSize = setterArg;
        return this;
      }

      private @Nullable Double maxPreloadSize;

      public @NonNull Builder setMaxPreloadSize(@Nullable Double setterArg) {
        this.maxPreloadSize = setterArg;
        return this;
      }

      private @Nullable Long firstStartPlayBufferTime;

      public @NonNull Builder setFirstStartPlayBufferTime(@Nullable Long setterArg) {
        this.firstStartPlayBufferTime = setterArg;
        return this;
      }

      private @Nullable Long nextStartPlayBufferTime;

      public @NonNull Builder setNextStartPlayBufferTime(@Nullable Long setterArg) {
        this.nextStartPlayBufferTime = setterArg;
        return this;
      }

      private @Nullable String overlayKey;

      public @NonNull Builder setOverlayKey(@Nullable String setterArg) {
        this.overlayKey = setterArg;
        return this;
      }

      private @Nullable String overlayIv;

      public @NonNull Builder setOverlayIv(@Nullable String setterArg) {
        this.overlayIv = setterArg;
        return this;
      }

      private @Nullable Map<String, Object> extInfoMap;

      public @NonNull Builder setExtInfoMap(@Nullable Map<String, Object> setterArg) {
        this.extInfoMap = setterArg;
        return this;
      }

      private @Nullable Boolean enableRenderProcess;

      public @NonNull Builder setEnableRenderProcess(@Nullable Boolean setterArg) {
        this.enableRenderProcess = setterArg;
        return this;
      }

      private @Nullable Long preferredResolution;

      public @NonNull Builder setPreferredResolution(@Nullable Long setterArg) {
        this.preferredResolution = setterArg;
        return this;
      }

      private @Nullable Long mediaType;

      public @NonNull Builder setMediaType(@Nullable Long setterArg) {
        this.mediaType = setterArg;
        return this;
      }

      public @NonNull FTXVodPlayConfigPlayerMsg build() {
        FTXVodPlayConfigPlayerMsg pigeonReturn = new FTXVodPlayConfigPlayerMsg();
        pigeonReturn.setPlayerId(playerId);
        pigeonReturn.setConnectRetryCount(connectRetryCount);
        pigeonReturn.setConnectRetryInterval(connectRetryInterval);
        pigeonReturn.setTimeout(timeout);
        pigeonReturn.setPlayerType(playerType);
        pigeonReturn.setHeaders(headers);
        pigeonReturn.setEnableAccurateSeek(enableAccurateSeek);
        pigeonReturn.setAutoRotate(autoRotate);
        pigeonReturn.setSmoothSwitchBitrate(smoothSwitchBitrate);
        pigeonReturn.setCacheMp4ExtName(cacheMp4ExtName);
        pigeonReturn.setProgressInterval(progressInterval);
        pigeonReturn.setMaxBufferSize(maxBufferSize);
        pigeonReturn.setMaxPreloadSize(maxPreloadSize);
        pigeonReturn.setFirstStartPlayBufferTime(firstStartPlayBufferTime);
        pigeonReturn.setNextStartPlayBufferTime(nextStartPlayBufferTime);
        pigeonReturn.setOverlayKey(overlayKey);
        pigeonReturn.setOverlayIv(overlayIv);
        pigeonReturn.setExtInfoMap(extInfoMap);
        pigeonReturn.setEnableRenderProcess(enableRenderProcess);
        pigeonReturn.setPreferredResolution(preferredResolution);
        pigeonReturn.setMediaType(mediaType);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(21);
      toListResult.add(playerId);
      toListResult.add(connectRetryCount);
      toListResult.add(connectRetryInterval);
      toListResult.add(timeout);
      toListResult.add(playerType);
      toListResult.add(headers);
      toListResult.add(enableAccurateSeek);
      toListResult.add(autoRotate);
      toListResult.add(smoothSwitchBitrate);
      toListResult.add(cacheMp4ExtName);
      toListResult.add(progressInterval);
      toListResult.add(maxBufferSize);
      toListResult.add(maxPreloadSize);
      toListResult.add(firstStartPlayBufferTime);
      toListResult.add(nextStartPlayBufferTime);
      toListResult.add(overlayKey);
      toListResult.add(overlayIv);
      toListResult.add(extInfoMap);
      toListResult.add(enableRenderProcess);
      toListResult.add(preferredResolution);
      toListResult.add(mediaType);
      return toListResult;
    }

    static @NonNull FTXVodPlayConfigPlayerMsg fromList(@NonNull ArrayList<Object> list) {
      FTXVodPlayConfigPlayerMsg pigeonResult = new FTXVodPlayConfigPlayerMsg();
      Object playerId = list.get(0);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      Object connectRetryCount = list.get(1);
      pigeonResult.setConnectRetryCount((connectRetryCount == null) ? null : ((connectRetryCount instanceof Integer) ? (Integer) connectRetryCount : (Long) connectRetryCount));
      Object connectRetryInterval = list.get(2);
      pigeonResult.setConnectRetryInterval((connectRetryInterval == null) ? null : ((connectRetryInterval instanceof Integer) ? (Integer) connectRetryInterval : (Long) connectRetryInterval));
      Object timeout = list.get(3);
      pigeonResult.setTimeout((timeout == null) ? null : ((timeout instanceof Integer) ? (Integer) timeout : (Long) timeout));
      Object playerType = list.get(4);
      pigeonResult.setPlayerType((playerType == null) ? null : ((playerType instanceof Integer) ? (Integer) playerType : (Long) playerType));
      Object headers = list.get(5);
      pigeonResult.setHeaders((Map<String, String>) headers);
      Object enableAccurateSeek = list.get(6);
      pigeonResult.setEnableAccurateSeek((Boolean) enableAccurateSeek);
      Object autoRotate = list.get(7);
      pigeonResult.setAutoRotate((Boolean) autoRotate);
      Object smoothSwitchBitrate = list.get(8);
      pigeonResult.setSmoothSwitchBitrate((Boolean) smoothSwitchBitrate);
      Object cacheMp4ExtName = list.get(9);
      pigeonResult.setCacheMp4ExtName((String) cacheMp4ExtName);
      Object progressInterval = list.get(10);
      pigeonResult.setProgressInterval((progressInterval == null) ? null : ((progressInterval instanceof Integer) ? (Integer) progressInterval : (Long) progressInterval));
      Object maxBufferSize = list.get(11);
      pigeonResult.setMaxBufferSize((Double) maxBufferSize);
      Object maxPreloadSize = list.get(12);
      pigeonResult.setMaxPreloadSize((Double) maxPreloadSize);
      Object firstStartPlayBufferTime = list.get(13);
      pigeonResult.setFirstStartPlayBufferTime((firstStartPlayBufferTime == null) ? null : ((firstStartPlayBufferTime instanceof Integer) ? (Integer) firstStartPlayBufferTime : (Long) firstStartPlayBufferTime));
      Object nextStartPlayBufferTime = list.get(14);
      pigeonResult.setNextStartPlayBufferTime((nextStartPlayBufferTime == null) ? null : ((nextStartPlayBufferTime instanceof Integer) ? (Integer) nextStartPlayBufferTime : (Long) nextStartPlayBufferTime));
      Object overlayKey = list.get(15);
      pigeonResult.setOverlayKey((String) overlayKey);
      Object overlayIv = list.get(16);
      pigeonResult.setOverlayIv((String) overlayIv);
      Object extInfoMap = list.get(17);
      pigeonResult.setExtInfoMap((Map<String, Object>) extInfoMap);
      Object enableRenderProcess = list.get(18);
      pigeonResult.setEnableRenderProcess((Boolean) enableRenderProcess);
      Object preferredResolution = list.get(19);
      pigeonResult.setPreferredResolution((preferredResolution == null) ? null : ((preferredResolution instanceof Integer) ? (Integer) preferredResolution : (Long) preferredResolution));
      Object mediaType = list.get(20);
      pigeonResult.setMediaType((mediaType == null) ? null : ((mediaType instanceof Integer) ? (Integer) mediaType : (Long) mediaType));
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class FTXLivePlayConfigPlayerMsg {
    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    private @Nullable Double cacheTime;

    public @Nullable Double getCacheTime() {
      return cacheTime;
    }

    public void setCacheTime(@Nullable Double setterArg) {
      this.cacheTime = setterArg;
    }

    private @Nullable Double maxAutoAdjustCacheTime;

    public @Nullable Double getMaxAutoAdjustCacheTime() {
      return maxAutoAdjustCacheTime;
    }

    public void setMaxAutoAdjustCacheTime(@Nullable Double setterArg) {
      this.maxAutoAdjustCacheTime = setterArg;
    }

    private @Nullable Double minAutoAdjustCacheTime;

    public @Nullable Double getMinAutoAdjustCacheTime() {
      return minAutoAdjustCacheTime;
    }

    public void setMinAutoAdjustCacheTime(@Nullable Double setterArg) {
      this.minAutoAdjustCacheTime = setterArg;
    }

    private @Nullable Long videoBlockThreshold;

    public @Nullable Long getVideoBlockThreshold() {
      return videoBlockThreshold;
    }

    public void setVideoBlockThreshold(@Nullable Long setterArg) {
      this.videoBlockThreshold = setterArg;
    }

    private @Nullable Long connectRetryCount;

    public @Nullable Long getConnectRetryCount() {
      return connectRetryCount;
    }

    public void setConnectRetryCount(@Nullable Long setterArg) {
      this.connectRetryCount = setterArg;
    }

    private @Nullable Long connectRetryInterval;

    public @Nullable Long getConnectRetryInterval() {
      return connectRetryInterval;
    }

    public void setConnectRetryInterval(@Nullable Long setterArg) {
      this.connectRetryInterval = setterArg;
    }

    private @Nullable Boolean autoAdjustCacheTime;

    public @Nullable Boolean getAutoAdjustCacheTime() {
      return autoAdjustCacheTime;
    }

    public void setAutoAdjustCacheTime(@Nullable Boolean setterArg) {
      this.autoAdjustCacheTime = setterArg;
    }

    private @Nullable Boolean enableAec;

    public @Nullable Boolean getEnableAec() {
      return enableAec;
    }

    public void setEnableAec(@Nullable Boolean setterArg) {
      this.enableAec = setterArg;
    }

    private @Nullable Boolean enableMessage;

    public @Nullable Boolean getEnableMessage() {
      return enableMessage;
    }

    public void setEnableMessage(@Nullable Boolean setterArg) {
      this.enableMessage = setterArg;
    }

    private @Nullable Boolean enableMetaData;

    public @Nullable Boolean getEnableMetaData() {
      return enableMetaData;
    }

    public void setEnableMetaData(@Nullable Boolean setterArg) {
      this.enableMetaData = setterArg;
    }

    private @Nullable String flvSessionKey;

    public @Nullable String getFlvSessionKey() {
      return flvSessionKey;
    }

    public void setFlvSessionKey(@Nullable String setterArg) {
      this.flvSessionKey = setterArg;
    }

    public static final class Builder {

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      private @Nullable Double cacheTime;

      public @NonNull Builder setCacheTime(@Nullable Double setterArg) {
        this.cacheTime = setterArg;
        return this;
      }

      private @Nullable Double maxAutoAdjustCacheTime;

      public @NonNull Builder setMaxAutoAdjustCacheTime(@Nullable Double setterArg) {
        this.maxAutoAdjustCacheTime = setterArg;
        return this;
      }

      private @Nullable Double minAutoAdjustCacheTime;

      public @NonNull Builder setMinAutoAdjustCacheTime(@Nullable Double setterArg) {
        this.minAutoAdjustCacheTime = setterArg;
        return this;
      }

      private @Nullable Long videoBlockThreshold;

      public @NonNull Builder setVideoBlockThreshold(@Nullable Long setterArg) {
        this.videoBlockThreshold = setterArg;
        return this;
      }

      private @Nullable Long connectRetryCount;

      public @NonNull Builder setConnectRetryCount(@Nullable Long setterArg) {
        this.connectRetryCount = setterArg;
        return this;
      }

      private @Nullable Long connectRetryInterval;

      public @NonNull Builder setConnectRetryInterval(@Nullable Long setterArg) {
        this.connectRetryInterval = setterArg;
        return this;
      }

      private @Nullable Boolean autoAdjustCacheTime;

      public @NonNull Builder setAutoAdjustCacheTime(@Nullable Boolean setterArg) {
        this.autoAdjustCacheTime = setterArg;
        return this;
      }

      private @Nullable Boolean enableAec;

      public @NonNull Builder setEnableAec(@Nullable Boolean setterArg) {
        this.enableAec = setterArg;
        return this;
      }

      private @Nullable Boolean enableMessage;

      public @NonNull Builder setEnableMessage(@Nullable Boolean setterArg) {
        this.enableMessage = setterArg;
        return this;
      }

      private @Nullable Boolean enableMetaData;

      public @NonNull Builder setEnableMetaData(@Nullable Boolean setterArg) {
        this.enableMetaData = setterArg;
        return this;
      }

      private @Nullable String flvSessionKey;

      public @NonNull Builder setFlvSessionKey(@Nullable String setterArg) {
        this.flvSessionKey = setterArg;
        return this;
      }

      public @NonNull FTXLivePlayConfigPlayerMsg build() {
        FTXLivePlayConfigPlayerMsg pigeonReturn = new FTXLivePlayConfigPlayerMsg();
        pigeonReturn.setPlayerId(playerId);
        pigeonReturn.setCacheTime(cacheTime);
        pigeonReturn.setMaxAutoAdjustCacheTime(maxAutoAdjustCacheTime);
        pigeonReturn.setMinAutoAdjustCacheTime(minAutoAdjustCacheTime);
        pigeonReturn.setVideoBlockThreshold(videoBlockThreshold);
        pigeonReturn.setConnectRetryCount(connectRetryCount);
        pigeonReturn.setConnectRetryInterval(connectRetryInterval);
        pigeonReturn.setAutoAdjustCacheTime(autoAdjustCacheTime);
        pigeonReturn.setEnableAec(enableAec);
        pigeonReturn.setEnableMessage(enableMessage);
        pigeonReturn.setEnableMetaData(enableMetaData);
        pigeonReturn.setFlvSessionKey(flvSessionKey);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(12);
      toListResult.add(playerId);
      toListResult.add(cacheTime);
      toListResult.add(maxAutoAdjustCacheTime);
      toListResult.add(minAutoAdjustCacheTime);
      toListResult.add(videoBlockThreshold);
      toListResult.add(connectRetryCount);
      toListResult.add(connectRetryInterval);
      toListResult.add(autoAdjustCacheTime);
      toListResult.add(enableAec);
      toListResult.add(enableMessage);
      toListResult.add(enableMetaData);
      toListResult.add(flvSessionKey);
      return toListResult;
    }

    static @NonNull FTXLivePlayConfigPlayerMsg fromList(@NonNull ArrayList<Object> list) {
      FTXLivePlayConfigPlayerMsg pigeonResult = new FTXLivePlayConfigPlayerMsg();
      Object playerId = list.get(0);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      Object cacheTime = list.get(1);
      pigeonResult.setCacheTime((Double) cacheTime);
      Object maxAutoAdjustCacheTime = list.get(2);
      pigeonResult.setMaxAutoAdjustCacheTime((Double) maxAutoAdjustCacheTime);
      Object minAutoAdjustCacheTime = list.get(3);
      pigeonResult.setMinAutoAdjustCacheTime((Double) minAutoAdjustCacheTime);
      Object videoBlockThreshold = list.get(4);
      pigeonResult.setVideoBlockThreshold((videoBlockThreshold == null) ? null : ((videoBlockThreshold instanceof Integer) ? (Integer) videoBlockThreshold : (Long) videoBlockThreshold));
      Object connectRetryCount = list.get(5);
      pigeonResult.setConnectRetryCount((connectRetryCount == null) ? null : ((connectRetryCount instanceof Integer) ? (Integer) connectRetryCount : (Long) connectRetryCount));
      Object connectRetryInterval = list.get(6);
      pigeonResult.setConnectRetryInterval((connectRetryInterval == null) ? null : ((connectRetryInterval instanceof Integer) ? (Integer) connectRetryInterval : (Long) connectRetryInterval));
      Object autoAdjustCacheTime = list.get(7);
      pigeonResult.setAutoAdjustCacheTime((Boolean) autoAdjustCacheTime);
      Object enableAec = list.get(8);
      pigeonResult.setEnableAec((Boolean) enableAec);
      Object enableMessage = list.get(9);
      pigeonResult.setEnableMessage((Boolean) enableMessage);
      Object enableMetaData = list.get(10);
      pigeonResult.setEnableMetaData((Boolean) enableMetaData);
      Object flvSessionKey = list.get(11);
      pigeonResult.setFlvSessionKey((String) flvSessionKey);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class TXVodDownloadMediaMsg {
    /** 缓存地址 */
    private @Nullable String playPath;

    public @Nullable String getPlayPath() {
      return playPath;
    }

    public void setPlayPath(@Nullable String setterArg) {
      this.playPath = setterArg;
    }

    /** 下载进度 */
    private @Nullable Double progress;

    public @Nullable Double getProgress() {
      return progress;
    }

    public void setProgress(@Nullable Double setterArg) {
      this.progress = setterArg;
    }

    /** 下载状态 */
    private @Nullable Long downloadState;

    public @Nullable Long getDownloadState() {
      return downloadState;
    }

    public void setDownloadState(@Nullable Long setterArg) {
      this.downloadState = setterArg;
    }

    /** 账户名称,用于url下载设置账户名称 */
    private @Nullable String userName;

    public @Nullable String getUserName() {
      return userName;
    }

    public void setUserName(@Nullable String setterArg) {
      this.userName = setterArg;
    }

    /** 总时长 */
    private @Nullable Long duration;

    public @Nullable Long getDuration() {
      return duration;
    }

    public void setDuration(@Nullable Long setterArg) {
      this.duration = setterArg;
    }

    /** 已下载的可播放时长 */
    private @Nullable Long playableDuration;

    public @Nullable Long getPlayableDuration() {
      return playableDuration;
    }

    public void setPlayableDuration(@Nullable Long setterArg) {
      this.playableDuration = setterArg;
    }

    /** 文件总大小，单位：byte */
    private @Nullable Long size;

    public @Nullable Long getSize() {
      return size;
    }

    public void setSize(@Nullable Long setterArg) {
      this.size = setterArg;
    }

    /** 已下载大小，单位：byte */
    private @Nullable Long downloadSize;

    public @Nullable Long getDownloadSize() {
      return downloadSize;
    }

    public void setDownloadSize(@Nullable Long setterArg) {
      this.downloadSize = setterArg;
    }

    /**
     * 需要下载的视频url，url下载必填
     * <h1>
     * url下载不支持嵌套m3u8和mp4下载
     * </h1>
     */
    private @Nullable String url;

    public @Nullable String getUrl() {
      return url;
    }

    public void setUrl(@Nullable String setterArg) {
      this.url = setterArg;
    }

    /** 下载文件对应的appId，fileId下载必填 */
    private @Nullable Long appId;

    public @Nullable Long getAppId() {
      return appId;
    }

    public void setAppId(@Nullable Long setterArg) {
      this.appId = setterArg;
    }

    /** 下载文件Id，fileId下载必填 */
    private @Nullable String fileId;

    public @Nullable String getFileId() {
      return fileId;
    }

    public void setFileId(@Nullable String setterArg) {
      this.fileId = setterArg;
    }

    /** 加密签名，加密视频必填 */
    private @Nullable String pSign;

    public @Nullable String getPSign() {
      return pSign;
    }

    public void setPSign(@Nullable String setterArg) {
      this.pSign = setterArg;
    }

    /** 清晰度ID */
    private @Nullable Long quality;

    public @Nullable Long getQuality() {
      return quality;
    }

    public void setQuality(@Nullable Long setterArg) {
      this.quality = setterArg;
    }

    /** 加密token */
    private @Nullable String token;

    public @Nullable String getToken() {
      return token;
    }

    public void setToken(@Nullable String setterArg) {
      this.token = setterArg;
    }

    /** 下载速度，单位：KByte/秒 */
    private @Nullable Long speed;

    public @Nullable Long getSpeed() {
      return speed;
    }

    public void setSpeed(@Nullable Long setterArg) {
      this.speed = setterArg;
    }

    /** 资源是否已损坏, 如：资源被删除了 */
    private @Nullable Boolean isResourceBroken;

    public @Nullable Boolean getIsResourceBroken() {
      return isResourceBroken;
    }

    public void setIsResourceBroken(@Nullable Boolean setterArg) {
      this.isResourceBroken = setterArg;
    }

    public static final class Builder {

      private @Nullable String playPath;

      public @NonNull Builder setPlayPath(@Nullable String setterArg) {
        this.playPath = setterArg;
        return this;
      }

      private @Nullable Double progress;

      public @NonNull Builder setProgress(@Nullable Double setterArg) {
        this.progress = setterArg;
        return this;
      }

      private @Nullable Long downloadState;

      public @NonNull Builder setDownloadState(@Nullable Long setterArg) {
        this.downloadState = setterArg;
        return this;
      }

      private @Nullable String userName;

      public @NonNull Builder setUserName(@Nullable String setterArg) {
        this.userName = setterArg;
        return this;
      }

      private @Nullable Long duration;

      public @NonNull Builder setDuration(@Nullable Long setterArg) {
        this.duration = setterArg;
        return this;
      }

      private @Nullable Long playableDuration;

      public @NonNull Builder setPlayableDuration(@Nullable Long setterArg) {
        this.playableDuration = setterArg;
        return this;
      }

      private @Nullable Long size;

      public @NonNull Builder setSize(@Nullable Long setterArg) {
        this.size = setterArg;
        return this;
      }

      private @Nullable Long downloadSize;

      public @NonNull Builder setDownloadSize(@Nullable Long setterArg) {
        this.downloadSize = setterArg;
        return this;
      }

      private @Nullable String url;

      public @NonNull Builder setUrl(@Nullable String setterArg) {
        this.url = setterArg;
        return this;
      }

      private @Nullable Long appId;

      public @NonNull Builder setAppId(@Nullable Long setterArg) {
        this.appId = setterArg;
        return this;
      }

      private @Nullable String fileId;

      public @NonNull Builder setFileId(@Nullable String setterArg) {
        this.fileId = setterArg;
        return this;
      }

      private @Nullable String pSign;

      public @NonNull Builder setPSign(@Nullable String setterArg) {
        this.pSign = setterArg;
        return this;
      }

      private @Nullable Long quality;

      public @NonNull Builder setQuality(@Nullable Long setterArg) {
        this.quality = setterArg;
        return this;
      }

      private @Nullable String token;

      public @NonNull Builder setToken(@Nullable String setterArg) {
        this.token = setterArg;
        return this;
      }

      private @Nullable Long speed;

      public @NonNull Builder setSpeed(@Nullable Long setterArg) {
        this.speed = setterArg;
        return this;
      }

      private @Nullable Boolean isResourceBroken;

      public @NonNull Builder setIsResourceBroken(@Nullable Boolean setterArg) {
        this.isResourceBroken = setterArg;
        return this;
      }

      public @NonNull TXVodDownloadMediaMsg build() {
        TXVodDownloadMediaMsg pigeonReturn = new TXVodDownloadMediaMsg();
        pigeonReturn.setPlayPath(playPath);
        pigeonReturn.setProgress(progress);
        pigeonReturn.setDownloadState(downloadState);
        pigeonReturn.setUserName(userName);
        pigeonReturn.setDuration(duration);
        pigeonReturn.setPlayableDuration(playableDuration);
        pigeonReturn.setSize(size);
        pigeonReturn.setDownloadSize(downloadSize);
        pigeonReturn.setUrl(url);
        pigeonReturn.setAppId(appId);
        pigeonReturn.setFileId(fileId);
        pigeonReturn.setPSign(pSign);
        pigeonReturn.setQuality(quality);
        pigeonReturn.setToken(token);
        pigeonReturn.setSpeed(speed);
        pigeonReturn.setIsResourceBroken(isResourceBroken);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(16);
      toListResult.add(playPath);
      toListResult.add(progress);
      toListResult.add(downloadState);
      toListResult.add(userName);
      toListResult.add(duration);
      toListResult.add(playableDuration);
      toListResult.add(size);
      toListResult.add(downloadSize);
      toListResult.add(url);
      toListResult.add(appId);
      toListResult.add(fileId);
      toListResult.add(pSign);
      toListResult.add(quality);
      toListResult.add(token);
      toListResult.add(speed);
      toListResult.add(isResourceBroken);
      return toListResult;
    }

    static @NonNull TXVodDownloadMediaMsg fromList(@NonNull ArrayList<Object> list) {
      TXVodDownloadMediaMsg pigeonResult = new TXVodDownloadMediaMsg();
      Object playPath = list.get(0);
      pigeonResult.setPlayPath((String) playPath);
      Object progress = list.get(1);
      pigeonResult.setProgress((Double) progress);
      Object downloadState = list.get(2);
      pigeonResult.setDownloadState((downloadState == null) ? null : ((downloadState instanceof Integer) ? (Integer) downloadState : (Long) downloadState));
      Object userName = list.get(3);
      pigeonResult.setUserName((String) userName);
      Object duration = list.get(4);
      pigeonResult.setDuration((duration == null) ? null : ((duration instanceof Integer) ? (Integer) duration : (Long) duration));
      Object playableDuration = list.get(5);
      pigeonResult.setPlayableDuration((playableDuration == null) ? null : ((playableDuration instanceof Integer) ? (Integer) playableDuration : (Long) playableDuration));
      Object size = list.get(6);
      pigeonResult.setSize((size == null) ? null : ((size instanceof Integer) ? (Integer) size : (Long) size));
      Object downloadSize = list.get(7);
      pigeonResult.setDownloadSize((downloadSize == null) ? null : ((downloadSize instanceof Integer) ? (Integer) downloadSize : (Long) downloadSize));
      Object url = list.get(8);
      pigeonResult.setUrl((String) url);
      Object appId = list.get(9);
      pigeonResult.setAppId((appId == null) ? null : ((appId instanceof Integer) ? (Integer) appId : (Long) appId));
      Object fileId = list.get(10);
      pigeonResult.setFileId((String) fileId);
      Object pSign = list.get(11);
      pigeonResult.setPSign((String) pSign);
      Object quality = list.get(12);
      pigeonResult.setQuality((quality == null) ? null : ((quality instanceof Integer) ? (Integer) quality : (Long) quality));
      Object token = list.get(13);
      pigeonResult.setToken((String) token);
      Object speed = list.get(14);
      pigeonResult.setSpeed((speed == null) ? null : ((speed instanceof Integer) ? (Integer) speed : (Long) speed));
      Object isResourceBroken = list.get(15);
      pigeonResult.setIsResourceBroken((Boolean) isResourceBroken);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class TXDownloadListMsg {
    private @Nullable List<TXVodDownloadMediaMsg> infoList;

    public @Nullable List<TXVodDownloadMediaMsg> getInfoList() {
      return infoList;
    }

    public void setInfoList(@Nullable List<TXVodDownloadMediaMsg> setterArg) {
      this.infoList = setterArg;
    }

    public static final class Builder {

      private @Nullable List<TXVodDownloadMediaMsg> infoList;

      public @NonNull Builder setInfoList(@Nullable List<TXVodDownloadMediaMsg> setterArg) {
        this.infoList = setterArg;
        return this;
      }

      public @NonNull TXDownloadListMsg build() {
        TXDownloadListMsg pigeonReturn = new TXDownloadListMsg();
        pigeonReturn.setInfoList(infoList);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(1);
      toListResult.add(infoList);
      return toListResult;
    }

    static @NonNull TXDownloadListMsg fromList(@NonNull ArrayList<Object> list) {
      TXDownloadListMsg pigeonResult = new TXDownloadListMsg();
      Object infoList = list.get(0);
      pigeonResult.setInfoList((List<TXVodDownloadMediaMsg>) infoList);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class UInt8ListMsg {
    private @Nullable byte[] value;

    public @Nullable byte[] getValue() {
      return value;
    }

    public void setValue(@Nullable byte[] setterArg) {
      this.value = setterArg;
    }

    public static final class Builder {

      private @Nullable byte[] value;

      public @NonNull Builder setValue(@Nullable byte[] setterArg) {
        this.value = setterArg;
        return this;
      }

      public @NonNull UInt8ListMsg build() {
        UInt8ListMsg pigeonReturn = new UInt8ListMsg();
        pigeonReturn.setValue(value);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(1);
      toListResult.add(value);
      return toListResult;
    }

    static @NonNull UInt8ListMsg fromList(@NonNull ArrayList<Object> list) {
      UInt8ListMsg pigeonResult = new UInt8ListMsg();
      Object value = list.get(0);
      pigeonResult.setValue((byte[]) value);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class ListMsg {
    private @Nullable List<Object> value;

    public @Nullable List<Object> getValue() {
      return value;
    }

    public void setValue(@Nullable List<Object> setterArg) {
      this.value = setterArg;
    }

    public static final class Builder {

      private @Nullable List<Object> value;

      public @NonNull Builder setValue(@Nullable List<Object> setterArg) {
        this.value = setterArg;
        return this;
      }

      public @NonNull ListMsg build() {
        ListMsg pigeonReturn = new ListMsg();
        pigeonReturn.setValue(value);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(1);
      toListResult.add(value);
      return toListResult;
    }

    static @NonNull ListMsg fromList(@NonNull ArrayList<Object> list) {
      ListMsg pigeonResult = new ListMsg();
      Object value = list.get(0);
      pigeonResult.setValue((List<Object>) value);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class BoolMsg {
    private @Nullable Boolean value;

    public @Nullable Boolean getValue() {
      return value;
    }

    public void setValue(@Nullable Boolean setterArg) {
      this.value = setterArg;
    }

    public static final class Builder {

      private @Nullable Boolean value;

      public @NonNull Builder setValue(@Nullable Boolean setterArg) {
        this.value = setterArg;
        return this;
      }

      public @NonNull BoolMsg build() {
        BoolMsg pigeonReturn = new BoolMsg();
        pigeonReturn.setValue(value);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(1);
      toListResult.add(value);
      return toListResult;
    }

    static @NonNull BoolMsg fromList(@NonNull ArrayList<Object> list) {
      BoolMsg pigeonResult = new BoolMsg();
      Object value = list.get(0);
      pigeonResult.setValue((Boolean) value);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class IntMsg {
    private @Nullable Long value;

    public @Nullable Long getValue() {
      return value;
    }

    public void setValue(@Nullable Long setterArg) {
      this.value = setterArg;
    }

    public static final class Builder {

      private @Nullable Long value;

      public @NonNull Builder setValue(@Nullable Long setterArg) {
        this.value = setterArg;
        return this;
      }

      public @NonNull IntMsg build() {
        IntMsg pigeonReturn = new IntMsg();
        pigeonReturn.setValue(value);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(1);
      toListResult.add(value);
      return toListResult;
    }

    static @NonNull IntMsg fromList(@NonNull ArrayList<Object> list) {
      IntMsg pigeonResult = new IntMsg();
      Object value = list.get(0);
      pigeonResult.setValue((value == null) ? null : ((value instanceof Integer) ? (Integer) value : (Long) value));
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class StringMsg {
    private @Nullable String value;

    public @Nullable String getValue() {
      return value;
    }

    public void setValue(@Nullable String setterArg) {
      this.value = setterArg;
    }

    public static final class Builder {

      private @Nullable String value;

      public @NonNull Builder setValue(@Nullable String setterArg) {
        this.value = setterArg;
        return this;
      }

      public @NonNull StringMsg build() {
        StringMsg pigeonReturn = new StringMsg();
        pigeonReturn.setValue(value);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(1);
      toListResult.add(value);
      return toListResult;
    }

    static @NonNull StringMsg fromList(@NonNull ArrayList<Object> list) {
      StringMsg pigeonResult = new StringMsg();
      Object value = list.get(0);
      pigeonResult.setValue((String) value);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class CachePathMsg {
    private @Nullable String androidAbsolutePath;

    public @Nullable String getAndroidAbsolutePath() {
      return androidAbsolutePath;
    }

    public void setAndroidAbsolutePath(@Nullable String setterArg) {
      this.androidAbsolutePath = setterArg;
    }

    private @Nullable String iOSAbsolutePath;

    public @Nullable String getIOSAbsolutePath() {
      return iOSAbsolutePath;
    }

    public void setIOSAbsolutePath(@Nullable String setterArg) {
      this.iOSAbsolutePath = setterArg;
    }

    public static final class Builder {

      private @Nullable String androidAbsolutePath;

      public @NonNull Builder setAndroidAbsolutePath(@Nullable String setterArg) {
        this.androidAbsolutePath = setterArg;
        return this;
      }

      private @Nullable String iOSAbsolutePath;

      public @NonNull Builder setIOSAbsolutePath(@Nullable String setterArg) {
        this.iOSAbsolutePath = setterArg;
        return this;
      }

      public @NonNull CachePathMsg build() {
        CachePathMsg pigeonReturn = new CachePathMsg();
        pigeonReturn.setAndroidAbsolutePath(androidAbsolutePath);
        pigeonReturn.setIOSAbsolutePath(iOSAbsolutePath);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(2);
      toListResult.add(androidAbsolutePath);
      toListResult.add(iOSAbsolutePath);
      return toListResult;
    }

    static @NonNull CachePathMsg fromList(@NonNull ArrayList<Object> list) {
      CachePathMsg pigeonResult = new CachePathMsg();
      Object androidAbsolutePath = list.get(0);
      pigeonResult.setAndroidAbsolutePath((String) androidAbsolutePath);
      Object iOSAbsolutePath = list.get(1);
      pigeonResult.setIOSAbsolutePath((String) iOSAbsolutePath);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class DoubleMsg {
    private @Nullable Double value;

    public @Nullable Double getValue() {
      return value;
    }

    public void setValue(@Nullable Double setterArg) {
      this.value = setterArg;
    }

    public static final class Builder {

      private @Nullable Double value;

      public @NonNull Builder setValue(@Nullable Double setterArg) {
        this.value = setterArg;
        return this;
      }

      public @NonNull DoubleMsg build() {
        DoubleMsg pigeonReturn = new DoubleMsg();
        pigeonReturn.setValue(value);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(1);
      toListResult.add(value);
      return toListResult;
    }

    static @NonNull DoubleMsg fromList(@NonNull ArrayList<Object> list) {
      DoubleMsg pigeonResult = new DoubleMsg();
      Object value = list.get(0);
      pigeonResult.setValue((Double) value);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class PreLoadMsg {
    private @Nullable String playUrl;

    public @Nullable String getPlayUrl() {
      return playUrl;
    }

    public void setPlayUrl(@Nullable String setterArg) {
      this.playUrl = setterArg;
    }

    private @Nullable Double preloadSizeMB;

    public @Nullable Double getPreloadSizeMB() {
      return preloadSizeMB;
    }

    public void setPreloadSizeMB(@Nullable Double setterArg) {
      this.preloadSizeMB = setterArg;
    }

    private @Nullable Long preferredResolution;

    public @Nullable Long getPreferredResolution() {
      return preferredResolution;
    }

    public void setPreferredResolution(@Nullable Long setterArg) {
      this.preferredResolution = setterArg;
    }

    public static final class Builder {

      private @Nullable String playUrl;

      public @NonNull Builder setPlayUrl(@Nullable String setterArg) {
        this.playUrl = setterArg;
        return this;
      }

      private @Nullable Double preloadSizeMB;

      public @NonNull Builder setPreloadSizeMB(@Nullable Double setterArg) {
        this.preloadSizeMB = setterArg;
        return this;
      }

      private @Nullable Long preferredResolution;

      public @NonNull Builder setPreferredResolution(@Nullable Long setterArg) {
        this.preferredResolution = setterArg;
        return this;
      }

      public @NonNull PreLoadMsg build() {
        PreLoadMsg pigeonReturn = new PreLoadMsg();
        pigeonReturn.setPlayUrl(playUrl);
        pigeonReturn.setPreloadSizeMB(preloadSizeMB);
        pigeonReturn.setPreferredResolution(preferredResolution);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(3);
      toListResult.add(playUrl);
      toListResult.add(preloadSizeMB);
      toListResult.add(preferredResolution);
      return toListResult;
    }

    static @NonNull PreLoadMsg fromList(@NonNull ArrayList<Object> list) {
      PreLoadMsg pigeonResult = new PreLoadMsg();
      Object playUrl = list.get(0);
      pigeonResult.setPlayUrl((String) playUrl);
      Object preloadSizeMB = list.get(1);
      pigeonResult.setPreloadSizeMB((Double) preloadSizeMB);
      Object preferredResolution = list.get(2);
      pigeonResult.setPreferredResolution((preferredResolution == null) ? null : ((preferredResolution instanceof Integer) ? (Integer) preferredResolution : (Long) preferredResolution));
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class PreLoadInfoMsg {
    private @Nullable Long appId;

    public @Nullable Long getAppId() {
      return appId;
    }

    public void setAppId(@Nullable Long setterArg) {
      this.appId = setterArg;
    }

    private @Nullable String fileId;

    public @Nullable String getFileId() {
      return fileId;
    }

    public void setFileId(@Nullable String setterArg) {
      this.fileId = setterArg;
    }

    private @Nullable String pSign;

    public @Nullable String getPSign() {
      return pSign;
    }

    public void setPSign(@Nullable String setterArg) {
      this.pSign = setterArg;
    }

    private @Nullable String playUrl;

    public @Nullable String getPlayUrl() {
      return playUrl;
    }

    public void setPlayUrl(@Nullable String setterArg) {
      this.playUrl = setterArg;
    }

    private @Nullable Double preloadSizeMB;

    public @Nullable Double getPreloadSizeMB() {
      return preloadSizeMB;
    }

    public void setPreloadSizeMB(@Nullable Double setterArg) {
      this.preloadSizeMB = setterArg;
    }

    private @Nullable Long preferredResolution;

    public @Nullable Long getPreferredResolution() {
      return preferredResolution;
    }

    public void setPreferredResolution(@Nullable Long setterArg) {
      this.preferredResolution = setterArg;
    }

    private @Nullable Long tmpPreloadTaskId;

    public @Nullable Long getTmpPreloadTaskId() {
      return tmpPreloadTaskId;
    }

    public void setTmpPreloadTaskId(@Nullable Long setterArg) {
      this.tmpPreloadTaskId = setterArg;
    }

    public static final class Builder {

      private @Nullable Long appId;

      public @NonNull Builder setAppId(@Nullable Long setterArg) {
        this.appId = setterArg;
        return this;
      }

      private @Nullable String fileId;

      public @NonNull Builder setFileId(@Nullable String setterArg) {
        this.fileId = setterArg;
        return this;
      }

      private @Nullable String pSign;

      public @NonNull Builder setPSign(@Nullable String setterArg) {
        this.pSign = setterArg;
        return this;
      }

      private @Nullable String playUrl;

      public @NonNull Builder setPlayUrl(@Nullable String setterArg) {
        this.playUrl = setterArg;
        return this;
      }

      private @Nullable Double preloadSizeMB;

      public @NonNull Builder setPreloadSizeMB(@Nullable Double setterArg) {
        this.preloadSizeMB = setterArg;
        return this;
      }

      private @Nullable Long preferredResolution;

      public @NonNull Builder setPreferredResolution(@Nullable Long setterArg) {
        this.preferredResolution = setterArg;
        return this;
      }

      private @Nullable Long tmpPreloadTaskId;

      public @NonNull Builder setTmpPreloadTaskId(@Nullable Long setterArg) {
        this.tmpPreloadTaskId = setterArg;
        return this;
      }

      public @NonNull PreLoadInfoMsg build() {
        PreLoadInfoMsg pigeonReturn = new PreLoadInfoMsg();
        pigeonReturn.setAppId(appId);
        pigeonReturn.setFileId(fileId);
        pigeonReturn.setPSign(pSign);
        pigeonReturn.setPlayUrl(playUrl);
        pigeonReturn.setPreloadSizeMB(preloadSizeMB);
        pigeonReturn.setPreferredResolution(preferredResolution);
        pigeonReturn.setTmpPreloadTaskId(tmpPreloadTaskId);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(7);
      toListResult.add(appId);
      toListResult.add(fileId);
      toListResult.add(pSign);
      toListResult.add(playUrl);
      toListResult.add(preloadSizeMB);
      toListResult.add(preferredResolution);
      toListResult.add(tmpPreloadTaskId);
      return toListResult;
    }

    static @NonNull PreLoadInfoMsg fromList(@NonNull ArrayList<Object> list) {
      PreLoadInfoMsg pigeonResult = new PreLoadInfoMsg();
      Object appId = list.get(0);
      pigeonResult.setAppId((appId == null) ? null : ((appId instanceof Integer) ? (Integer) appId : (Long) appId));
      Object fileId = list.get(1);
      pigeonResult.setFileId((String) fileId);
      Object pSign = list.get(2);
      pigeonResult.setPSign((String) pSign);
      Object playUrl = list.get(3);
      pigeonResult.setPlayUrl((String) playUrl);
      Object preloadSizeMB = list.get(4);
      pigeonResult.setPreloadSizeMB((Double) preloadSizeMB);
      Object preferredResolution = list.get(5);
      pigeonResult.setPreferredResolution((preferredResolution == null) ? null : ((preferredResolution instanceof Integer) ? (Integer) preferredResolution : (Long) preferredResolution));
      Object tmpPreloadTaskId = list.get(6);
      pigeonResult.setTmpPreloadTaskId((tmpPreloadTaskId == null) ? null : ((tmpPreloadTaskId instanceof Integer) ? (Integer) tmpPreloadTaskId : (Long) tmpPreloadTaskId));
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class MapMsg {
    private @Nullable Map<String, String> map;

    public @Nullable Map<String, String> getMap() {
      return map;
    }

    public void setMap(@Nullable Map<String, String> setterArg) {
      this.map = setterArg;
    }

    public static final class Builder {

      private @Nullable Map<String, String> map;

      public @NonNull Builder setMap(@Nullable Map<String, String> setterArg) {
        this.map = setterArg;
        return this;
      }

      public @NonNull MapMsg build() {
        MapMsg pigeonReturn = new MapMsg();
        pigeonReturn.setMap(map);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(1);
      toListResult.add(map);
      return toListResult;
    }

    static @NonNull MapMsg fromList(@NonNull ArrayList<Object> list) {
      MapMsg pigeonResult = new MapMsg();
      Object map = list.get(0);
      pigeonResult.setMap((Map<String, String>) map);
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class SubTitlePlayerMsg {
    private @NonNull String url;

    public @NonNull String getUrl() {
      return url;
    }

    public void setUrl(@NonNull String setterArg) {
      if (setterArg == null) {
        throw new IllegalStateException("Nonnull field \"url\" is null.");
      }
      this.url = setterArg;
    }

    private @NonNull String name;

    public @NonNull String getName() {
      return name;
    }

    public void setName(@NonNull String setterArg) {
      if (setterArg == null) {
        throw new IllegalStateException("Nonnull field \"name\" is null.");
      }
      this.name = setterArg;
    }

    private @Nullable String mimeType;

    public @Nullable String getMimeType() {
      return mimeType;
    }

    public void setMimeType(@Nullable String setterArg) {
      this.mimeType = setterArg;
    }

    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    /** Constructor is non-public to enforce null safety; use Builder. */
    SubTitlePlayerMsg() {}

    public static final class Builder {

      private @Nullable String url;

      public @NonNull Builder setUrl(@NonNull String setterArg) {
        this.url = setterArg;
        return this;
      }

      private @Nullable String name;

      public @NonNull Builder setName(@NonNull String setterArg) {
        this.name = setterArg;
        return this;
      }

      private @Nullable String mimeType;

      public @NonNull Builder setMimeType(@Nullable String setterArg) {
        this.mimeType = setterArg;
        return this;
      }

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      public @NonNull SubTitlePlayerMsg build() {
        SubTitlePlayerMsg pigeonReturn = new SubTitlePlayerMsg();
        pigeonReturn.setUrl(url);
        pigeonReturn.setName(name);
        pigeonReturn.setMimeType(mimeType);
        pigeonReturn.setPlayerId(playerId);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(4);
      toListResult.add(url);
      toListResult.add(name);
      toListResult.add(mimeType);
      toListResult.add(playerId);
      return toListResult;
    }

    static @NonNull SubTitlePlayerMsg fromList(@NonNull ArrayList<Object> list) {
      SubTitlePlayerMsg pigeonResult = new SubTitlePlayerMsg();
      Object url = list.get(0);
      pigeonResult.setUrl((String) url);
      Object name = list.get(1);
      pigeonResult.setName((String) name);
      Object mimeType = list.get(2);
      pigeonResult.setMimeType((String) mimeType);
      Object playerId = list.get(3);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class SubTitleRenderModelPlayerMsg {
    private @Nullable Long canvasWidth;

    public @Nullable Long getCanvasWidth() {
      return canvasWidth;
    }

    public void setCanvasWidth(@Nullable Long setterArg) {
      this.canvasWidth = setterArg;
    }

    private @Nullable Long canvasHeight;

    public @Nullable Long getCanvasHeight() {
      return canvasHeight;
    }

    public void setCanvasHeight(@Nullable Long setterArg) {
      this.canvasHeight = setterArg;
    }

    private @Nullable String familyName;

    public @Nullable String getFamilyName() {
      return familyName;
    }

    public void setFamilyName(@Nullable String setterArg) {
      this.familyName = setterArg;
    }

    private @Nullable Double fontSize;

    public @Nullable Double getFontSize() {
      return fontSize;
    }

    public void setFontSize(@Nullable Double setterArg) {
      this.fontSize = setterArg;
    }

    private @Nullable Double fontScale;

    public @Nullable Double getFontScale() {
      return fontScale;
    }

    public void setFontScale(@Nullable Double setterArg) {
      this.fontScale = setterArg;
    }

    private @Nullable Long fontColor;

    public @Nullable Long getFontColor() {
      return fontColor;
    }

    public void setFontColor(@Nullable Long setterArg) {
      this.fontColor = setterArg;
    }

    private @Nullable Boolean isBondFontStyle;

    public @Nullable Boolean getIsBondFontStyle() {
      return isBondFontStyle;
    }

    public void setIsBondFontStyle(@Nullable Boolean setterArg) {
      this.isBondFontStyle = setterArg;
    }

    private @Nullable Double outlineWidth;

    public @Nullable Double getOutlineWidth() {
      return outlineWidth;
    }

    public void setOutlineWidth(@Nullable Double setterArg) {
      this.outlineWidth = setterArg;
    }

    private @Nullable Long outlineColor;

    public @Nullable Long getOutlineColor() {
      return outlineColor;
    }

    public void setOutlineColor(@Nullable Long setterArg) {
      this.outlineColor = setterArg;
    }

    private @Nullable Double lineSpace;

    public @Nullable Double getLineSpace() {
      return lineSpace;
    }

    public void setLineSpace(@Nullable Double setterArg) {
      this.lineSpace = setterArg;
    }

    private @Nullable Double startMargin;

    public @Nullable Double getStartMargin() {
      return startMargin;
    }

    public void setStartMargin(@Nullable Double setterArg) {
      this.startMargin = setterArg;
    }

    private @Nullable Double endMargin;

    public @Nullable Double getEndMargin() {
      return endMargin;
    }

    public void setEndMargin(@Nullable Double setterArg) {
      this.endMargin = setterArg;
    }

    private @Nullable Double verticalMargin;

    public @Nullable Double getVerticalMargin() {
      return verticalMargin;
    }

    public void setVerticalMargin(@Nullable Double setterArg) {
      this.verticalMargin = setterArg;
    }

    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    public static final class Builder {

      private @Nullable Long canvasWidth;

      public @NonNull Builder setCanvasWidth(@Nullable Long setterArg) {
        this.canvasWidth = setterArg;
        return this;
      }

      private @Nullable Long canvasHeight;

      public @NonNull Builder setCanvasHeight(@Nullable Long setterArg) {
        this.canvasHeight = setterArg;
        return this;
      }

      private @Nullable String familyName;

      public @NonNull Builder setFamilyName(@Nullable String setterArg) {
        this.familyName = setterArg;
        return this;
      }

      private @Nullable Double fontSize;

      public @NonNull Builder setFontSize(@Nullable Double setterArg) {
        this.fontSize = setterArg;
        return this;
      }

      private @Nullable Double fontScale;

      public @NonNull Builder setFontScale(@Nullable Double setterArg) {
        this.fontScale = setterArg;
        return this;
      }

      private @Nullable Long fontColor;

      public @NonNull Builder setFontColor(@Nullable Long setterArg) {
        this.fontColor = setterArg;
        return this;
      }

      private @Nullable Boolean isBondFontStyle;

      public @NonNull Builder setIsBondFontStyle(@Nullable Boolean setterArg) {
        this.isBondFontStyle = setterArg;
        return this;
      }

      private @Nullable Double outlineWidth;

      public @NonNull Builder setOutlineWidth(@Nullable Double setterArg) {
        this.outlineWidth = setterArg;
        return this;
      }

      private @Nullable Long outlineColor;

      public @NonNull Builder setOutlineColor(@Nullable Long setterArg) {
        this.outlineColor = setterArg;
        return this;
      }

      private @Nullable Double lineSpace;

      public @NonNull Builder setLineSpace(@Nullable Double setterArg) {
        this.lineSpace = setterArg;
        return this;
      }

      private @Nullable Double startMargin;

      public @NonNull Builder setStartMargin(@Nullable Double setterArg) {
        this.startMargin = setterArg;
        return this;
      }

      private @Nullable Double endMargin;

      public @NonNull Builder setEndMargin(@Nullable Double setterArg) {
        this.endMargin = setterArg;
        return this;
      }

      private @Nullable Double verticalMargin;

      public @NonNull Builder setVerticalMargin(@Nullable Double setterArg) {
        this.verticalMargin = setterArg;
        return this;
      }

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      public @NonNull SubTitleRenderModelPlayerMsg build() {
        SubTitleRenderModelPlayerMsg pigeonReturn = new SubTitleRenderModelPlayerMsg();
        pigeonReturn.setCanvasWidth(canvasWidth);
        pigeonReturn.setCanvasHeight(canvasHeight);
        pigeonReturn.setFamilyName(familyName);
        pigeonReturn.setFontSize(fontSize);
        pigeonReturn.setFontScale(fontScale);
        pigeonReturn.setFontColor(fontColor);
        pigeonReturn.setIsBondFontStyle(isBondFontStyle);
        pigeonReturn.setOutlineWidth(outlineWidth);
        pigeonReturn.setOutlineColor(outlineColor);
        pigeonReturn.setLineSpace(lineSpace);
        pigeonReturn.setStartMargin(startMargin);
        pigeonReturn.setEndMargin(endMargin);
        pigeonReturn.setVerticalMargin(verticalMargin);
        pigeonReturn.setPlayerId(playerId);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(14);
      toListResult.add(canvasWidth);
      toListResult.add(canvasHeight);
      toListResult.add(familyName);
      toListResult.add(fontSize);
      toListResult.add(fontScale);
      toListResult.add(fontColor);
      toListResult.add(isBondFontStyle);
      toListResult.add(outlineWidth);
      toListResult.add(outlineColor);
      toListResult.add(lineSpace);
      toListResult.add(startMargin);
      toListResult.add(endMargin);
      toListResult.add(verticalMargin);
      toListResult.add(playerId);
      return toListResult;
    }

    static @NonNull SubTitleRenderModelPlayerMsg fromList(@NonNull ArrayList<Object> list) {
      SubTitleRenderModelPlayerMsg pigeonResult = new SubTitleRenderModelPlayerMsg();
      Object canvasWidth = list.get(0);
      pigeonResult.setCanvasWidth((canvasWidth == null) ? null : ((canvasWidth instanceof Integer) ? (Integer) canvasWidth : (Long) canvasWidth));
      Object canvasHeight = list.get(1);
      pigeonResult.setCanvasHeight((canvasHeight == null) ? null : ((canvasHeight instanceof Integer) ? (Integer) canvasHeight : (Long) canvasHeight));
      Object familyName = list.get(2);
      pigeonResult.setFamilyName((String) familyName);
      Object fontSize = list.get(3);
      pigeonResult.setFontSize((Double) fontSize);
      Object fontScale = list.get(4);
      pigeonResult.setFontScale((Double) fontScale);
      Object fontColor = list.get(5);
      pigeonResult.setFontColor((fontColor == null) ? null : ((fontColor instanceof Integer) ? (Integer) fontColor : (Long) fontColor));
      Object isBondFontStyle = list.get(6);
      pigeonResult.setIsBondFontStyle((Boolean) isBondFontStyle);
      Object outlineWidth = list.get(7);
      pigeonResult.setOutlineWidth((Double) outlineWidth);
      Object outlineColor = list.get(8);
      pigeonResult.setOutlineColor((outlineColor == null) ? null : ((outlineColor instanceof Integer) ? (Integer) outlineColor : (Long) outlineColor));
      Object lineSpace = list.get(9);
      pigeonResult.setLineSpace((Double) lineSpace);
      Object startMargin = list.get(10);
      pigeonResult.setStartMargin((Double) startMargin);
      Object endMargin = list.get(11);
      pigeonResult.setEndMargin((Double) endMargin);
      Object verticalMargin = list.get(12);
      pigeonResult.setVerticalMargin((Double) verticalMargin);
      Object playerId = list.get(13);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      return pigeonResult;
    }
  }

  /** Generated class from Pigeon that represents data sent in messages. */
  public static final class StringOptionPlayerMsg {
    private @Nullable String key;

    public @Nullable String getKey() {
      return key;
    }

    public void setKey(@Nullable String setterArg) {
      this.key = setterArg;
    }

    private @Nullable List<Object> value;

    public @Nullable List<Object> getValue() {
      return value;
    }

    public void setValue(@Nullable List<Object> setterArg) {
      this.value = setterArg;
    }

    private @Nullable Long playerId;

    public @Nullable Long getPlayerId() {
      return playerId;
    }

    public void setPlayerId(@Nullable Long setterArg) {
      this.playerId = setterArg;
    }

    public static final class Builder {

      private @Nullable String key;

      public @NonNull Builder setKey(@Nullable String setterArg) {
        this.key = setterArg;
        return this;
      }

      private @Nullable List<Object> value;

      public @NonNull Builder setValue(@Nullable List<Object> setterArg) {
        this.value = setterArg;
        return this;
      }

      private @Nullable Long playerId;

      public @NonNull Builder setPlayerId(@Nullable Long setterArg) {
        this.playerId = setterArg;
        return this;
      }

      public @NonNull StringOptionPlayerMsg build() {
        StringOptionPlayerMsg pigeonReturn = new StringOptionPlayerMsg();
        pigeonReturn.setKey(key);
        pigeonReturn.setValue(value);
        pigeonReturn.setPlayerId(playerId);
        return pigeonReturn;
      }
    }

    @NonNull
    ArrayList<Object> toList() {
      ArrayList<Object> toListResult = new ArrayList<Object>(3);
      toListResult.add(key);
      toListResult.add(value);
      toListResult.add(playerId);
      return toListResult;
    }

    static @NonNull StringOptionPlayerMsg fromList(@NonNull ArrayList<Object> list) {
      StringOptionPlayerMsg pigeonResult = new StringOptionPlayerMsg();
      Object key = list.get(0);
      pigeonResult.setKey((String) key);
      Object value = list.get(1);
      pigeonResult.setValue((List<Object>) value);
      Object playerId = list.get(2);
      pigeonResult.setPlayerId((playerId == null) ? null : ((playerId instanceof Integer) ? (Integer) playerId : (Long) playerId));
      return pigeonResult;
    }
  }

  private static class TXFlutterSuperPlayerPluginAPICodec extends StandardMessageCodec {
    public static final TXFlutterSuperPlayerPluginAPICodec INSTANCE = new TXFlutterSuperPlayerPluginAPICodec();

    private TXFlutterSuperPlayerPluginAPICodec() {}

    @Override
    protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) {
      switch (type) {
        case (byte) 128:
          return BoolMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 129:
          return CachePathMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 130:
          return IntMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 131:
          return LicenseMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 132:
          return PlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 133:
          return StringMsg.fromList((ArrayList<Object>) readValue(buffer));
        default:
          return super.readValueOfType(type, buffer);
      }
    }

    @Override
    protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) {
      if (value instanceof BoolMsg) {
        stream.write(128);
        writeValue(stream, ((BoolMsg) value).toList());
      } else if (value instanceof CachePathMsg) {
        stream.write(129);
        writeValue(stream, ((CachePathMsg) value).toList());
      } else if (value instanceof IntMsg) {
        stream.write(130);
        writeValue(stream, ((IntMsg) value).toList());
      } else if (value instanceof LicenseMsg) {
        stream.write(131);
        writeValue(stream, ((LicenseMsg) value).toList());
      } else if (value instanceof PlayerMsg) {
        stream.write(132);
        writeValue(stream, ((PlayerMsg) value).toList());
      } else if (value instanceof StringMsg) {
        stream.write(133);
        writeValue(stream, ((StringMsg) value).toList());
      } else {
        super.writeValue(stream, value);
      }
    }
  }

  /** Generated interface from Pigeon that represents a handler of messages from Flutter. */
  public interface TXFlutterSuperPlayerPluginAPI {

    @NonNull 
    StringMsg getPlatformVersion();
    /** 创建点播播放器 */
    @NonNull 
    PlayerMsg createVodPlayer();
    /** 创建直播播放器 */
    @NonNull 
    PlayerMsg createLivePlayer();
    /** 开关log输出 */
    void setConsoleEnabled(@NonNull BoolMsg enabled);
    /** 释放播放器资源 */
    void releasePlayer(@NonNull PlayerMsg playerId);
    /**
     * 设置播放引擎的最大缓存大小。设置后会根据设定值自动清理Cache目录的文件
     * @param size 最大缓存大小（单位：MB)
     */
    void setGlobalMaxCacheSize(@NonNull IntMsg size);
    /**
     * 在短视频播放场景中，视频文件的本地缓存是很刚需的一个特性，对于普通用户而言，一个已经看过的视频再次观看时，不应该再消耗一次流量。
     *  @格式支持：SDK 支持 HLS(m3u8) 和 MP4 两种常见点播格式的缓存功能。
     *  @开启时机：SDK 并不默认开启缓存功能，对于用户回看率不高的场景，也并不推荐您开启此功能。
     *  @开启方式：全局生效，在使用播放器开启。开启此功能需要配置两个参数：本地缓存目录及缓存大小。
     *
     * 该缓存路径默认设置到app沙盒目录下，postfixPath只需要传递相对缓存目录即可，不需要传递整个绝对路径。
     * e.g. postfixPath = 'testCache'
     * Android 平台：视频将会缓存到sdcard的Android/data/your-pkg-name/files/testCache 目录。
     * iOS 平台：视频将会缓存到沙盒的Documents/testCache 目录。
     * @param postfixPath 缓存目录
     * @return true 设置成功 false 设置失败
     */
    @NonNull 
    BoolMsg setGlobalCacheFolderPath(@NonNull StringMsg postfixPath);
    /** 设置播放器资源缓存目录绝对路径，该方法会与 setGlobalCacheFolderPath(String postfixPath) 相互覆盖，调用其中一个即可 */
    @NonNull 
    BoolMsg setGlobalCacheFolderCustomPath(@NonNull CachePathMsg cacheMsg);
    /** 设置全局license */
    void setGlobalLicense(@NonNull LicenseMsg licenseMsg);
    /** 设置log输出级别 [TXLogLevel] */
    void setLogLevel(@NonNull IntMsg logLevel);
    /** 获取依赖Native端的 LiteAVSDK 的版本 */
    @NonNull 
    StringMsg getLiteAVSDKVersion();
    /**
     *
     * 设置 liteav SDK 接入的环境。
     * 腾讯云在全球各地区部署的环境，按照各地区政策法规要求，需要接入不同地区接入点。
     *
     * @param envConfig 需要接入的环境，SDK 默认接入的环境是：默认正式环境。
     * @return 0：成功；其他：错误
     * @note 目标市场为中国大陆的客户请不要调用此接口，如果目标市场为海外用户，请通过技术支持联系我们，了解 env_config 的配置方法，以确保 App 遵守 GDPR 标准。
     *
     */
    @NonNull 
    IntMsg setGlobalEnv(@NonNull StringMsg envConfig);
    /**
     *
     * 开始监听设备旋转方向，开启之后，如果设备自动旋转打开，播放器会自动根据当前设备方向来旋转视频方向。
     * <h1>该接口目前只适用安卓端，IOS端会自动开启该能力</h1>
     * 在调用该接口前，请务必向用户告知隐私风险。
     * 如有需要，请确认是否有获取旋转sensor的权限。
     * @return true : 开启成功
     *         false : 开启失败，如开启过早，还未等到上下文初始化、获取sensor失败等原因
     */
    @NonNull 
    BoolMsg startVideoOrientationService();

    /** The codec used by TXFlutterSuperPlayerPluginAPI. */
    static @NonNull MessageCodec<Object> getCodec() {
      return TXFlutterSuperPlayerPluginAPICodec.INSTANCE;
    }
    /**Sets up an instance of `TXFlutterSuperPlayerPluginAPI` to handle messages through the `binaryMessenger`. */
    static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable TXFlutterSuperPlayerPluginAPI api) {
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.getPlatformVersion", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  StringMsg output = api.getPlatformVersion();
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.createVodPlayer", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  PlayerMsg output = api.createVodPlayer();
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.createLivePlayer", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  PlayerMsg output = api.createLivePlayer();
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.setConsoleEnabled", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolMsg enabledArg = (BoolMsg) args.get(0);
                try {
                  api.setConsoleEnabled(enabledArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.releasePlayer", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerIdArg = (PlayerMsg) args.get(0);
                try {
                  api.releasePlayer(playerIdArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.setGlobalMaxCacheSize", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                IntMsg sizeArg = (IntMsg) args.get(0);
                try {
                  api.setGlobalMaxCacheSize(sizeArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.setGlobalCacheFolderPath", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                StringMsg postfixPathArg = (StringMsg) args.get(0);
                try {
                  BoolMsg output = api.setGlobalCacheFolderPath(postfixPathArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.setGlobalCacheFolderCustomPath", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                CachePathMsg cacheMsgArg = (CachePathMsg) args.get(0);
                try {
                  BoolMsg output = api.setGlobalCacheFolderCustomPath(cacheMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.setGlobalLicense", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                LicenseMsg licenseMsgArg = (LicenseMsg) args.get(0);
                try {
                  api.setGlobalLicense(licenseMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.setLogLevel", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                IntMsg logLevelArg = (IntMsg) args.get(0);
                try {
                  api.setLogLevel(logLevelArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.getLiteAVSDKVersion", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  StringMsg output = api.getLiteAVSDKVersion();
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.setGlobalEnv", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                StringMsg envConfigArg = (StringMsg) args.get(0);
                try {
                  IntMsg output = api.setGlobalEnv(envConfigArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterSuperPlayerPluginAPI.startVideoOrientationService", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  BoolMsg output = api.startVideoOrientationService();
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
    }
  }

  private static class TXFlutterNativeAPICodec extends StandardMessageCodec {
    public static final TXFlutterNativeAPICodec INSTANCE = new TXFlutterNativeAPICodec();

    private TXFlutterNativeAPICodec() {}

    @Override
    protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) {
      switch (type) {
        case (byte) 128:
          return BoolMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 129:
          return DoubleMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 130:
          return IntMsg.fromList((ArrayList<Object>) readValue(buffer));
        default:
          return super.readValueOfType(type, buffer);
      }
    }

    @Override
    protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) {
      if (value instanceof BoolMsg) {
        stream.write(128);
        writeValue(stream, ((BoolMsg) value).toList());
      } else if (value instanceof DoubleMsg) {
        stream.write(129);
        writeValue(stream, ((DoubleMsg) value).toList());
      } else if (value instanceof IntMsg) {
        stream.write(130);
        writeValue(stream, ((IntMsg) value).toList());
      } else {
        super.writeValue(stream, value);
      }
    }
  }

  /** Generated interface from Pigeon that represents a handler of messages from Flutter. */
  public interface TXFlutterNativeAPI {
    /** 修改当前界面亮度 */
    void setBrightness(@NonNull DoubleMsg brightness);
    /** 恢复当前界面亮度 */
    void restorePageBrightness();
    /** 获得当前界面亮度 0.0 ~ 1.0 */
    @NonNull 
    DoubleMsg getBrightness();
    /** 获取系统界面亮度，IOS系统与界面亮度一致，安卓可能会有差异 */
    @NonNull 
    DoubleMsg getSysBrightness();
    /** 设置当前系统音量，0.0 ~ 1.0 */
    void setSystemVolume(@NonNull DoubleMsg volume);
    /** 获得当前系统音量，范围：0.0 ~ 1.0 */
    @NonNull 
    DoubleMsg getSystemVolume();
    /** 释放音频焦点，只用于安卓端 */
    void abandonAudioFocus();
    /** 请求获得音频焦点，只用于安卓端 */
    void requestAudioFocus();
    /**
     * 当前设备是否支持画中画模式
     * @return [TXVodPlayEvent]
     *  0 可开启画中画模式
     *  -101  android版本过低
     *  -102  画中画权限关闭/设备不支持画中画
     *  -103  当前界面已销毁
     */
    @NonNull 
    IntMsg isDeviceSupportPip();
    /**
     *
     * register or unregister system brightness
     *
     */
    void registerSysBrightness(@NonNull BoolMsg isRegister);

    /** The codec used by TXFlutterNativeAPI. */
    static @NonNull MessageCodec<Object> getCodec() {
      return TXFlutterNativeAPICodec.INSTANCE;
    }
    /**Sets up an instance of `TXFlutterNativeAPI` to handle messages through the `binaryMessenger`. */
    static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable TXFlutterNativeAPI api) {
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterNativeAPI.setBrightness", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                DoubleMsg brightnessArg = (DoubleMsg) args.get(0);
                try {
                  api.setBrightness(brightnessArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterNativeAPI.restorePageBrightness", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  api.restorePageBrightness();
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterNativeAPI.getBrightness", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  DoubleMsg output = api.getBrightness();
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterNativeAPI.getSysBrightness", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  DoubleMsg output = api.getSysBrightness();
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterNativeAPI.setSystemVolume", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                DoubleMsg volumeArg = (DoubleMsg) args.get(0);
                try {
                  api.setSystemVolume(volumeArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterNativeAPI.getSystemVolume", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  DoubleMsg output = api.getSystemVolume();
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterNativeAPI.abandonAudioFocus", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  api.abandonAudioFocus();
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterNativeAPI.requestAudioFocus", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  api.requestAudioFocus();
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterNativeAPI.isDeviceSupportPip", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  IntMsg output = api.isDeviceSupportPip();
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterNativeAPI.registerSysBrightness", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolMsg isRegisterArg = (BoolMsg) args.get(0);
                try {
                  api.registerSysBrightness(isRegisterArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
    }
  }

  private static class TXFlutterVodPlayerApiCodec extends StandardMessageCodec {
    public static final TXFlutterVodPlayerApiCodec INSTANCE = new TXFlutterVodPlayerApiCodec();

    private TXFlutterVodPlayerApiCodec() {}

    @Override
    protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) {
      switch (type) {
        case (byte) 128:
          return BoolMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 129:
          return BoolPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 130:
          return DoubleMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 131:
          return DoublePlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 132:
          return FTXVodPlayConfigPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 133:
          return IntMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 134:
          return IntPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 135:
          return ListMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 136:
          return PipParamsPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 137:
          return PlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 138:
          return StringListPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 139:
          return StringOptionPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 140:
          return StringPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 141:
          return SubTitlePlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 142:
          return SubTitleRenderModelPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 143:
          return TXPlayInfoParamsPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 144:
          return TXPlayerDrmMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 145:
          return UInt8ListMsg.fromList((ArrayList<Object>) readValue(buffer));
        default:
          return super.readValueOfType(type, buffer);
      }
    }

    @Override
    protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) {
      if (value instanceof BoolMsg) {
        stream.write(128);
        writeValue(stream, ((BoolMsg) value).toList());
      } else if (value instanceof BoolPlayerMsg) {
        stream.write(129);
        writeValue(stream, ((BoolPlayerMsg) value).toList());
      } else if (value instanceof DoubleMsg) {
        stream.write(130);
        writeValue(stream, ((DoubleMsg) value).toList());
      } else if (value instanceof DoublePlayerMsg) {
        stream.write(131);
        writeValue(stream, ((DoublePlayerMsg) value).toList());
      } else if (value instanceof FTXVodPlayConfigPlayerMsg) {
        stream.write(132);
        writeValue(stream, ((FTXVodPlayConfigPlayerMsg) value).toList());
      } else if (value instanceof IntMsg) {
        stream.write(133);
        writeValue(stream, ((IntMsg) value).toList());
      } else if (value instanceof IntPlayerMsg) {
        stream.write(134);
        writeValue(stream, ((IntPlayerMsg) value).toList());
      } else if (value instanceof ListMsg) {
        stream.write(135);
        writeValue(stream, ((ListMsg) value).toList());
      } else if (value instanceof PipParamsPlayerMsg) {
        stream.write(136);
        writeValue(stream, ((PipParamsPlayerMsg) value).toList());
      } else if (value instanceof PlayerMsg) {
        stream.write(137);
        writeValue(stream, ((PlayerMsg) value).toList());
      } else if (value instanceof StringListPlayerMsg) {
        stream.write(138);
        writeValue(stream, ((StringListPlayerMsg) value).toList());
      } else if (value instanceof StringOptionPlayerMsg) {
        stream.write(139);
        writeValue(stream, ((StringOptionPlayerMsg) value).toList());
      } else if (value instanceof StringPlayerMsg) {
        stream.write(140);
        writeValue(stream, ((StringPlayerMsg) value).toList());
      } else if (value instanceof SubTitlePlayerMsg) {
        stream.write(141);
        writeValue(stream, ((SubTitlePlayerMsg) value).toList());
      } else if (value instanceof SubTitleRenderModelPlayerMsg) {
        stream.write(142);
        writeValue(stream, ((SubTitleRenderModelPlayerMsg) value).toList());
      } else if (value instanceof TXPlayInfoParamsPlayerMsg) {
        stream.write(143);
        writeValue(stream, ((TXPlayInfoParamsPlayerMsg) value).toList());
      } else if (value instanceof TXPlayerDrmMsg) {
        stream.write(144);
        writeValue(stream, ((TXPlayerDrmMsg) value).toList());
      } else if (value instanceof UInt8ListMsg) {
        stream.write(145);
        writeValue(stream, ((UInt8ListMsg) value).toList());
      } else {
        super.writeValue(stream, value);
      }
    }
  }

  /** Generated interface from Pigeon that represents a handler of messages from Flutter. */
  public interface TXFlutterVodPlayerApi {
    /**
     * 播放器初始化，创建共享纹理、初始化播放器
     *
     * To initialize the player, you would need to create a shared texture and initialize the player.
     * @param onlyAudio 是否是纯音频模式 if pure audio mode
     */
    @NonNull 
    IntMsg initialize(@NonNull BoolPlayerMsg onlyAudio);
    /**
     * 通过url开始播放视频
     * 10.7版本开始，startPlay变更为startVodPlay，需要通过 {@link SuperPlayerPlugin#setGlobalLicense} 设置 Licence 后方可成功播放，
     * 否则将播放失败（黑屏），全局仅设置一次即可。直播 Licence、短视频 Licence 和视频播放 Licence 均可使用，若您暂未获取上述 Licence ，
     * 可[快速免费申请测试版 Licence](https://cloud.tencent.com/act/event/License) 以正常播放，正式版 License 需[购买]
     * (https://cloud.tencent.com/document/product/881/74588#.E8.B4.AD.E4.B9.B0.E5.B9.B6.E6.96.B0.E5.BB.BA.E6.AD.A3.E5.BC.8F.E7.89.88-license)。
     *
     * Starting from version 10.7, the method `startPlay` has been changed to `startVodPlay` for playing videos via a URL.
     * To play videos successfully, it is necessary to set the license by using the method `SuperPlayerPlugin#setGlobalLicense`.
     * Failure to set the license will result in video playback failure (a black screen).
     * Live streaming, short video, and video playback licenses can all be used. If you do not have any of the above licenses,
     * you can apply for a free trial license to play videos normally[Quickly apply for a free trial version Licence]
     * (https://cloud.tencent.com/act/event/License).Official licenses can be purchased
     * (https://cloud.tencent.com/document/product/881/74588#.E8.B4.AD.E4.B9.B0.E5.B9.B6.E6.96.B0.E5.BB.BA.E6.AD.A3.E5.BC.8F.E7.89.88-license).
     * @param url : 视频播放地址 video playback address
     * return 是否播放成功 if play successfully
     */
    @NonNull 
    BoolMsg startVodPlay(@NonNull StringPlayerMsg url);
    /**
     * 通过fileId播放视频
     * 10.7版本开始，startPlayWithParams变更为startVodPlayWithParams，需要通过 {@link SuperPlayerPlugin#setGlobalLicense} 设置 Licence 后方可成功播放，
     * 否则将播放失败（黑屏），全局仅设置一次即可。直播 Licence、短视频 Licence 和视频播放 Licence 均可使用，若您暂未获取上述 Licence ，
     * 可[快速免费申请测试版 Licence](https://cloud.tencent.com/act/event/License) 以正常播放，正式版 License 需[购买]
     * (https://cloud.tencent.com/document/product/881/74588#.E8.B4.AD.E4.B9.B0.E5.B9.B6.E6.96.B0.E5.BB.BA.E6.AD.A3.E5.BC.8F.E7.89.88-license)。
     *
     * Starting from version 10.7, the method "startPlayWithParams" has been changed to "startVodPlayWithParams" for playing videos using fileId.
     * To play the video successfully, you need to set the Licence using "SuperPlayerPlugin#setGlobalLicense" method before playing the video.
     * If you do not set the Licence, the video will not play (black screen). The Licence for live streaming,
     * short video, and video playback can all be used. If you have not obtained the Licence, you can apply for a free trial version [here]
     * (https://cloud.tencent.com/act/event/License) for normal playback. To use the official version, you need to [purchase]
     * (https://cloud.tencent.com/document/product/881/74588#.E8.B4.AD.E4.B9.B0.E5.B9.B6.E6.96.B0.E5.BB.BA.E6.AD.A3.E5.BC.8F.E7.89.88-license).
     * @params : see[TXPlayInfoParams]
     * return 是否播放成功  if play successful
     */
    void startVodPlayWithParams(@NonNull TXPlayInfoParamsPlayerMsg params);
    /**
     * 播放 DRM 加密视频
     *
     * Playing DRM-encrypted video.
     */
    @NonNull 
    IntMsg startPlayDrm(@NonNull TXPlayerDrmMsg params);
    /**
     * 设置是否自动播放
     *
     * set autoplay
     */
    void setAutoPlay(@NonNull BoolPlayerMsg isAutoPlay);
    /**
     * 停止播放
     *
     * Stop playback
     * return 是否停止成功 if stop successful
     */
    @NonNull 
    BoolMsg stop(@NonNull BoolPlayerMsg isNeedClear);
    /**
     * 视频是否处于正在播放中
     *
     * Is the video currently playing
     */
    @NonNull 
    BoolMsg isPlaying(@NonNull PlayerMsg playerMsg);
    /**
     * 视频暂停，必须在播放器开始播放的时候调用
     *
     * pause video, it must be called when the player starts playing
     */
    void pause(@NonNull PlayerMsg playerMsg);
    /**
     * 继续播放，在暂停的时候调用
     *
     * resume playback, it should be called when the video is paused
     */
    void resume(@NonNull PlayerMsg playerMsg);
    /**
     * 设置是否静音
     *
     * Set whether to mute or not
     */
    void setMute(@NonNull BoolPlayerMsg mute);
    /**
     * 设置是否循环播放
     *
     * Set whether to loop playback or not
     */
    void setLoop(@NonNull BoolPlayerMsg loop);
    /**
     * 将视频播放进度定位到指定的进度进行播放
     *
     * Set the video playback progress to a specific time and start playing.
     * progress 要定位的视频时间，单位 秒 The video playback time to be located, in seconds
     */
    void seek(@NonNull DoublePlayerMsg progress);
    /**
     * 跳转到视频流指定PDT时间点, 可实现视频快进,快退,进度条跳转等功能
     * 单位毫秒(ms)
     * 播放器高级版 11.6 版本开始支持
     *
     * Jump to the specified PDT time point of the video stream, which can realize video fast forward, fast rewind, progress bar jump and other functions.
     * Unit millisecond (ms)
     * Player Premium version 11.6 starts to support
     */
    void seekToPdtTime(@NonNull IntPlayerMsg pdtTimeMs);
    /**
     * 设置播放速率，默认速率 1
     *
     * Set the playback speed, with a default speed of 1.
     */
    void setRate(@NonNull DoublePlayerMsg rate);
    /**
     * 获得播放视频解析出来的码率信息
     *
     * get the bitrate information extracted from playing a video
     * return List<Map>
     * Bitrate：index 码率序号，
     *         width 码率对应视频宽度，
     *         height 码率对应视频高度,
     *         bitrate 码率值
     *
     * Bitrate：index:bitrate index，
     *         width:the video with of this bitrate，
     *         height:the video height of this bitrate,
     *         bitrate:bitrate value
     */
    @NonNull 
    ListMsg getSupportedBitrate(@NonNull PlayerMsg playerMsg);
    /**
     * 获得当前设置的码率序号
     *
     * Get the index of the current bitrate setting
     */
    @NonNull 
    IntMsg getBitrateIndex(@NonNull PlayerMsg playerMsg);
    /**
     * 设置码率序号
     *
     * Set the index of the bitrate setting.
     */
    void setBitrateIndex(@NonNull IntPlayerMsg index);
    /**
     * 设置视频播放开始时间，单位 秒
     *
     * Set the start time of the video playback, in seconds.
     */
    void setStartTime(@NonNull DoublePlayerMsg startTime);
    /**
     * 设置视频声音 0~100
     *
     * Set the volume of the video, ranging from 0 to 100.
     */
    void setAudioPlayOutVolume(@NonNull IntPlayerMsg volume);
    /**
     * 请求获得音频焦点
     *
     * Request audio focus.
     */
    @NonNull 
    BoolMsg setRequestAudioFocus(@NonNull BoolPlayerMsg focus);
    /**
     * 设置播放器配置
     *
     * Set player configuration
     * config @see [FTXVodPlayConfig]
     */
    void setConfig(@NonNull FTXVodPlayConfigPlayerMsg config);
    /**
     * 获得当前已经播放的时间，单位 秒
     *
     * Get the current playback time, in seconds.
     */
    @NonNull 
    DoubleMsg getCurrentPlaybackTime(@NonNull PlayerMsg playerMsg);
    /**
     * 获得当前视频已缓存的时间
     *
     * Get the current amount of video that has been buffered.
     */
    @NonNull 
    DoubleMsg getBufferDuration(@NonNull PlayerMsg playerMsg);
    /**
     * 获得当前视频的可播放时间
     *
     * Get the current playable duration of the video.
     */
    @NonNull 
    DoubleMsg getPlayableDuration(@NonNull PlayerMsg playerMsg);
    /**
     * 获得当前播放视频的宽度
     *
     * Get the width of the currently playing video.
     */
    @NonNull 
    IntMsg getWidth(@NonNull PlayerMsg playerMsg);
    /**
     * 获得当前播放视频的高度
     *
     * Get the height of the currently playing video.
     */
    @NonNull 
    IntMsg getHeight(@NonNull PlayerMsg playerMsg);
    /**
     * 设置播放视频的token
     *
     * Set the token for playing the video.
     */
    void setToken(@NonNull StringPlayerMsg token);
    /**
     * 当前播放的视频是否循环播放
     *
     * Is the currently playing video set to loop
     */
    @NonNull 
    BoolMsg isLoop(@NonNull PlayerMsg playerMsg);
    /**
     * 开启/关闭硬件编码
     *
     * Enable/Disable hardware encoding.
     */
    @NonNull 
    BoolMsg enableHardwareDecode(@NonNull BoolPlayerMsg enable);
    /**
     * 进入画中画模式，进入画中画模式，需要适配画中画模式的界面，安卓只支持7.0以上机型
     * <h1>
     * 由于android系统限制，传递的图标大小不得超过1M，否则无法显示
     * </h1>
     * @param backIcon playIcon pauseIcon forwardIcon 为播放后退、播放、暂停、前进的图标，如果赋值的话，将会使用传递的图标，否则
     * 使用系统默认图标，只支持flutter本地资源图片，传递的时候，与flutter使用图片资源一致，例如： images/back_icon.png
     */
    @NonNull 
    IntMsg enterPictureInPictureMode(@NonNull PipParamsPlayerMsg pipParamsMsg);
    /**
     * 退出画中画，如果该播放器处于画中画模式
     *
     * Exit picture-in-picture mode if the video player is in picture-in-picture mode.
     */
    void exitPictureInPictureMode(@NonNull PlayerMsg playerMsg);

    void initImageSprite(@NonNull StringListPlayerMsg spriteInfo);

    @NonNull 
    UInt8ListMsg getImageSprite(@NonNull DoublePlayerMsg time);
    /**
     * 获取总时长
     *
     * To get the total duration
     */
    @NonNull 
    DoubleMsg getDuration(@NonNull PlayerMsg playerMsg);

    void addSubtitleSource(@NonNull SubTitlePlayerMsg playerMsg);

    @NonNull 
    ListMsg getSubtitleTrackInfo(@NonNull PlayerMsg playerMsg);

    @NonNull 
    ListMsg getAudioTrackInfo(@NonNull PlayerMsg playerMsg);

    void selectTrack(@NonNull IntPlayerMsg playerMsg);

    void deselectTrack(@NonNull IntPlayerMsg playerMsg);

    void setSubtitleStyle(@NonNull SubTitleRenderModelPlayerMsg playerMsg);

    void setStringOption(@NonNull StringOptionPlayerMsg playerMsg);

    /** The codec used by TXFlutterVodPlayerApi. */
    static @NonNull MessageCodec<Object> getCodec() {
      return TXFlutterVodPlayerApiCodec.INSTANCE;
    }
    /**Sets up an instance of `TXFlutterVodPlayerApi` to handle messages through the `binaryMessenger`. */
    static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable TXFlutterVodPlayerApi api) {
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.initialize", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolPlayerMsg onlyAudioArg = (BoolPlayerMsg) args.get(0);
                try {
                  IntMsg output = api.initialize(onlyAudioArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.startVodPlay", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                StringPlayerMsg urlArg = (StringPlayerMsg) args.get(0);
                try {
                  BoolMsg output = api.startVodPlay(urlArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.startVodPlayWithParams", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                TXPlayInfoParamsPlayerMsg paramsArg = (TXPlayInfoParamsPlayerMsg) args.get(0);
                try {
                  api.startVodPlayWithParams(paramsArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.startPlayDrm", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                TXPlayerDrmMsg paramsArg = (TXPlayerDrmMsg) args.get(0);
                try {
                  IntMsg output = api.startPlayDrm(paramsArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setAutoPlay", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolPlayerMsg isAutoPlayArg = (BoolPlayerMsg) args.get(0);
                try {
                  api.setAutoPlay(isAutoPlayArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.stop", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolPlayerMsg isNeedClearArg = (BoolPlayerMsg) args.get(0);
                try {
                  BoolMsg output = api.stop(isNeedClearArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.isPlaying", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  BoolMsg output = api.isPlaying(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.pause", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  api.pause(playerMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.resume", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  api.resume(playerMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setMute", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolPlayerMsg muteArg = (BoolPlayerMsg) args.get(0);
                try {
                  api.setMute(muteArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setLoop", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolPlayerMsg loopArg = (BoolPlayerMsg) args.get(0);
                try {
                  api.setLoop(loopArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.seek", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                DoublePlayerMsg progressArg = (DoublePlayerMsg) args.get(0);
                try {
                  api.seek(progressArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.seekToPdtTime", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                IntPlayerMsg pdtTimeMsArg = (IntPlayerMsg) args.get(0);
                try {
                  api.seekToPdtTime(pdtTimeMsArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setRate", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                DoublePlayerMsg rateArg = (DoublePlayerMsg) args.get(0);
                try {
                  api.setRate(rateArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.getSupportedBitrate", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  ListMsg output = api.getSupportedBitrate(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.getBitrateIndex", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  IntMsg output = api.getBitrateIndex(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setBitrateIndex", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                IntPlayerMsg indexArg = (IntPlayerMsg) args.get(0);
                try {
                  api.setBitrateIndex(indexArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setStartTime", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                DoublePlayerMsg startTimeArg = (DoublePlayerMsg) args.get(0);
                try {
                  api.setStartTime(startTimeArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setAudioPlayOutVolume", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                IntPlayerMsg volumeArg = (IntPlayerMsg) args.get(0);
                try {
                  api.setAudioPlayOutVolume(volumeArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setRequestAudioFocus", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolPlayerMsg focusArg = (BoolPlayerMsg) args.get(0);
                try {
                  BoolMsg output = api.setRequestAudioFocus(focusArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setConfig", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                FTXVodPlayConfigPlayerMsg configArg = (FTXVodPlayConfigPlayerMsg) args.get(0);
                try {
                  api.setConfig(configArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.getCurrentPlaybackTime", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  DoubleMsg output = api.getCurrentPlaybackTime(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.getBufferDuration", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  DoubleMsg output = api.getBufferDuration(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.getPlayableDuration", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  DoubleMsg output = api.getPlayableDuration(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.getWidth", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  IntMsg output = api.getWidth(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.getHeight", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  IntMsg output = api.getHeight(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setToken", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                StringPlayerMsg tokenArg = (StringPlayerMsg) args.get(0);
                try {
                  api.setToken(tokenArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.isLoop", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  BoolMsg output = api.isLoop(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.enableHardwareDecode", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolPlayerMsg enableArg = (BoolPlayerMsg) args.get(0);
                try {
                  BoolMsg output = api.enableHardwareDecode(enableArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.enterPictureInPictureMode", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PipParamsPlayerMsg pipParamsMsgArg = (PipParamsPlayerMsg) args.get(0);
                try {
                  IntMsg output = api.enterPictureInPictureMode(pipParamsMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.exitPictureInPictureMode", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  api.exitPictureInPictureMode(playerMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.initImageSprite", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                StringListPlayerMsg spriteInfoArg = (StringListPlayerMsg) args.get(0);
                try {
                  api.initImageSprite(spriteInfoArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.getImageSprite", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                DoublePlayerMsg timeArg = (DoublePlayerMsg) args.get(0);
                try {
                  UInt8ListMsg output = api.getImageSprite(timeArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.getDuration", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  DoubleMsg output = api.getDuration(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.addSubtitleSource", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                SubTitlePlayerMsg playerMsgArg = (SubTitlePlayerMsg) args.get(0);
                try {
                  api.addSubtitleSource(playerMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.getSubtitleTrackInfo", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  ListMsg output = api.getSubtitleTrackInfo(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.getAudioTrackInfo", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  ListMsg output = api.getAudioTrackInfo(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.selectTrack", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                IntPlayerMsg playerMsgArg = (IntPlayerMsg) args.get(0);
                try {
                  api.selectTrack(playerMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.deselectTrack", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                IntPlayerMsg playerMsgArg = (IntPlayerMsg) args.get(0);
                try {
                  api.deselectTrack(playerMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setSubtitleStyle", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                SubTitleRenderModelPlayerMsg playerMsgArg = (SubTitleRenderModelPlayerMsg) args.get(0);
                try {
                  api.setSubtitleStyle(playerMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterVodPlayerApi.setStringOption", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                StringOptionPlayerMsg playerMsgArg = (StringOptionPlayerMsg) args.get(0);
                try {
                  api.setStringOption(playerMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
    }
  }

  private static class TXFlutterLivePlayerApiCodec extends StandardMessageCodec {
    public static final TXFlutterLivePlayerApiCodec INSTANCE = new TXFlutterLivePlayerApiCodec();

    private TXFlutterLivePlayerApiCodec() {}

    @Override
    protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) {
      switch (type) {
        case (byte) 128:
          return BoolMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 129:
          return BoolPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 130:
          return FTXLivePlayConfigPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 131:
          return IntMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 132:
          return IntPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 133:
          return PipParamsPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 134:
          return PlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 135:
          return StringIntPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 136:
          return StringPlayerMsg.fromList((ArrayList<Object>) readValue(buffer));
        default:
          return super.readValueOfType(type, buffer);
      }
    }

    @Override
    protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) {
      if (value instanceof BoolMsg) {
        stream.write(128);
        writeValue(stream, ((BoolMsg) value).toList());
      } else if (value instanceof BoolPlayerMsg) {
        stream.write(129);
        writeValue(stream, ((BoolPlayerMsg) value).toList());
      } else if (value instanceof FTXLivePlayConfigPlayerMsg) {
        stream.write(130);
        writeValue(stream, ((FTXLivePlayConfigPlayerMsg) value).toList());
      } else if (value instanceof IntMsg) {
        stream.write(131);
        writeValue(stream, ((IntMsg) value).toList());
      } else if (value instanceof IntPlayerMsg) {
        stream.write(132);
        writeValue(stream, ((IntPlayerMsg) value).toList());
      } else if (value instanceof PipParamsPlayerMsg) {
        stream.write(133);
        writeValue(stream, ((PipParamsPlayerMsg) value).toList());
      } else if (value instanceof PlayerMsg) {
        stream.write(134);
        writeValue(stream, ((PlayerMsg) value).toList());
      } else if (value instanceof StringIntPlayerMsg) {
        stream.write(135);
        writeValue(stream, ((StringIntPlayerMsg) value).toList());
      } else if (value instanceof StringPlayerMsg) {
        stream.write(136);
        writeValue(stream, ((StringPlayerMsg) value).toList());
      } else {
        super.writeValue(stream, value);
      }
    }
  }

  /** Generated interface from Pigeon that represents a handler of messages from Flutter. */
  public interface TXFlutterLivePlayerApi {
    /**
     * 播放器初始化，创建共享纹理、初始化播放器
     * @param onlyAudio 是否是纯音频模式
     */
    @NonNull 
    IntMsg initialize(@NonNull BoolPlayerMsg onlyAudio);
    /**
     *
     * 当设置[LivePlayer] 类型播放器时，需要参数[playType]
     * 参考: [PlayType.LIVE_RTMP] ...
     * 10.7版本开始，startPlay变更为startLivePlay，需要通过 {@link SuperPlayerPlugin#setGlobalLicense} 设置 Licence 后方可成功播放，
     * 否则将播放失败（黑屏），全局仅设置一次即可。直播 Licence、短视频 Licence 和视频播放 Licence 均可使用，若您暂未获取上述 Licence ，
     * 可[快速免费申请测试版 Licence](https://cloud.tencent.com/act/event/License) 以正常播放，正式版 License 需[购买]
     * (https://cloud.tencent.com/document/product/881/74588#.E8.B4.AD.E4.B9.B0.E5.B9.B6.E6.96.B0.E5.BB.BA.E6.AD.A3.E5.BC.8F.E7.89.88-license)。
     */
    @NonNull 
    BoolMsg startLivePlay(@NonNull StringIntPlayerMsg playerMsg);
    /**
     * 停止播放
     * return 是否停止成功
     */
    @NonNull 
    BoolMsg stop(@NonNull BoolPlayerMsg isNeedClear);
    /** 视频是否处于正在播放中 */
    @NonNull 
    BoolMsg isPlaying(@NonNull PlayerMsg playerMsg);
    /** 视频暂停，必须在播放器开始播放的时候调用 */
    void pause(@NonNull PlayerMsg playerMsg);
    /** 继续播放，在暂停的时候调用 */
    void resume(@NonNull PlayerMsg playerMsg);
    /** 设置直播模式，see TXPlayerLiveMode */
    void setLiveMode(@NonNull IntPlayerMsg mode);
    /** 设置视频声音 0~100 */
    void setVolume(@NonNull IntPlayerMsg volume);
    /** 设置是否静音 */
    void setMute(@NonNull BoolPlayerMsg mute);
    /** 切换播放流 */
    @NonNull 
    IntMsg switchStream(@NonNull StringPlayerMsg url);
    /** 设置appId */
    void setAppID(@NonNull StringPlayerMsg appId);
    /**
     * 设置播放器配置
     * config @see [FTXLivePlayConfig]
     */
    void setConfig(@NonNull FTXLivePlayConfigPlayerMsg config);
    /** 开启/关闭硬件编码 */
    @NonNull 
    BoolMsg enableHardwareDecode(@NonNull BoolPlayerMsg enable);
    /**
     * 进入画中画模式，进入画中画模式，需要适配画中画模式的界面，安卓只支持7.0以上机型
     * <h1>
     * 由于android系统限制，传递的图标大小不得超过1M，否则无法显示
     * </h1>
     * @param backIcon playIcon pauseIcon forwardIcon 为播放后退、播放、暂停、前进的图标，仅适用于android，如果赋值的话，将会使用传递的图标，否则
     * 使用系统默认图标，只支持flutter本地资源图片，传递的时候，与flutter使用图片资源一致，例如： images/back_icon.png
     */
    @NonNull 
    IntMsg enterPictureInPictureMode(@NonNull PipParamsPlayerMsg pipParamsMsg);
    /** 退出画中画，如果该播放器处于画中画模式 */
    void exitPictureInPictureMode(@NonNull PlayerMsg playerMsg);

    /** The codec used by TXFlutterLivePlayerApi. */
    static @NonNull MessageCodec<Object> getCodec() {
      return TXFlutterLivePlayerApiCodec.INSTANCE;
    }
    /**Sets up an instance of `TXFlutterLivePlayerApi` to handle messages through the `binaryMessenger`. */
    static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable TXFlutterLivePlayerApi api) {
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.initialize", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolPlayerMsg onlyAudioArg = (BoolPlayerMsg) args.get(0);
                try {
                  IntMsg output = api.initialize(onlyAudioArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.startLivePlay", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                StringIntPlayerMsg playerMsgArg = (StringIntPlayerMsg) args.get(0);
                try {
                  BoolMsg output = api.startLivePlay(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.stop", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolPlayerMsg isNeedClearArg = (BoolPlayerMsg) args.get(0);
                try {
                  BoolMsg output = api.stop(isNeedClearArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.isPlaying", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  BoolMsg output = api.isPlaying(playerMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.pause", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  api.pause(playerMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.resume", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  api.resume(playerMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.setLiveMode", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                IntPlayerMsg modeArg = (IntPlayerMsg) args.get(0);
                try {
                  api.setLiveMode(modeArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.setVolume", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                IntPlayerMsg volumeArg = (IntPlayerMsg) args.get(0);
                try {
                  api.setVolume(volumeArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.setMute", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolPlayerMsg muteArg = (BoolPlayerMsg) args.get(0);
                try {
                  api.setMute(muteArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.switchStream", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                StringPlayerMsg urlArg = (StringPlayerMsg) args.get(0);
                try {
                  IntMsg output = api.switchStream(urlArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.setAppID", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                StringPlayerMsg appIdArg = (StringPlayerMsg) args.get(0);
                try {
                  api.setAppID(appIdArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.setConfig", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                FTXLivePlayConfigPlayerMsg configArg = (FTXLivePlayConfigPlayerMsg) args.get(0);
                try {
                  api.setConfig(configArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.enableHardwareDecode", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                BoolPlayerMsg enableArg = (BoolPlayerMsg) args.get(0);
                try {
                  BoolMsg output = api.enableHardwareDecode(enableArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.enterPictureInPictureMode", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PipParamsPlayerMsg pipParamsMsgArg = (PipParamsPlayerMsg) args.get(0);
                try {
                  IntMsg output = api.enterPictureInPictureMode(pipParamsMsgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterLivePlayerApi.exitPictureInPictureMode", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PlayerMsg playerMsgArg = (PlayerMsg) args.get(0);
                try {
                  api.exitPictureInPictureMode(playerMsgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
    }
  }

  private static class TXFlutterDownloadApiCodec extends StandardMessageCodec {
    public static final TXFlutterDownloadApiCodec INSTANCE = new TXFlutterDownloadApiCodec();

    private TXFlutterDownloadApiCodec() {}

    @Override
    protected Object readValueOfType(byte type, @NonNull ByteBuffer buffer) {
      switch (type) {
        case (byte) 128:
          return BoolMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 129:
          return IntMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 130:
          return MapMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 131:
          return PreLoadInfoMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 132:
          return PreLoadMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 133:
          return TXDownloadListMsg.fromList((ArrayList<Object>) readValue(buffer));
        case (byte) 134:
          return TXVodDownloadMediaMsg.fromList((ArrayList<Object>) readValue(buffer));
        default:
          return super.readValueOfType(type, buffer);
      }
    }

    @Override
    protected void writeValue(@NonNull ByteArrayOutputStream stream, Object value) {
      if (value instanceof BoolMsg) {
        stream.write(128);
        writeValue(stream, ((BoolMsg) value).toList());
      } else if (value instanceof IntMsg) {
        stream.write(129);
        writeValue(stream, ((IntMsg) value).toList());
      } else if (value instanceof MapMsg) {
        stream.write(130);
        writeValue(stream, ((MapMsg) value).toList());
      } else if (value instanceof PreLoadInfoMsg) {
        stream.write(131);
        writeValue(stream, ((PreLoadInfoMsg) value).toList());
      } else if (value instanceof PreLoadMsg) {
        stream.write(132);
        writeValue(stream, ((PreLoadMsg) value).toList());
      } else if (value instanceof TXDownloadListMsg) {
        stream.write(133);
        writeValue(stream, ((TXDownloadListMsg) value).toList());
      } else if (value instanceof TXVodDownloadMediaMsg) {
        stream.write(134);
        writeValue(stream, ((TXVodDownloadMediaMsg) value).toList());
      } else {
        super.writeValue(stream, value);
      }
    }
  }

  /** Generated interface from Pigeon that represents a handler of messages from Flutter. */
  public interface TXFlutterDownloadApi {
    /**
     * 启动预下载。
     * playUrl: 要预下载的url
     * preloadSizeMB: 预下载的大小（单位：MB）
     * preferredResolution 期望分辨率，long类型，值为高x宽。可参考如720*1080。不支持多分辨率或不需指定时，传-1。
     * 返回值：任务ID，可用这个任务ID停止预下载 [stopPreload]
     */
    @NonNull 
    IntMsg startPreLoad(@NonNull PreLoadMsg msg);

    void startPreLoadByParams(@NonNull PreLoadInfoMsg msg);
    /**
     * 停止预下载。
     * taskId： 任务id
     */
    void stopPreLoad(@NonNull IntMsg msg);
    /**
     * 开始下载
     * videoDownloadModel: 下载构造体
     */
    void startDownload(@NonNull TXVodDownloadMediaMsg msg);
    /**
     * 继续下载，与开始下载接口有区别，该接口会寻找对应的缓存，复用之前的缓存来续点下载，
     * 而开始下载接口会启动一个全新的下载
     * videoDownloadModel: 下载构造体
     */
    void resumeDownload(@NonNull TXVodDownloadMediaMsg msg);
    /**
     * 停止下载
     * videoDownloadModel: 下载构造体
     */
    void stopDownload(@NonNull TXVodDownloadMediaMsg msg);
    /** 设置下载请求头 */
    void setDownloadHeaders(@NonNull MapMsg headers);
    /** 获取所有视频下载列表 */
    @NonNull 
    TXDownloadListMsg getDownloadList();
    /** 获得指定视频的下载信息 */
    @NonNull 
    TXVodDownloadMediaMsg getDownloadInfo(@NonNull TXVodDownloadMediaMsg msg);
    /** 删除下载任务 */
    @NonNull 
    BoolMsg deleteDownloadMediaInfo(@NonNull TXVodDownloadMediaMsg msg);

    /** The codec used by TXFlutterDownloadApi. */
    static @NonNull MessageCodec<Object> getCodec() {
      return TXFlutterDownloadApiCodec.INSTANCE;
    }
    /**Sets up an instance of `TXFlutterDownloadApi` to handle messages through the `binaryMessenger`. */
    static void setup(@NonNull BinaryMessenger binaryMessenger, @Nullable TXFlutterDownloadApi api) {
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterDownloadApi.startPreLoad", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PreLoadMsg msgArg = (PreLoadMsg) args.get(0);
                try {
                  IntMsg output = api.startPreLoad(msgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterDownloadApi.startPreLoadByParams", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                PreLoadInfoMsg msgArg = (PreLoadInfoMsg) args.get(0);
                try {
                  api.startPreLoadByParams(msgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterDownloadApi.stopPreLoad", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                IntMsg msgArg = (IntMsg) args.get(0);
                try {
                  api.stopPreLoad(msgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterDownloadApi.startDownload", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                TXVodDownloadMediaMsg msgArg = (TXVodDownloadMediaMsg) args.get(0);
                try {
                  api.startDownload(msgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterDownloadApi.resumeDownload", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                TXVodDownloadMediaMsg msgArg = (TXVodDownloadMediaMsg) args.get(0);
                try {
                  api.resumeDownload(msgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterDownloadApi.stopDownload", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                TXVodDownloadMediaMsg msgArg = (TXVodDownloadMediaMsg) args.get(0);
                try {
                  api.stopDownload(msgArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterDownloadApi.setDownloadHeaders", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                MapMsg headersArg = (MapMsg) args.get(0);
                try {
                  api.setDownloadHeaders(headersArg);
                  wrapped.add(0, null);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterDownloadApi.getDownloadList", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                try {
                  TXDownloadListMsg output = api.getDownloadList();
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterDownloadApi.getDownloadInfo", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                TXVodDownloadMediaMsg msgArg = (TXVodDownloadMediaMsg) args.get(0);
                try {
                  TXVodDownloadMediaMsg output = api.getDownloadInfo(msgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
      {
        BasicMessageChannel<Object> channel =
            new BasicMessageChannel<>(
                binaryMessenger, "dev.flutter.pigeon.TXFlutterDownloadApi.deleteDownloadMediaInfo", getCodec());
        if (api != null) {
          channel.setMessageHandler(
              (message, reply) -> {
                ArrayList<Object> wrapped = new ArrayList<Object>();
                ArrayList<Object> args = (ArrayList<Object>) message;
                TXVodDownloadMediaMsg msgArg = (TXVodDownloadMediaMsg) args.get(0);
                try {
                  BoolMsg output = api.deleteDownloadMediaInfo(msgArg);
                  wrapped.add(0, output);
                }
 catch (Throwable exception) {
                  ArrayList<Object> wrappedError = wrapError(exception);
                  wrapped = wrappedError;
                }
                reply.reply(wrapped);
              });
        } else {
          channel.setMessageHandler(null);
        }
      }
    }
  }
}
