// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
// Code generated by Microsoft (R) AutoRest Code Generator.

package com.azure.media.videoanalyzer.edge.models;

import com.azure.core.annotation.Fluent;
import com.fasterxml.jackson.annotation.JsonProperty;

/** Defines how often media is submitted to the extension plugin. */
@Fluent
public final class SamplingOptions {
    /*
     * When set to 'true', prevents frames without upstream inference data to
     * be sent to the extension plugin. This is useful to limit the frames sent
     * to the extension to pre-analyzed frames only. For example, when used
     * downstream from a motion detector, this can enable for only frames in
     * which motion has been detected to be further analyzed.
     */
    @JsonProperty(value = "skipSamplesWithoutAnnotation")
    private String skipSamplesWithoutAnnotation;

    /*
     * Maximum rate of samples submitted to the extension. This prevents an
     * extension plugin to be overloaded with data.
     */
    @JsonProperty(value = "maximumSamplesPerSecond")
    private String maximumSamplesPerSecond;

    /**
     * Get the skipSamplesWithoutAnnotation property: When set to 'true', prevents frames without upstream inference
     * data to be sent to the extension plugin. This is useful to limit the frames sent to the extension to pre-analyzed
     * frames only. For example, when used downstream from a motion detector, this can enable for only frames in which
     * motion has been detected to be further analyzed.
     *
     * @return the skipSamplesWithoutAnnotation value.
     */
    public String getSkipSamplesWithoutAnnotation() {
        return this.skipSamplesWithoutAnnotation;
    }

    /**
     * Set the skipSamplesWithoutAnnotation property: When set to 'true', prevents frames without upstream inference
     * data to be sent to the extension plugin. This is useful to limit the frames sent to the extension to pre-analyzed
     * frames only. For example, when used downstream from a motion detector, this can enable for only frames in which
     * motion has been detected to be further analyzed.
     *
     * @param skipSamplesWithoutAnnotation the skipSamplesWithoutAnnotation value to set.
     * @return the SamplingOptions object itself.
     */
    public SamplingOptions setSkipSamplesWithoutAnnotation(String skipSamplesWithoutAnnotation) {
        this.skipSamplesWithoutAnnotation = skipSamplesWithoutAnnotation;
        return this;
    }

    /**
     * Get the maximumSamplesPerSecond property: Maximum rate of samples submitted to the extension. This prevents an
     * extension plugin to be overloaded with data.
     *
     * @return the maximumSamplesPerSecond value.
     */
    public String getMaximumSamplesPerSecond() {
        return this.maximumSamplesPerSecond;
    }

    /**
     * Set the maximumSamplesPerSecond property: Maximum rate of samples submitted to the extension. This prevents an
     * extension plugin to be overloaded with data.
     *
     * @param maximumSamplesPerSecond the maximumSamplesPerSecond value to set.
     * @return the SamplingOptions object itself.
     */
    public SamplingOptions setMaximumSamplesPerSecond(String maximumSamplesPerSecond) {
        this.maximumSamplesPerSecond = maximumSamplesPerSecond;
        return this;
    }
}
