// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: call-signaling.proto

package ch.threema.protobuf.callsignaling;

public final class CallSignaling {
  private CallSignaling() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  public interface EnvelopeOrBuilder extends
      // @@protoc_insertion_point(interface_extends:callsignaling.Envelope)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Random amount of padding, ignored by the receiver
     * </pre>
     *
     * <code>bytes padding = 1;</code>
     * @return The padding.
     */
    com.google.protobuf.ByteString getPadding();

    /**
     * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
     * @return Whether the videoQualityProfile field is set.
     */
    boolean hasVideoQualityProfile();
    /**
     * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
     * @return The videoQualityProfile.
     */
    ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile getVideoQualityProfile();

    /**
     * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
     * @return Whether the captureStateChange field is set.
     */
    boolean hasCaptureStateChange();
    /**
     * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
     * @return The captureStateChange.
     */
    ch.threema.protobuf.callsignaling.CallSignaling.CaptureState getCaptureStateChange();

    public ch.threema.protobuf.callsignaling.CallSignaling.Envelope.ContentCase getContentCase();
  }
  /**
   * <pre>
   * Root signaling message
   * </pre>
   *
   * Protobuf type {@code callsignaling.Envelope}
   */
  public  static final class Envelope extends
      com.google.protobuf.GeneratedMessageLite<
          Envelope, Envelope.Builder> implements
      // @@protoc_insertion_point(message_implements:callsignaling.Envelope)
      EnvelopeOrBuilder {
    private Envelope() {
      padding_ = com.google.protobuf.ByteString.EMPTY;
    }
    private int contentCase_ = 0;
    private java.lang.Object content_;
    public enum ContentCase {
      VIDEO_QUALITY_PROFILE(2),
      CAPTURE_STATE_CHANGE(3),
      CONTENT_NOT_SET(0);
      private final int value;
      private ContentCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ContentCase valueOf(int value) {
        return forNumber(value);
      }

      public static ContentCase forNumber(int value) {
        switch (value) {
          case 2: return VIDEO_QUALITY_PROFILE;
          case 3: return CAPTURE_STATE_CHANGE;
          case 0: return CONTENT_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public ContentCase
    getContentCase() {
      return ContentCase.forNumber(
          contentCase_);
    }

    private void clearContent() {
      contentCase_ = 0;
      content_ = null;
    }

    public static final int PADDING_FIELD_NUMBER = 1;
    private com.google.protobuf.ByteString padding_;
    /**
     * <pre>
     * Random amount of padding, ignored by the receiver
     * </pre>
     *
     * <code>bytes padding = 1;</code>
     * @return The padding.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString getPadding() {
      return padding_;
    }
    /**
     * <pre>
     * Random amount of padding, ignored by the receiver
     * </pre>
     *
     * <code>bytes padding = 1;</code>
     * @param value The padding to set.
     */
    private void setPadding(com.google.protobuf.ByteString value) {
      value.getClass();
  
      padding_ = value;
    }
    /**
     * <pre>
     * Random amount of padding, ignored by the receiver
     * </pre>
     *
     * <code>bytes padding = 1;</code>
     */
    private void clearPadding() {
      
      padding_ = getDefaultInstance().getPadding();
    }

    public static final int VIDEO_QUALITY_PROFILE_FIELD_NUMBER = 2;
    /**
     * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
     */
    @java.lang.Override
    public boolean hasVideoQualityProfile() {
      return contentCase_ == 2;
    }
    /**
     * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
     */
    @java.lang.Override
    public ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile getVideoQualityProfile() {
      if (contentCase_ == 2) {
         return (ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile) content_;
      }
      return ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.getDefaultInstance();
    }
    /**
     * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
     */
    private void setVideoQualityProfile(ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile value) {
      value.getClass();
  content_ = value;
      contentCase_ = 2;
    }
    /**
     * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
     */
    private void mergeVideoQualityProfile(ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile value) {
      value.getClass();
  if (contentCase_ == 2 &&
          content_ != ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.getDefaultInstance()) {
        content_ = ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.newBuilder((ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile) content_)
            .mergeFrom(value).buildPartial();
      } else {
        content_ = value;
      }
      contentCase_ = 2;
    }
    /**
     * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
     */
    private void clearVideoQualityProfile() {
      if (contentCase_ == 2) {
        contentCase_ = 0;
        content_ = null;
      }
    }

    public static final int CAPTURE_STATE_CHANGE_FIELD_NUMBER = 3;
    /**
     * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
     */
    @java.lang.Override
    public boolean hasCaptureStateChange() {
      return contentCase_ == 3;
    }
    /**
     * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
     */
    @java.lang.Override
    public ch.threema.protobuf.callsignaling.CallSignaling.CaptureState getCaptureStateChange() {
      if (contentCase_ == 3) {
         return (ch.threema.protobuf.callsignaling.CallSignaling.CaptureState) content_;
      }
      return ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.getDefaultInstance();
    }
    /**
     * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
     */
    private void setCaptureStateChange(ch.threema.protobuf.callsignaling.CallSignaling.CaptureState value) {
      value.getClass();
  content_ = value;
      contentCase_ = 3;
    }
    /**
     * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
     */
    private void mergeCaptureStateChange(ch.threema.protobuf.callsignaling.CallSignaling.CaptureState value) {
      value.getClass();
  if (contentCase_ == 3 &&
          content_ != ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.getDefaultInstance()) {
        content_ = ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.newBuilder((ch.threema.protobuf.callsignaling.CallSignaling.CaptureState) content_)
            .mergeFrom(value).buildPartial();
      } else {
        content_ = value;
      }
      contentCase_ = 3;
    }
    /**
     * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
     */
    private void clearCaptureStateChange() {
      if (contentCase_ == 3) {
        contentCase_ = 0;
        content_ = null;
      }
    }

    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ch.threema.protobuf.callsignaling.CallSignaling.Envelope prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Root signaling message
     * </pre>
     *
     * Protobuf type {@code callsignaling.Envelope}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ch.threema.protobuf.callsignaling.CallSignaling.Envelope, Builder> implements
        // @@protoc_insertion_point(builder_implements:callsignaling.Envelope)
        ch.threema.protobuf.callsignaling.CallSignaling.EnvelopeOrBuilder {
      // Construct using ch.threema.protobuf.callsignaling.CallSignaling.Envelope.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public ContentCase
          getContentCase() {
        return instance.getContentCase();
      }

      public Builder clearContent() {
        copyOnWrite();
        instance.clearContent();
        return this;
      }


      /**
       * <pre>
       * Random amount of padding, ignored by the receiver
       * </pre>
       *
       * <code>bytes padding = 1;</code>
       * @return The padding.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString getPadding() {
        return instance.getPadding();
      }
      /**
       * <pre>
       * Random amount of padding, ignored by the receiver
       * </pre>
       *
       * <code>bytes padding = 1;</code>
       * @param value The padding to set.
       * @return This builder for chaining.
       */
      public Builder setPadding(com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setPadding(value);
        return this;
      }
      /**
       * <pre>
       * Random amount of padding, ignored by the receiver
       * </pre>
       *
       * <code>bytes padding = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearPadding() {
        copyOnWrite();
        instance.clearPadding();
        return this;
      }

      /**
       * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
       */
      @java.lang.Override
      public boolean hasVideoQualityProfile() {
        return instance.hasVideoQualityProfile();
      }
      /**
       * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
       */
      @java.lang.Override
      public ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile getVideoQualityProfile() {
        return instance.getVideoQualityProfile();
      }
      /**
       * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
       */
      public Builder setVideoQualityProfile(ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile value) {
        copyOnWrite();
        instance.setVideoQualityProfile(value);
        return this;
      }
      /**
       * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
       */
      public Builder setVideoQualityProfile(
          ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.Builder builderForValue) {
        copyOnWrite();
        instance.setVideoQualityProfile(builderForValue.build());
        return this;
      }
      /**
       * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
       */
      public Builder mergeVideoQualityProfile(ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile value) {
        copyOnWrite();
        instance.mergeVideoQualityProfile(value);
        return this;
      }
      /**
       * <code>.callsignaling.VideoQualityProfile video_quality_profile = 2;</code>
       */
      public Builder clearVideoQualityProfile() {
        copyOnWrite();
        instance.clearVideoQualityProfile();
        return this;
      }

      /**
       * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
       */
      @java.lang.Override
      public boolean hasCaptureStateChange() {
        return instance.hasCaptureStateChange();
      }
      /**
       * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
       */
      @java.lang.Override
      public ch.threema.protobuf.callsignaling.CallSignaling.CaptureState getCaptureStateChange() {
        return instance.getCaptureStateChange();
      }
      /**
       * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
       */
      public Builder setCaptureStateChange(ch.threema.protobuf.callsignaling.CallSignaling.CaptureState value) {
        copyOnWrite();
        instance.setCaptureStateChange(value);
        return this;
      }
      /**
       * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
       */
      public Builder setCaptureStateChange(
          ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.Builder builderForValue) {
        copyOnWrite();
        instance.setCaptureStateChange(builderForValue.build());
        return this;
      }
      /**
       * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
       */
      public Builder mergeCaptureStateChange(ch.threema.protobuf.callsignaling.CallSignaling.CaptureState value) {
        copyOnWrite();
        instance.mergeCaptureStateChange(value);
        return this;
      }
      /**
       * <code>.callsignaling.CaptureState capture_state_change = 3;</code>
       */
      public Builder clearCaptureStateChange() {
        copyOnWrite();
        instance.clearCaptureStateChange();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:callsignaling.Envelope)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ch.threema.protobuf.callsignaling.CallSignaling.Envelope();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "content_",
              "contentCase_",
              "padding_",
              ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.class,
              ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.class,
            };
            java.lang.String info =
                "\u0000\u0003\u0001\u0000\u0001\u0003\u0003\u0000\u0000\u0000\u0001\n\u0002<\u0000" +
                "\u0003<\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ch.threema.protobuf.callsignaling.CallSignaling.Envelope> parser = PARSER;
          if (parser == null) {
            synchronized (ch.threema.protobuf.callsignaling.CallSignaling.Envelope.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ch.threema.protobuf.callsignaling.CallSignaling.Envelope>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:callsignaling.Envelope)
    private static final ch.threema.protobuf.callsignaling.CallSignaling.Envelope DEFAULT_INSTANCE;
    static {
      Envelope defaultInstance = new Envelope();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Envelope.class, defaultInstance);
    }

    public static ch.threema.protobuf.callsignaling.CallSignaling.Envelope getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Envelope> PARSER;

    public static com.google.protobuf.Parser<Envelope> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface ResolutionOrBuilder extends
      // @@protoc_insertion_point(interface_extends:callsignaling.Resolution)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>uint32 width = 1;</code>
     * @return The width.
     */
    int getWidth();

    /**
     * <code>uint32 height = 2;</code>
     * @return The height.
     */
    int getHeight();
  }
  /**
   * <pre>
   * Generic 2D resolution
   * </pre>
   *
   * Protobuf type {@code callsignaling.Resolution}
   */
  public  static final class Resolution extends
      com.google.protobuf.GeneratedMessageLite<
          Resolution, Resolution.Builder> implements
      // @@protoc_insertion_point(message_implements:callsignaling.Resolution)
      ResolutionOrBuilder {
    private Resolution() {
    }
    public static final int WIDTH_FIELD_NUMBER = 1;
    private int width_;
    /**
     * <code>uint32 width = 1;</code>
     * @return The width.
     */
    @java.lang.Override
    public int getWidth() {
      return width_;
    }
    /**
     * <code>uint32 width = 1;</code>
     * @param value The width to set.
     */
    private void setWidth(int value) {
      
      width_ = value;
    }
    /**
     * <code>uint32 width = 1;</code>
     */
    private void clearWidth() {
      
      width_ = 0;
    }

    public static final int HEIGHT_FIELD_NUMBER = 2;
    private int height_;
    /**
     * <code>uint32 height = 2;</code>
     * @return The height.
     */
    @java.lang.Override
    public int getHeight() {
      return height_;
    }
    /**
     * <code>uint32 height = 2;</code>
     * @param value The height to set.
     */
    private void setHeight(int value) {
      
      height_ = value;
    }
    /**
     * <code>uint32 height = 2;</code>
     */
    private void clearHeight() {
      
      height_ = 0;
    }

    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ch.threema.protobuf.callsignaling.CallSignaling.Resolution prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Generic 2D resolution
     * </pre>
     *
     * Protobuf type {@code callsignaling.Resolution}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ch.threema.protobuf.callsignaling.CallSignaling.Resolution, Builder> implements
        // @@protoc_insertion_point(builder_implements:callsignaling.Resolution)
        ch.threema.protobuf.callsignaling.CallSignaling.ResolutionOrBuilder {
      // Construct using ch.threema.protobuf.callsignaling.CallSignaling.Resolution.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>uint32 width = 1;</code>
       * @return The width.
       */
      @java.lang.Override
      public int getWidth() {
        return instance.getWidth();
      }
      /**
       * <code>uint32 width = 1;</code>
       * @param value The width to set.
       * @return This builder for chaining.
       */
      public Builder setWidth(int value) {
        copyOnWrite();
        instance.setWidth(value);
        return this;
      }
      /**
       * <code>uint32 width = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearWidth() {
        copyOnWrite();
        instance.clearWidth();
        return this;
      }

      /**
       * <code>uint32 height = 2;</code>
       * @return The height.
       */
      @java.lang.Override
      public int getHeight() {
        return instance.getHeight();
      }
      /**
       * <code>uint32 height = 2;</code>
       * @param value The height to set.
       * @return This builder for chaining.
       */
      public Builder setHeight(int value) {
        copyOnWrite();
        instance.setHeight(value);
        return this;
      }
      /**
       * <code>uint32 height = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeight() {
        copyOnWrite();
        instance.clearHeight();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:callsignaling.Resolution)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ch.threema.protobuf.callsignaling.CallSignaling.Resolution();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "width_",
              "height_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u000b\u0002\u000b" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ch.threema.protobuf.callsignaling.CallSignaling.Resolution> parser = PARSER;
          if (parser == null) {
            synchronized (ch.threema.protobuf.callsignaling.CallSignaling.Resolution.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ch.threema.protobuf.callsignaling.CallSignaling.Resolution>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:callsignaling.Resolution)
    private static final ch.threema.protobuf.callsignaling.CallSignaling.Resolution DEFAULT_INSTANCE;
    static {
      Resolution defaultInstance = new Resolution();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Resolution.class, defaultInstance);
    }

    public static ch.threema.protobuf.callsignaling.CallSignaling.Resolution getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Resolution> PARSER;

    public static com.google.protobuf.Parser<Resolution> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface VideoQualityProfileOrBuilder extends
      // @@protoc_insertion_point(interface_extends:callsignaling.VideoQualityProfile)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
     * @return The enum numeric value on the wire for profile.
     */
    int getProfileValue();
    /**
     * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
     * @return The profile.
     */
    ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.QualityProfile getProfile();

    /**
     * <pre>
     * The max bitrate in kbps
     * </pre>
     *
     * <code>uint32 max_bitrate_kbps = 2;</code>
     * @return The maxBitrateKbps.
     */
    int getMaxBitrateKbps();

    /**
     * <pre>
     * The max resolution (in landscape orientation)
     * </pre>
     *
     * <code>.callsignaling.Resolution max_resolution = 3;</code>
     * @return Whether the maxResolution field is set.
     */
    boolean hasMaxResolution();
    /**
     * <pre>
     * The max resolution (in landscape orientation)
     * </pre>
     *
     * <code>.callsignaling.Resolution max_resolution = 3;</code>
     * @return The maxResolution.
     */
    ch.threema.protobuf.callsignaling.CallSignaling.Resolution getMaxResolution();

    /**
     * <pre>
     * The max framerate
     * </pre>
     *
     * <code>uint32 max_fps = 4;</code>
     * @return The maxFps.
     */
    int getMaxFps();
  }
  /**
   * <pre>
   * The app switched to a new video quality profile
   * In order to be forwards-compatible, the raw configuration of the profile
   * (bitrate, resolution, etc) should also be included in this message. This
   * way, if an unknown enum value is received, the receiver can simply use the
   * raw values instead.
   * </pre>
   *
   * Protobuf type {@code callsignaling.VideoQualityProfile}
   */
  public  static final class VideoQualityProfile extends
      com.google.protobuf.GeneratedMessageLite<
          VideoQualityProfile, VideoQualityProfile.Builder> implements
      // @@protoc_insertion_point(message_implements:callsignaling.VideoQualityProfile)
      VideoQualityProfileOrBuilder {
    private VideoQualityProfile() {
    }
    /**
     * <pre>
     * The quality profile
     * </pre>
     *
     * Protobuf enum {@code callsignaling.VideoQualityProfile.QualityProfile}
     */
    public enum QualityProfile
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <pre>
       * Very high quality, used only when explicitly selected by the user
       * </pre>
       *
       * <code>MAX = 0;</code>
       */
      MAX(0),
      /**
       * <pre>
       * High quality, used by default in non-metered networks
       * </pre>
       *
       * <code>HIGH = 1;</code>
       */
      HIGH(1),
      /**
       * <pre>
       * Low quality, optimize for bandwidth, used by default in metered networks
       * </pre>
       *
       * <code>LOW = 2;</code>
       */
      LOW(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Very high quality, used only when explicitly selected by the user
       * </pre>
       *
       * <code>MAX = 0;</code>
       */
      public static final int MAX_VALUE = 0;
      /**
       * <pre>
       * High quality, used by default in non-metered networks
       * </pre>
       *
       * <code>HIGH = 1;</code>
       */
      public static final int HIGH_VALUE = 1;
      /**
       * <pre>
       * Low quality, optimize for bandwidth, used by default in metered networks
       * </pre>
       *
       * <code>LOW = 2;</code>
       */
      public static final int LOW_VALUE = 2;


      @java.lang.Override
      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static QualityProfile valueOf(int value) {
        return forNumber(value);
      }

      public static QualityProfile forNumber(int value) {
        switch (value) {
          case 0: return MAX;
          case 1: return HIGH;
          case 2: return LOW;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<QualityProfile>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          QualityProfile> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<QualityProfile>() {
              @java.lang.Override
              public QualityProfile findValueByNumber(int number) {
                return QualityProfile.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return QualityProfileVerifier.INSTANCE;
      }

      private static final class QualityProfileVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new QualityProfileVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return QualityProfile.forNumber(number) != null;
              }
            };

      private final int value;

      private QualityProfile(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:callsignaling.VideoQualityProfile.QualityProfile)
    }

    public static final int PROFILE_FIELD_NUMBER = 1;
    private int profile_;
    /**
     * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
     * @return The enum numeric value on the wire for profile.
     */
    @java.lang.Override
    public int getProfileValue() {
      return profile_;
    }
    /**
     * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
     * @return The profile.
     */
    @java.lang.Override
    public ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.QualityProfile getProfile() {
      ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.QualityProfile result = ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.QualityProfile.forNumber(profile_);
      return result == null ? ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.QualityProfile.UNRECOGNIZED : result;
    }
    /**
     * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
     * @param value The enum numeric value on the wire for profile to set.
     */
    private void setProfileValue(int value) {
        profile_ = value;
    }
    /**
     * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
     * @param value The profile to set.
     */
    private void setProfile(ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.QualityProfile value) {
      profile_ = value.getNumber();
      
    }
    /**
     * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
     */
    private void clearProfile() {
      
      profile_ = 0;
    }

    public static final int MAX_BITRATE_KBPS_FIELD_NUMBER = 2;
    private int maxBitrateKbps_;
    /**
     * <pre>
     * The max bitrate in kbps
     * </pre>
     *
     * <code>uint32 max_bitrate_kbps = 2;</code>
     * @return The maxBitrateKbps.
     */
    @java.lang.Override
    public int getMaxBitrateKbps() {
      return maxBitrateKbps_;
    }
    /**
     * <pre>
     * The max bitrate in kbps
     * </pre>
     *
     * <code>uint32 max_bitrate_kbps = 2;</code>
     * @param value The maxBitrateKbps to set.
     */
    private void setMaxBitrateKbps(int value) {
      
      maxBitrateKbps_ = value;
    }
    /**
     * <pre>
     * The max bitrate in kbps
     * </pre>
     *
     * <code>uint32 max_bitrate_kbps = 2;</code>
     */
    private void clearMaxBitrateKbps() {
      
      maxBitrateKbps_ = 0;
    }

    public static final int MAX_RESOLUTION_FIELD_NUMBER = 3;
    private ch.threema.protobuf.callsignaling.CallSignaling.Resolution maxResolution_;
    /**
     * <pre>
     * The max resolution (in landscape orientation)
     * </pre>
     *
     * <code>.callsignaling.Resolution max_resolution = 3;</code>
     */
    @java.lang.Override
    public boolean hasMaxResolution() {
      return maxResolution_ != null;
    }
    /**
     * <pre>
     * The max resolution (in landscape orientation)
     * </pre>
     *
     * <code>.callsignaling.Resolution max_resolution = 3;</code>
     */
    @java.lang.Override
    public ch.threema.protobuf.callsignaling.CallSignaling.Resolution getMaxResolution() {
      return maxResolution_ == null ? ch.threema.protobuf.callsignaling.CallSignaling.Resolution.getDefaultInstance() : maxResolution_;
    }
    /**
     * <pre>
     * The max resolution (in landscape orientation)
     * </pre>
     *
     * <code>.callsignaling.Resolution max_resolution = 3;</code>
     */
    private void setMaxResolution(ch.threema.protobuf.callsignaling.CallSignaling.Resolution value) {
      value.getClass();
  maxResolution_ = value;
      
      }
    /**
     * <pre>
     * The max resolution (in landscape orientation)
     * </pre>
     *
     * <code>.callsignaling.Resolution max_resolution = 3;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeMaxResolution(ch.threema.protobuf.callsignaling.CallSignaling.Resolution value) {
      value.getClass();
  if (maxResolution_ != null &&
          maxResolution_ != ch.threema.protobuf.callsignaling.CallSignaling.Resolution.getDefaultInstance()) {
        maxResolution_ =
          ch.threema.protobuf.callsignaling.CallSignaling.Resolution.newBuilder(maxResolution_).mergeFrom(value).buildPartial();
      } else {
        maxResolution_ = value;
      }
      
    }
    /**
     * <pre>
     * The max resolution (in landscape orientation)
     * </pre>
     *
     * <code>.callsignaling.Resolution max_resolution = 3;</code>
     */
    private void clearMaxResolution() {  maxResolution_ = null;
      
    }

    public static final int MAX_FPS_FIELD_NUMBER = 4;
    private int maxFps_;
    /**
     * <pre>
     * The max framerate
     * </pre>
     *
     * <code>uint32 max_fps = 4;</code>
     * @return The maxFps.
     */
    @java.lang.Override
    public int getMaxFps() {
      return maxFps_;
    }
    /**
     * <pre>
     * The max framerate
     * </pre>
     *
     * <code>uint32 max_fps = 4;</code>
     * @param value The maxFps to set.
     */
    private void setMaxFps(int value) {
      
      maxFps_ = value;
    }
    /**
     * <pre>
     * The max framerate
     * </pre>
     *
     * <code>uint32 max_fps = 4;</code>
     */
    private void clearMaxFps() {
      
      maxFps_ = 0;
    }

    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * The app switched to a new video quality profile
     * In order to be forwards-compatible, the raw configuration of the profile
     * (bitrate, resolution, etc) should also be included in this message. This
     * way, if an unknown enum value is received, the receiver can simply use the
     * raw values instead.
     * </pre>
     *
     * Protobuf type {@code callsignaling.VideoQualityProfile}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile, Builder> implements
        // @@protoc_insertion_point(builder_implements:callsignaling.VideoQualityProfile)
        ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfileOrBuilder {
      // Construct using ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
       * @return The enum numeric value on the wire for profile.
       */
      @java.lang.Override
      public int getProfileValue() {
        return instance.getProfileValue();
      }
      /**
       * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
       * @param value The profile to set.
       * @return This builder for chaining.
       */
      public Builder setProfileValue(int value) {
        copyOnWrite();
        instance.setProfileValue(value);
        return this;
      }
      /**
       * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
       * @return The profile.
       */
      @java.lang.Override
      public ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.QualityProfile getProfile() {
        return instance.getProfile();
      }
      /**
       * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
       * @param value The enum numeric value on the wire for profile to set.
       * @return This builder for chaining.
       */
      public Builder setProfile(ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.QualityProfile value) {
        copyOnWrite();
        instance.setProfile(value);
        return this;
      }
      /**
       * <code>.callsignaling.VideoQualityProfile.QualityProfile profile = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearProfile() {
        copyOnWrite();
        instance.clearProfile();
        return this;
      }

      /**
       * <pre>
       * The max bitrate in kbps
       * </pre>
       *
       * <code>uint32 max_bitrate_kbps = 2;</code>
       * @return The maxBitrateKbps.
       */
      @java.lang.Override
      public int getMaxBitrateKbps() {
        return instance.getMaxBitrateKbps();
      }
      /**
       * <pre>
       * The max bitrate in kbps
       * </pre>
       *
       * <code>uint32 max_bitrate_kbps = 2;</code>
       * @param value The maxBitrateKbps to set.
       * @return This builder for chaining.
       */
      public Builder setMaxBitrateKbps(int value) {
        copyOnWrite();
        instance.setMaxBitrateKbps(value);
        return this;
      }
      /**
       * <pre>
       * The max bitrate in kbps
       * </pre>
       *
       * <code>uint32 max_bitrate_kbps = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxBitrateKbps() {
        copyOnWrite();
        instance.clearMaxBitrateKbps();
        return this;
      }

      /**
       * <pre>
       * The max resolution (in landscape orientation)
       * </pre>
       *
       * <code>.callsignaling.Resolution max_resolution = 3;</code>
       */
      @java.lang.Override
      public boolean hasMaxResolution() {
        return instance.hasMaxResolution();
      }
      /**
       * <pre>
       * The max resolution (in landscape orientation)
       * </pre>
       *
       * <code>.callsignaling.Resolution max_resolution = 3;</code>
       */
      @java.lang.Override
      public ch.threema.protobuf.callsignaling.CallSignaling.Resolution getMaxResolution() {
        return instance.getMaxResolution();
      }
      /**
       * <pre>
       * The max resolution (in landscape orientation)
       * </pre>
       *
       * <code>.callsignaling.Resolution max_resolution = 3;</code>
       */
      public Builder setMaxResolution(ch.threema.protobuf.callsignaling.CallSignaling.Resolution value) {
        copyOnWrite();
        instance.setMaxResolution(value);
        return this;
        }
      /**
       * <pre>
       * The max resolution (in landscape orientation)
       * </pre>
       *
       * <code>.callsignaling.Resolution max_resolution = 3;</code>
       */
      public Builder setMaxResolution(
          ch.threema.protobuf.callsignaling.CallSignaling.Resolution.Builder builderForValue) {
        copyOnWrite();
        instance.setMaxResolution(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * The max resolution (in landscape orientation)
       * </pre>
       *
       * <code>.callsignaling.Resolution max_resolution = 3;</code>
       */
      public Builder mergeMaxResolution(ch.threema.protobuf.callsignaling.CallSignaling.Resolution value) {
        copyOnWrite();
        instance.mergeMaxResolution(value);
        return this;
      }
      /**
       * <pre>
       * The max resolution (in landscape orientation)
       * </pre>
       *
       * <code>.callsignaling.Resolution max_resolution = 3;</code>
       */
      public Builder clearMaxResolution() {  copyOnWrite();
        instance.clearMaxResolution();
        return this;
      }

      /**
       * <pre>
       * The max framerate
       * </pre>
       *
       * <code>uint32 max_fps = 4;</code>
       * @return The maxFps.
       */
      @java.lang.Override
      public int getMaxFps() {
        return instance.getMaxFps();
      }
      /**
       * <pre>
       * The max framerate
       * </pre>
       *
       * <code>uint32 max_fps = 4;</code>
       * @param value The maxFps to set.
       * @return This builder for chaining.
       */
      public Builder setMaxFps(int value) {
        copyOnWrite();
        instance.setMaxFps(value);
        return this;
      }
      /**
       * <pre>
       * The max framerate
       * </pre>
       *
       * <code>uint32 max_fps = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearMaxFps() {
        copyOnWrite();
        instance.clearMaxFps();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:callsignaling.VideoQualityProfile)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "profile_",
              "maxBitrateKbps_",
              "maxResolution_",
              "maxFps_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\f\u0002\u000b" +
                "\u0003\t\u0004\u000b";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile> parser = PARSER;
          if (parser == null) {
            synchronized (ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:callsignaling.VideoQualityProfile)
    private static final ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile DEFAULT_INSTANCE;
    static {
      VideoQualityProfile defaultInstance = new VideoQualityProfile();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        VideoQualityProfile.class, defaultInstance);
    }

    public static ch.threema.protobuf.callsignaling.CallSignaling.VideoQualityProfile getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<VideoQualityProfile> PARSER;

    public static com.google.protobuf.Parser<VideoQualityProfile> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface CaptureStateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:callsignaling.CaptureState)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <code>.callsignaling.CaptureState.Mode state = 1;</code>
     * @return The enum numeric value on the wire for state.
     */
    int getStateValue();
    /**
     * <code>.callsignaling.CaptureState.Mode state = 1;</code>
     * @return The state.
     */
    ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.Mode getState();

    /**
     * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
     * @return The enum numeric value on the wire for device.
     */
    int getDeviceValue();
    /**
     * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
     * @return The device.
     */
    ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.CaptureDevice getDevice();
  }
  /**
   * <pre>
   * Signal changes in the capturing state (e.g. video camera enabled or disabled)
   * </pre>
   *
   * Protobuf type {@code callsignaling.CaptureState}
   */
  public  static final class CaptureState extends
      com.google.protobuf.GeneratedMessageLite<
          CaptureState, CaptureState.Builder> implements
      // @@protoc_insertion_point(message_implements:callsignaling.CaptureState)
      CaptureStateOrBuilder {
    private CaptureState() {
    }
    /**
     * <pre>
     * The capture state of a capturing device
     * </pre>
     *
     * Protobuf enum {@code callsignaling.CaptureState.Mode}
     */
    public enum Mode
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <pre>
       * Off, not sending any data
       * </pre>
       *
       * <code>OFF = 0;</code>
       */
      OFF(0),
      /**
       * <pre>
       * On, sending data
       * </pre>
       *
       * <code>ON = 1;</code>
       */
      ON(1),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Off, not sending any data
       * </pre>
       *
       * <code>OFF = 0;</code>
       */
      public static final int OFF_VALUE = 0;
      /**
       * <pre>
       * On, sending data
       * </pre>
       *
       * <code>ON = 1;</code>
       */
      public static final int ON_VALUE = 1;


      @java.lang.Override
      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Mode valueOf(int value) {
        return forNumber(value);
      }

      public static Mode forNumber(int value) {
        switch (value) {
          case 0: return OFF;
          case 1: return ON;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Mode>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Mode> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Mode>() {
              @java.lang.Override
              public Mode findValueByNumber(int number) {
                return Mode.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return ModeVerifier.INSTANCE;
      }

      private static final class ModeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new ModeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return Mode.forNumber(number) != null;
              }
            };

      private final int value;

      private Mode(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:callsignaling.CaptureState.Mode)
    }

    /**
     * <pre>
     * The capture device type
     * </pre>
     *
     * Protobuf enum {@code callsignaling.CaptureState.CaptureDevice}
     */
    public enum CaptureDevice
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <pre>
       * Capturing from a camera
       * </pre>
       *
       * <code>CAMERA = 0;</code>
       */
      CAMERA(0),
      /**
       * <pre>
       * Capturing from screen sharing
       * </pre>
       *
       * <code>SCREEN_SHARING = 1;</code>
       */
      SCREEN_SHARING(1),
      /**
       * <pre>
       * Capturing from a microphone
       * </pre>
       *
       * <code>MICROPHONE = 2;</code>
       */
      MICROPHONE(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Capturing from a camera
       * </pre>
       *
       * <code>CAMERA = 0;</code>
       */
      public static final int CAMERA_VALUE = 0;
      /**
       * <pre>
       * Capturing from screen sharing
       * </pre>
       *
       * <code>SCREEN_SHARING = 1;</code>
       */
      public static final int SCREEN_SHARING_VALUE = 1;
      /**
       * <pre>
       * Capturing from a microphone
       * </pre>
       *
       * <code>MICROPHONE = 2;</code>
       */
      public static final int MICROPHONE_VALUE = 2;


      @java.lang.Override
      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static CaptureDevice valueOf(int value) {
        return forNumber(value);
      }

      public static CaptureDevice forNumber(int value) {
        switch (value) {
          case 0: return CAMERA;
          case 1: return SCREEN_SHARING;
          case 2: return MICROPHONE;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<CaptureDevice>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          CaptureDevice> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<CaptureDevice>() {
              @java.lang.Override
              public CaptureDevice findValueByNumber(int number) {
                return CaptureDevice.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return CaptureDeviceVerifier.INSTANCE;
      }

      private static final class CaptureDeviceVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new CaptureDeviceVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return CaptureDevice.forNumber(number) != null;
              }
            };

      private final int value;

      private CaptureDevice(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:callsignaling.CaptureState.CaptureDevice)
    }

    public static final int STATE_FIELD_NUMBER = 1;
    private int state_;
    /**
     * <code>.callsignaling.CaptureState.Mode state = 1;</code>
     * @return The enum numeric value on the wire for state.
     */
    @java.lang.Override
    public int getStateValue() {
      return state_;
    }
    /**
     * <code>.callsignaling.CaptureState.Mode state = 1;</code>
     * @return The state.
     */
    @java.lang.Override
    public ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.Mode getState() {
      ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.Mode result = ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.Mode.forNumber(state_);
      return result == null ? ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.Mode.UNRECOGNIZED : result;
    }
    /**
     * <code>.callsignaling.CaptureState.Mode state = 1;</code>
     * @param value The enum numeric value on the wire for state to set.
     */
    private void setStateValue(int value) {
        state_ = value;
    }
    /**
     * <code>.callsignaling.CaptureState.Mode state = 1;</code>
     * @param value The state to set.
     */
    private void setState(ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.Mode value) {
      state_ = value.getNumber();
      
    }
    /**
     * <code>.callsignaling.CaptureState.Mode state = 1;</code>
     */
    private void clearState() {
      
      state_ = 0;
    }

    public static final int DEVICE_FIELD_NUMBER = 2;
    private int device_;
    /**
     * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
     * @return The enum numeric value on the wire for device.
     */
    @java.lang.Override
    public int getDeviceValue() {
      return device_;
    }
    /**
     * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
     * @return The device.
     */
    @java.lang.Override
    public ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.CaptureDevice getDevice() {
      ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.CaptureDevice result = ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.CaptureDevice.forNumber(device_);
      return result == null ? ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.CaptureDevice.UNRECOGNIZED : result;
    }
    /**
     * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
     * @param value The enum numeric value on the wire for device to set.
     */
    private void setDeviceValue(int value) {
        device_ = value;
    }
    /**
     * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
     * @param value The device to set.
     */
    private void setDevice(ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.CaptureDevice value) {
      device_ = value.getNumber();
      
    }
    /**
     * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
     */
    private void clearDevice() {
      
      device_ = 0;
    }

    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ch.threema.protobuf.callsignaling.CallSignaling.CaptureState prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Signal changes in the capturing state (e.g. video camera enabled or disabled)
     * </pre>
     *
     * Protobuf type {@code callsignaling.CaptureState}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ch.threema.protobuf.callsignaling.CallSignaling.CaptureState, Builder> implements
        // @@protoc_insertion_point(builder_implements:callsignaling.CaptureState)
        ch.threema.protobuf.callsignaling.CallSignaling.CaptureStateOrBuilder {
      // Construct using ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <code>.callsignaling.CaptureState.Mode state = 1;</code>
       * @return The enum numeric value on the wire for state.
       */
      @java.lang.Override
      public int getStateValue() {
        return instance.getStateValue();
      }
      /**
       * <code>.callsignaling.CaptureState.Mode state = 1;</code>
       * @param value The state to set.
       * @return This builder for chaining.
       */
      public Builder setStateValue(int value) {
        copyOnWrite();
        instance.setStateValue(value);
        return this;
      }
      /**
       * <code>.callsignaling.CaptureState.Mode state = 1;</code>
       * @return The state.
       */
      @java.lang.Override
      public ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.Mode getState() {
        return instance.getState();
      }
      /**
       * <code>.callsignaling.CaptureState.Mode state = 1;</code>
       * @param value The enum numeric value on the wire for state to set.
       * @return This builder for chaining.
       */
      public Builder setState(ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.Mode value) {
        copyOnWrite();
        instance.setState(value);
        return this;
      }
      /**
       * <code>.callsignaling.CaptureState.Mode state = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearState() {
        copyOnWrite();
        instance.clearState();
        return this;
      }

      /**
       * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
       * @return The enum numeric value on the wire for device.
       */
      @java.lang.Override
      public int getDeviceValue() {
        return instance.getDeviceValue();
      }
      /**
       * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
       * @param value The device to set.
       * @return This builder for chaining.
       */
      public Builder setDeviceValue(int value) {
        copyOnWrite();
        instance.setDeviceValue(value);
        return this;
      }
      /**
       * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
       * @return The device.
       */
      @java.lang.Override
      public ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.CaptureDevice getDevice() {
        return instance.getDevice();
      }
      /**
       * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
       * @param value The enum numeric value on the wire for device to set.
       * @return This builder for chaining.
       */
      public Builder setDevice(ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.CaptureDevice value) {
        copyOnWrite();
        instance.setDevice(value);
        return this;
      }
      /**
       * <code>.callsignaling.CaptureState.CaptureDevice device = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDevice() {
        copyOnWrite();
        instance.clearDevice();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:callsignaling.CaptureState)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ch.threema.protobuf.callsignaling.CallSignaling.CaptureState();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "state_",
              "device_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\f\u0002\f";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ch.threema.protobuf.callsignaling.CallSignaling.CaptureState> parser = PARSER;
          if (parser == null) {
            synchronized (ch.threema.protobuf.callsignaling.CallSignaling.CaptureState.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ch.threema.protobuf.callsignaling.CallSignaling.CaptureState>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:callsignaling.CaptureState)
    private static final ch.threema.protobuf.callsignaling.CallSignaling.CaptureState DEFAULT_INSTANCE;
    static {
      CaptureState defaultInstance = new CaptureState();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        CaptureState.class, defaultInstance);
    }

    public static ch.threema.protobuf.callsignaling.CallSignaling.CaptureState getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<CaptureState> PARSER;

    public static com.google.protobuf.Parser<CaptureState> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}
