All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.medialive.model.M2tsSettings Maven / Gradle / Ivy

Go to download

The AWS Java SDK for AWS Elemental MediaLive module holds the client classes that are used for communicating with AWS Elemental MediaLive Service

There is a newer version: 1.12.772
Show newest version
/*
 * Copyright 2018-2023 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with
 * the License. A copy of the License is located at
 * 
 * http://aws.amazon.com/apache2.0
 * 
 * or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions
 * and limitations under the License.
 */
package com.amazonaws.services.medialive.model;

import java.io.Serializable;
import javax.annotation.Generated;
import com.amazonaws.protocol.StructuredPojo;
import com.amazonaws.protocol.ProtocolMarshaller;

/**
 * M2ts Settings
 * 
 * @see AWS API
 *      Documentation
 */
@Generated("com.amazonaws:aws-java-sdk-code-generator")
public class M2tsSettings implements Serializable, Cloneable, StructuredPojo {

    /**
     * When set to drop, output audio streams will be removed from the program if the selected input audio stream is
     * removed from the input. This allows the output audio configuration to dynamically change based on input
     * configuration. If this is set to encodeSilence, all output audio streams will output encoded silence when not
     * connected to an active input stream.
     */
    private String absentInputAudioBehavior;
    /** When set to enabled, uses ARIB-compliant field muxing and removes video descriptor. */
    private String arib;
    /**
     * Packet Identifier (PID) for ARIB Captions in the transport stream. Can be entered as a decimal or hexadecimal
     * value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String aribCaptionsPid;
    /**
     * If set to auto, pid number used for ARIB Captions will be auto-selected from unused pids. If set to
     * useConfigured, ARIB Captions will be on the configured pid number.
     */
    private String aribCaptionsPidControl;
    /** When set to dvb, uses DVB buffer model for Dolby Digital audio. When set to atsc, the ATSC model is used. */
    private String audioBufferModel;
    /** The number of audio frames to insert for each PES packet. */
    private Integer audioFramesPerPes;
    /**
     * Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are accepted,
     * and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each
     * PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String audioPids;
    /**
     * When set to atsc, uses stream type = 0x81 for AC3 and stream type = 0x87 for EAC3. When set to dvb, uses stream
     * type = 0x06.
     */
    private String audioStreamType;
    /**
     * The output bitrate of the transport stream in bits per second. Setting to 0 lets the muxer automatically
     * determine the appropriate bitrate.
     */
    private Integer bitrate;
    /**
     * Controls the timing accuracy for output network traffic. Leave as MULTIPLEX to ensure accurate network packet
     * timing. Or set to NONE, which might result in lower latency but will result in more variability in output network
     * packet timing. This variability might cause interruptions, jitter, or bursty behavior in your playback or
     * receiving devices.
     */
    private String bufferModel;
    /** When set to enabled, generates captionServiceDescriptor in PMT. */
    private String ccDescriptor;
    /** Inserts DVB Network Information Table (NIT) at the specified table repetition interval. */
    private DvbNitSettings dvbNitSettings;
    /** Inserts DVB Service Description Table (SDT) at the specified table repetition interval. */
    private DvbSdtSettings dvbSdtSettings;
    /**
     * Packet Identifier (PID) for input source DVB Subtitle data to this output. Multiple values are accepted, and can
     * be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID
     * specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String dvbSubPids;
    /** Inserts DVB Time and Date Table (TDT) at the specified table repetition interval. */
    private DvbTdtSettings dvbTdtSettings;
    /**
     * Packet Identifier (PID) for input source DVB Teletext data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String dvbTeletextPid;
    /** If set to passthrough, passes any EBIF data from the input source to this output. */
    private String ebif;
    /**
     * When videoAndFixedIntervals is selected, audio EBP markers will be added to partitions 3 and 4. The interval
     * between these additional markers will be fixed, and will be slightly shorter than the video EBP marker interval.
     * Only available when EBP Cablelabs segmentation markers are selected. Partitions 1 and 2 will always follow the
     * video interval.
     */
    private String ebpAudioInterval;
    /**
     * When set, enforces that Encoder Boundary Points do not come within the specified time interval of each other by
     * looking ahead at input video. If another EBP is going to come in within the specified time interval, the current
     * EBP is not emitted, and the segment is "stretched" to the next marker. The lookahead value does not add latency to
     * the system. The Live Event must be configured elsewhere to create sufficient latency to make the lookahead
     * accurate.
     */
    private Integer ebpLookaheadMs;
    /**
     * Controls placement of EBP on Audio PIDs. If set to videoAndAudioPids, EBP markers will be placed on the video PID
     * and all audio PIDs. If set to videoPid, EBP markers will be placed on only the video PID.
     */
    private String ebpPlacement;
    /** This field is unused and deprecated. */
    private String ecmPid;
    /** Include or exclude the ES Rate field in the PES header. */
    private String esRateInPes;
    /**
     * Packet Identifier (PID) for input source ETV Platform data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String etvPlatformPid;
    /**
     * Packet Identifier (PID) for input source ETV Signal data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String etvSignalPid;
    /** The length in seconds of each fragment. Only used with EBP markers. */
    private Double fragmentTime;
    /** If set to passthrough, passes any KLV data from the input source to this output. */
    private String klv;
    /**
     * Packet Identifier (PID) for input source KLV data to this output. Multiple values are accepted, and can be
     * entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID specified
     * must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String klvDataPids;
    /**
     * If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and an
     * equivalent ID3 tag will be inserted in the output.
     */
    private String nielsenId3Behavior;
    /**
     * Value in bits per second of extra null packets to insert into the transport stream. This can be used if a
     * downstream encryption system requires periodic null packets.
     */
    private Double nullPacketBitrate;
    /**
     * The number of milliseconds between instances of this table in the output transport stream. Valid values are 0,
     * 10..1000.
     */
    private Integer patInterval;
    /**
     * When set to pcrEveryPesPacket, a Program Clock Reference value is inserted for every Packetized Elementary Stream
     * (PES) header. This parameter is effective only when the PCR PID is the same as the video or audio elementary
     * stream.
     */
    private String pcrControl;
    /** Maximum time in milliseconds between Program Clock Reference (PCRs) inserted into the transport stream. */
    private Integer pcrPeriod;
    /**
     * Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is given, the
     * encoder will assign the same value as the Video PID. Can be entered as a decimal or hexadecimal value. Valid
     * values are 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String pcrPid;
    /**
     * The number of milliseconds between instances of this table in the output transport stream. Valid values are 0,
     * 10..1000.
     */
    private Integer pmtInterval;
    /**
     * Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String pmtPid;
    /** The value of the program number field in the Program Map Table. */
    private Integer programNum;
    /**
     * When vbr, does not insert null packets into transport stream to fill specified bitrate. The bitrate setting acts
     * as the maximum bitrate when vbr is set.
     */
    private String rateMode;
    /**
     * Packet Identifier (PID) for input source SCTE-27 data to this output. Multiple values are accepted, and can be
     * entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID specified
     * must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String scte27Pids;
    /** Optionally pass SCTE-35 signals from the input source to this output. */
    private String scte35Control;
    /**
     * Packet Identifier (PID) of the SCTE-35 stream in the transport stream. Can be entered as a decimal or hexadecimal
     * value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String scte35Pid;
    /**
     * Inserts segmentation markers at each segmentationTime period. raiSegstart sets the Random Access Indicator bit in
     * the adaptation field. raiAdapt sets the RAI bit and adds the current timecode in the private data bytes.
     * psiSegstart inserts PAT and PMT tables at the start of segments. ebp adds Encoder Boundary Point information to
     * the adaptation field as per OpenCable specification OC-SP-EBP-I01-130118. ebpLegacy adds Encoder Boundary Point
     * information to the adaptation field using a legacy proprietary format.
     */
    private String segmentationMarkers;
    /**
     * The segmentation style parameter controls how segmentation markers are inserted into the transport stream. With
     * avails, it is possible that segments may be truncated, which can influence where future segmentation markers are
     * inserted.
     * 
     * When a segmentation style of "resetCadence" is selected and a segment is truncated due to an avail, we will reset
     * the segmentation cadence. This means the subsequent segment will have a duration of $segmentationTime seconds.
     * 
     * When a segmentation style of "maintainCadence" is selected and a segment is truncated due to an avail, we will
     * not reset the segmentation cadence. This means the subsequent segment will likely be truncated as well. However,
     * all segments after that will have a duration of $segmentationTime seconds. Note that EBP lookahead is a slight
     * exception to this rule.
     */
    private String segmentationStyle;
    /** The length in seconds of each segment. Required unless markers is set to _none_. */
    private Double segmentationTime;
    /** When set to passthrough, timed metadata will be passed through from input to output. */
    private String timedMetadataBehavior;
    /**
     * Packet Identifier (PID) of the timed metadata stream in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String timedMetadataPid;
    /** The value of the transport stream ID field in the Program Map Table. */
    private Integer transportStreamId;
    /**
     * Packet Identifier (PID) of the elementary video stream in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */
    private String videoPid;
    /**
     * Defines the amount SCTE-35 preroll will be increased (in milliseconds) on the output. Preroll is the amount of
     * time between the presence of a SCTE-35 indication in a transport stream and the PTS of the video frame it
     * references. Zero means don't add pullup (it doesn't mean set the preroll to zero). Negative pullup is not
     * supported, which means that you can't make the preroll shorter. Be aware that latency in the output will increase
     * by the pullup amount.
     */
    private Double scte35PrerollPullupMilliseconds;

    /**
     * When set to drop, output audio streams will be removed from the program if the selected input audio stream is
     * removed from the input. This allows the output audio configuration to dynamically change based on input
     * configuration. If this is set to encodeSilence, all output audio streams will output encoded silence when not
     * connected to an active input stream.
     * 
     * @param absentInputAudioBehavior
     *        When set to drop, output audio streams will be removed from the program if the selected input audio stream
     *        is removed from the input. This allows the output audio configuration to dynamically change based on input
     *        configuration. If this is set to encodeSilence, all output audio streams will output encoded silence when
     *        not connected to an active input stream.
     * @see M2tsAbsentInputAudioBehavior
     */

    public void setAbsentInputAudioBehavior(String absentInputAudioBehavior) {
        this.absentInputAudioBehavior = absentInputAudioBehavior;
    }

    /**
     * When set to drop, output audio streams will be removed from the program if the selected input audio stream is
     * removed from the input. This allows the output audio configuration to dynamically change based on input
     * configuration. If this is set to encodeSilence, all output audio streams will output encoded silence when not
     * connected to an active input stream.
     * 
     * @return When set to drop, output audio streams will be removed from the program if the selected input audio
     *         stream is removed from the input. This allows the output audio configuration to dynamically change based
     *         on input configuration. If this is set to encodeSilence, all output audio streams will output encoded
     *         silence when not connected to an active input stream.
     * @see M2tsAbsentInputAudioBehavior
     */

    public String getAbsentInputAudioBehavior() {
        return this.absentInputAudioBehavior;
    }

    /**
     * When set to drop, output audio streams will be removed from the program if the selected input audio stream is
     * removed from the input. This allows the output audio configuration to dynamically change based on input
     * configuration. If this is set to encodeSilence, all output audio streams will output encoded silence when not
     * connected to an active input stream.
     * 
     * @param absentInputAudioBehavior
     *        When set to drop, output audio streams will be removed from the program if the selected input audio stream
     *        is removed from the input. This allows the output audio configuration to dynamically change based on input
     *        configuration. If this is set to encodeSilence, all output audio streams will output encoded silence when
     *        not connected to an active input stream.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsAbsentInputAudioBehavior
     */

    public M2tsSettings withAbsentInputAudioBehavior(String absentInputAudioBehavior) {
        setAbsentInputAudioBehavior(absentInputAudioBehavior);
        return this;
    }

    /**
     * When set to drop, output audio streams will be removed from the program if the selected input audio stream is
     * removed from the input. This allows the output audio configuration to dynamically change based on input
     * configuration. If this is set to encodeSilence, all output audio streams will output encoded silence when not
     * connected to an active input stream.
     * 
     * @param absentInputAudioBehavior
     *        When set to drop, output audio streams will be removed from the program if the selected input audio stream
     *        is removed from the input. This allows the output audio configuration to dynamically change based on input
     *        configuration. If this is set to encodeSilence, all output audio streams will output encoded silence when
     *        not connected to an active input stream.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsAbsentInputAudioBehavior
     */

    public M2tsSettings withAbsentInputAudioBehavior(M2tsAbsentInputAudioBehavior absentInputAudioBehavior) {
        this.absentInputAudioBehavior = absentInputAudioBehavior.toString();
        return this;
    }

    /**
     * When set to enabled, uses ARIB-compliant field muxing and removes video descriptor.
     * 
     * @param arib
     *        When set to enabled, uses ARIB-compliant field muxing and removes video descriptor.
     * @see M2tsArib
     */

    public void setArib(String arib) {
        this.arib = arib;
    }

    /**
     * When set to enabled, uses ARIB-compliant field muxing and removes video descriptor.
     * 
     * @return When set to enabled, uses ARIB-compliant field muxing and removes video descriptor.
     * @see M2tsArib
     */

    public String getArib() {
        return this.arib;
    }

    /**
     * When set to enabled, uses ARIB-compliant field muxing and removes video descriptor.
     * 
     * @param arib
     *        When set to enabled, uses ARIB-compliant field muxing and removes video descriptor.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsArib
     */

    public M2tsSettings withArib(String arib) {
        setArib(arib);
        return this;
    }

    /**
     * When set to enabled, uses ARIB-compliant field muxing and removes video descriptor.
     * 
     * @param arib
     *        When set to enabled, uses ARIB-compliant field muxing and removes video descriptor.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsArib
     */

    public M2tsSettings withArib(M2tsArib arib) {
        this.arib = arib.toString();
        return this;
    }

    /**
     * Packet Identifier (PID) for ARIB Captions in the transport stream. Can be entered as a decimal or hexadecimal
     * value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param aribCaptionsPid
     *        Packet Identifier (PID) for ARIB Captions in the transport stream. Can be entered as a decimal or
     *        hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setAribCaptionsPid(String aribCaptionsPid) {
        this.aribCaptionsPid = aribCaptionsPid;
    }

    /**
     * Packet Identifier (PID) for ARIB Captions in the transport stream. Can be entered as a decimal or hexadecimal
     * value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) for ARIB Captions in the transport stream. Can be entered as a decimal or
     *         hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getAribCaptionsPid() {
        return this.aribCaptionsPid;
    }

    /**
     * Packet Identifier (PID) for ARIB Captions in the transport stream. Can be entered as a decimal or hexadecimal
     * value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param aribCaptionsPid
     *        Packet Identifier (PID) for ARIB Captions in the transport stream. Can be entered as a decimal or
     *        hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withAribCaptionsPid(String aribCaptionsPid) {
        setAribCaptionsPid(aribCaptionsPid);
        return this;
    }

    /**
     * If set to auto, pid number used for ARIB Captions will be auto-selected from unused pids. If set to
     * useConfigured, ARIB Captions will be on the configured pid number.
     * 
     * @param aribCaptionsPidControl
     *        If set to auto, pid number used for ARIB Captions will be auto-selected from unused pids. If set to
     *        useConfigured, ARIB Captions will be on the configured pid number.
     * @see M2tsAribCaptionsPidControl
     */

    public void setAribCaptionsPidControl(String aribCaptionsPidControl) {
        this.aribCaptionsPidControl = aribCaptionsPidControl;
    }

    /**
     * If set to auto, pid number used for ARIB Captions will be auto-selected from unused pids. If set to
     * useConfigured, ARIB Captions will be on the configured pid number.
     * 
     * @return If set to auto, pid number used for ARIB Captions will be auto-selected from unused pids. If set to
     *         useConfigured, ARIB Captions will be on the configured pid number.
     * @see M2tsAribCaptionsPidControl
     */

    public String getAribCaptionsPidControl() {
        return this.aribCaptionsPidControl;
    }

    /**
     * If set to auto, pid number used for ARIB Captions will be auto-selected from unused pids. If set to
     * useConfigured, ARIB Captions will be on the configured pid number.
     * 
     * @param aribCaptionsPidControl
     *        If set to auto, pid number used for ARIB Captions will be auto-selected from unused pids. If set to
     *        useConfigured, ARIB Captions will be on the configured pid number.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsAribCaptionsPidControl
     */

    public M2tsSettings withAribCaptionsPidControl(String aribCaptionsPidControl) {
        setAribCaptionsPidControl(aribCaptionsPidControl);
        return this;
    }

    /**
     * If set to auto, pid number used for ARIB Captions will be auto-selected from unused pids. If set to
     * useConfigured, ARIB Captions will be on the configured pid number.
     * 
     * @param aribCaptionsPidControl
     *        If set to auto, pid number used for ARIB Captions will be auto-selected from unused pids. If set to
     *        useConfigured, ARIB Captions will be on the configured pid number.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsAribCaptionsPidControl
     */

    public M2tsSettings withAribCaptionsPidControl(M2tsAribCaptionsPidControl aribCaptionsPidControl) {
        this.aribCaptionsPidControl = aribCaptionsPidControl.toString();
        return this;
    }

    /**
     * When set to dvb, uses DVB buffer model for Dolby Digital audio. When set to atsc, the ATSC model is used.
     * 
     * @param audioBufferModel
     *        When set to dvb, uses DVB buffer model for Dolby Digital audio. When set to atsc, the ATSC model is used.
     * @see M2tsAudioBufferModel
     */

    public void setAudioBufferModel(String audioBufferModel) {
        this.audioBufferModel = audioBufferModel;
    }

    /**
     * When set to dvb, uses DVB buffer model for Dolby Digital audio. When set to atsc, the ATSC model is used.
     * 
     * @return When set to dvb, uses DVB buffer model for Dolby Digital audio. When set to atsc, the ATSC model is used.
     * @see M2tsAudioBufferModel
     */

    public String getAudioBufferModel() {
        return this.audioBufferModel;
    }

    /**
     * When set to dvb, uses DVB buffer model for Dolby Digital audio. When set to atsc, the ATSC model is used.
     * 
     * @param audioBufferModel
     *        When set to dvb, uses DVB buffer model for Dolby Digital audio. When set to atsc, the ATSC model is used.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsAudioBufferModel
     */

    public M2tsSettings withAudioBufferModel(String audioBufferModel) {
        setAudioBufferModel(audioBufferModel);
        return this;
    }

    /**
     * When set to dvb, uses DVB buffer model for Dolby Digital audio. When set to atsc, the ATSC model is used.
     * 
     * @param audioBufferModel
     *        When set to dvb, uses DVB buffer model for Dolby Digital audio. When set to atsc, the ATSC model is used.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsAudioBufferModel
     */

    public M2tsSettings withAudioBufferModel(M2tsAudioBufferModel audioBufferModel) {
        this.audioBufferModel = audioBufferModel.toString();
        return this;
    }

    /**
     * The number of audio frames to insert for each PES packet.
     * 
     * @param audioFramesPerPes
     *        The number of audio frames to insert for each PES packet.
     */

    public void setAudioFramesPerPes(Integer audioFramesPerPes) {
        this.audioFramesPerPes = audioFramesPerPes;
    }

    /**
     * The number of audio frames to insert for each PES packet.
     * 
     * @return The number of audio frames to insert for each PES packet.
     */

    public Integer getAudioFramesPerPes() {
        return this.audioFramesPerPes;
    }

    /**
     * The number of audio frames to insert for each PES packet.
     * 
     * @param audioFramesPerPes
     *        The number of audio frames to insert for each PES packet.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withAudioFramesPerPes(Integer audioFramesPerPes) {
        setAudioFramesPerPes(audioFramesPerPes);
        return this;
    }

    /**
     * Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are accepted,
     * and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each
     * PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param audioPids
     *        Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are
     *        accepted, and can be entered in ranges and/or by comma separation. Can be entered as decimal or
     *        hexadecimal values. Each PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setAudioPids(String audioPids) {
        this.audioPids = audioPids;
    }

    /**
     * Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are accepted,
     * and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each
     * PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are
     *         accepted, and can be entered in ranges and/or by comma separation. Can be entered as decimal or
     *         hexadecimal values. Each PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getAudioPids() {
        return this.audioPids;
    }

    /**
     * Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are accepted,
     * and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each
     * PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param audioPids
     *        Packet Identifier (PID) of the elementary audio stream(s) in the transport stream. Multiple values are
     *        accepted, and can be entered in ranges and/or by comma separation. Can be entered as decimal or
     *        hexadecimal values. Each PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withAudioPids(String audioPids) {
        setAudioPids(audioPids);
        return this;
    }

    /**
     * When set to atsc, uses stream type = 0x81 for AC3 and stream type = 0x87 for EAC3. When set to dvb, uses stream
     * type = 0x06.
     * 
     * @param audioStreamType
     *        When set to atsc, uses stream type = 0x81 for AC3 and stream type = 0x87 for EAC3. When set to dvb, uses
     *        stream type = 0x06.
     * @see M2tsAudioStreamType
     */

    public void setAudioStreamType(String audioStreamType) {
        this.audioStreamType = audioStreamType;
    }

    /**
     * When set to atsc, uses stream type = 0x81 for AC3 and stream type = 0x87 for EAC3. When set to dvb, uses stream
     * type = 0x06.
     * 
     * @return When set to atsc, uses stream type = 0x81 for AC3 and stream type = 0x87 for EAC3. When set to dvb, uses
     *         stream type = 0x06.
     * @see M2tsAudioStreamType
     */

    public String getAudioStreamType() {
        return this.audioStreamType;
    }

    /**
     * When set to atsc, uses stream type = 0x81 for AC3 and stream type = 0x87 for EAC3. When set to dvb, uses stream
     * type = 0x06.
     * 
     * @param audioStreamType
     *        When set to atsc, uses stream type = 0x81 for AC3 and stream type = 0x87 for EAC3. When set to dvb, uses
     *        stream type = 0x06.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsAudioStreamType
     */

    public M2tsSettings withAudioStreamType(String audioStreamType) {
        setAudioStreamType(audioStreamType);
        return this;
    }

    /**
     * When set to atsc, uses stream type = 0x81 for AC3 and stream type = 0x87 for EAC3. When set to dvb, uses stream
     * type = 0x06.
     * 
     * @param audioStreamType
     *        When set to atsc, uses stream type = 0x81 for AC3 and stream type = 0x87 for EAC3. When set to dvb, uses
     *        stream type = 0x06.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsAudioStreamType
     */

    public M2tsSettings withAudioStreamType(M2tsAudioStreamType audioStreamType) {
        this.audioStreamType = audioStreamType.toString();
        return this;
    }

    /**
     * The output bitrate of the transport stream in bits per second. Setting to 0 lets the muxer automatically
     * determine the appropriate bitrate.
     * 
     * @param bitrate
     *        The output bitrate of the transport stream in bits per second. Setting to 0 lets the muxer automatically
     *        determine the appropriate bitrate.
     */

    public void setBitrate(Integer bitrate) {
        this.bitrate = bitrate;
    }

    /**
     * The output bitrate of the transport stream in bits per second. Setting to 0 lets the muxer automatically
     * determine the appropriate bitrate.
     * 
     * @return The output bitrate of the transport stream in bits per second. Setting to 0 lets the muxer automatically
     *         determine the appropriate bitrate.
     */

    public Integer getBitrate() {
        return this.bitrate;
    }

    /**
     * The output bitrate of the transport stream in bits per second. Setting to 0 lets the muxer automatically
     * determine the appropriate bitrate.
     * 
     * @param bitrate
     *        The output bitrate of the transport stream in bits per second. Setting to 0 lets the muxer automatically
     *        determine the appropriate bitrate.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withBitrate(Integer bitrate) {
        setBitrate(bitrate);
        return this;
    }

    /**
     * Controls the timing accuracy for output network traffic. Leave as MULTIPLEX to ensure accurate network packet
     * timing. Or set to NONE, which might result in lower latency but will result in more variability in output network
     * packet timing. This variability might cause interruptions, jitter, or bursty behavior in your playback or
     * receiving devices.
     * 
     * @param bufferModel
     *        Controls the timing accuracy for output network traffic. Leave as MULTIPLEX to ensure accurate network
     *        packet timing. Or set to NONE, which might result in lower latency but will result in more variability in
     *        output network packet timing. This variability might cause interruptions, jitter, or bursty behavior in
     *        your playback or receiving devices.
     * @see M2tsBufferModel
     */

    public void setBufferModel(String bufferModel) {
        this.bufferModel = bufferModel;
    }

    /**
     * Controls the timing accuracy for output network traffic. Leave as MULTIPLEX to ensure accurate network packet
     * timing. Or set to NONE, which might result in lower latency but will result in more variability in output network
     * packet timing. This variability might cause interruptions, jitter, or bursty behavior in your playback or
     * receiving devices.
     * 
     * @return Controls the timing accuracy for output network traffic. Leave as MULTIPLEX to ensure accurate network
     *         packet timing. Or set to NONE, which might result in lower latency but will result in more variability in
     *         output network packet timing. This variability might cause interruptions, jitter, or bursty behavior in
     *         your playback or receiving devices.
     * @see M2tsBufferModel
     */

    public String getBufferModel() {
        return this.bufferModel;
    }

    /**
     * Controls the timing accuracy for output network traffic. Leave as MULTIPLEX to ensure accurate network packet
     * timing. Or set to NONE, which might result in lower latency but will result in more variability in output network
     * packet timing. This variability might cause interruptions, jitter, or bursty behavior in your playback or
     * receiving devices.
     * 
     * @param bufferModel
     *        Controls the timing accuracy for output network traffic. Leave as MULTIPLEX to ensure accurate network
     *        packet timing. Or set to NONE, which might result in lower latency but will result in more variability in
     *        output network packet timing. This variability might cause interruptions, jitter, or bursty behavior in
     *        your playback or receiving devices.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsBufferModel
     */

    public M2tsSettings withBufferModel(String bufferModel) {
        setBufferModel(bufferModel);
        return this;
    }

    /**
     * Controls the timing accuracy for output network traffic. Leave as MULTIPLEX to ensure accurate network packet
     * timing. Or set to NONE, which might result in lower latency but will result in more variability in output network
     * packet timing. This variability might cause interruptions, jitter, or bursty behavior in your playback or
     * receiving devices.
     * 
     * @param bufferModel
     *        Controls the timing accuracy for output network traffic. Leave as MULTIPLEX to ensure accurate network
     *        packet timing. Or set to NONE, which might result in lower latency but will result in more variability in
     *        output network packet timing. This variability might cause interruptions, jitter, or bursty behavior in
     *        your playback or receiving devices.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsBufferModel
     */

    public M2tsSettings withBufferModel(M2tsBufferModel bufferModel) {
        this.bufferModel = bufferModel.toString();
        return this;
    }

    /**
     * When set to enabled, generates captionServiceDescriptor in PMT.
     * 
     * @param ccDescriptor
     *        When set to enabled, generates captionServiceDescriptor in PMT.
     * @see M2tsCcDescriptor
     */

    public void setCcDescriptor(String ccDescriptor) {
        this.ccDescriptor = ccDescriptor;
    }

    /**
     * When set to enabled, generates captionServiceDescriptor in PMT.
     * 
     * @return When set to enabled, generates captionServiceDescriptor in PMT.
     * @see M2tsCcDescriptor
     */

    public String getCcDescriptor() {
        return this.ccDescriptor;
    }

    /**
     * When set to enabled, generates captionServiceDescriptor in PMT.
     * 
     * @param ccDescriptor
     *        When set to enabled, generates captionServiceDescriptor in PMT.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsCcDescriptor
     */

    public M2tsSettings withCcDescriptor(String ccDescriptor) {
        setCcDescriptor(ccDescriptor);
        return this;
    }

    /**
     * When set to enabled, generates captionServiceDescriptor in PMT.
     * 
     * @param ccDescriptor
     *        When set to enabled, generates captionServiceDescriptor in PMT.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsCcDescriptor
     */

    public M2tsSettings withCcDescriptor(M2tsCcDescriptor ccDescriptor) {
        this.ccDescriptor = ccDescriptor.toString();
        return this;
    }

    /**
     * Inserts DVB Network Information Table (NIT) at the specified table repetition interval.
     * 
     * @param dvbNitSettings
     *        Inserts DVB Network Information Table (NIT) at the specified table repetition interval.
     */

    public void setDvbNitSettings(DvbNitSettings dvbNitSettings) {
        this.dvbNitSettings = dvbNitSettings;
    }

    /**
     * Inserts DVB Network Information Table (NIT) at the specified table repetition interval.
     * 
     * @return Inserts DVB Network Information Table (NIT) at the specified table repetition interval.
     */

    public DvbNitSettings getDvbNitSettings() {
        return this.dvbNitSettings;
    }

    /**
     * Inserts DVB Network Information Table (NIT) at the specified table repetition interval.
     * 
     * @param dvbNitSettings
     *        Inserts DVB Network Information Table (NIT) at the specified table repetition interval.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withDvbNitSettings(DvbNitSettings dvbNitSettings) {
        setDvbNitSettings(dvbNitSettings);
        return this;
    }

    /**
     * Inserts DVB Service Description Table (SDT) at the specified table repetition interval.
     * 
     * @param dvbSdtSettings
     *        Inserts DVB Service Description Table (SDT) at the specified table repetition interval.
     */

    public void setDvbSdtSettings(DvbSdtSettings dvbSdtSettings) {
        this.dvbSdtSettings = dvbSdtSettings;
    }

    /**
     * Inserts DVB Service Description Table (SDT) at the specified table repetition interval.
     * 
     * @return Inserts DVB Service Description Table (SDT) at the specified table repetition interval.
     */

    public DvbSdtSettings getDvbSdtSettings() {
        return this.dvbSdtSettings;
    }

    /**
     * Inserts DVB Service Description Table (SDT) at the specified table repetition interval.
     * 
     * @param dvbSdtSettings
     *        Inserts DVB Service Description Table (SDT) at the specified table repetition interval.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withDvbSdtSettings(DvbSdtSettings dvbSdtSettings) {
        setDvbSdtSettings(dvbSdtSettings);
        return this;
    }

    /**
     * Packet Identifier (PID) for input source DVB Subtitle data to this output. Multiple values are accepted, and can
     * be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID
     * specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param dvbSubPids
     *        Packet Identifier (PID) for input source DVB Subtitle data to this output. Multiple values are accepted,
     *        and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values.
     *        Each PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setDvbSubPids(String dvbSubPids) {
        this.dvbSubPids = dvbSubPids;
    }

    /**
     * Packet Identifier (PID) for input source DVB Subtitle data to this output. Multiple values are accepted, and can
     * be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID
     * specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) for input source DVB Subtitle data to this output. Multiple values are accepted,
     *         and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values.
     *         Each PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getDvbSubPids() {
        return this.dvbSubPids;
    }

    /**
     * Packet Identifier (PID) for input source DVB Subtitle data to this output. Multiple values are accepted, and can
     * be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID
     * specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param dvbSubPids
     *        Packet Identifier (PID) for input source DVB Subtitle data to this output. Multiple values are accepted,
     *        and can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values.
     *        Each PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withDvbSubPids(String dvbSubPids) {
        setDvbSubPids(dvbSubPids);
        return this;
    }

    /**
     * Inserts DVB Time and Date Table (TDT) at the specified table repetition interval.
     * 
     * @param dvbTdtSettings
     *        Inserts DVB Time and Date Table (TDT) at the specified table repetition interval.
     */

    public void setDvbTdtSettings(DvbTdtSettings dvbTdtSettings) {
        this.dvbTdtSettings = dvbTdtSettings;
    }

    /**
     * Inserts DVB Time and Date Table (TDT) at the specified table repetition interval.
     * 
     * @return Inserts DVB Time and Date Table (TDT) at the specified table repetition interval.
     */

    public DvbTdtSettings getDvbTdtSettings() {
        return this.dvbTdtSettings;
    }

    /**
     * Inserts DVB Time and Date Table (TDT) at the specified table repetition interval.
     * 
     * @param dvbTdtSettings
     *        Inserts DVB Time and Date Table (TDT) at the specified table repetition interval.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withDvbTdtSettings(DvbTdtSettings dvbTdtSettings) {
        setDvbTdtSettings(dvbTdtSettings);
        return this;
    }

    /**
     * Packet Identifier (PID) for input source DVB Teletext data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param dvbTeletextPid
     *        Packet Identifier (PID) for input source DVB Teletext data to this output. Can be entered as a decimal or
     *        hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setDvbTeletextPid(String dvbTeletextPid) {
        this.dvbTeletextPid = dvbTeletextPid;
    }

    /**
     * Packet Identifier (PID) for input source DVB Teletext data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) for input source DVB Teletext data to this output. Can be entered as a decimal or
     *         hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getDvbTeletextPid() {
        return this.dvbTeletextPid;
    }

    /**
     * Packet Identifier (PID) for input source DVB Teletext data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param dvbTeletextPid
     *        Packet Identifier (PID) for input source DVB Teletext data to this output. Can be entered as a decimal or
     *        hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withDvbTeletextPid(String dvbTeletextPid) {
        setDvbTeletextPid(dvbTeletextPid);
        return this;
    }

    /**
     * If set to passthrough, passes any EBIF data from the input source to this output.
     * 
     * @param ebif
     *        If set to passthrough, passes any EBIF data from the input source to this output.
     * @see M2tsEbifControl
     */

    public void setEbif(String ebif) {
        this.ebif = ebif;
    }

    /**
     * If set to passthrough, passes any EBIF data from the input source to this output.
     * 
     * @return If set to passthrough, passes any EBIF data from the input source to this output.
     * @see M2tsEbifControl
     */

    public String getEbif() {
        return this.ebif;
    }

    /**
     * If set to passthrough, passes any EBIF data from the input source to this output.
     * 
     * @param ebif
     *        If set to passthrough, passes any EBIF data from the input source to this output.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsEbifControl
     */

    public M2tsSettings withEbif(String ebif) {
        setEbif(ebif);
        return this;
    }

    /**
     * If set to passthrough, passes any EBIF data from the input source to this output.
     * 
     * @param ebif
     *        If set to passthrough, passes any EBIF data from the input source to this output.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsEbifControl
     */

    public M2tsSettings withEbif(M2tsEbifControl ebif) {
        this.ebif = ebif.toString();
        return this;
    }

    /**
     * When videoAndFixedIntervals is selected, audio EBP markers will be added to partitions 3 and 4. The interval
     * between these additional markers will be fixed, and will be slightly shorter than the video EBP marker interval.
     * Only available when EBP Cablelabs segmentation markers are selected. Partitions 1 and 2 will always follow the
     * video interval.
     * 
     * @param ebpAudioInterval
     *        When videoAndFixedIntervals is selected, audio EBP markers will be added to partitions 3 and 4. The
     *        interval between these additional markers will be fixed, and will be slightly shorter than the video EBP
     *        marker interval. Only available when EBP Cablelabs segmentation markers are selected. Partitions 1 and 2
     *        will always follow the video interval.
     * @see M2tsAudioInterval
     */

    public void setEbpAudioInterval(String ebpAudioInterval) {
        this.ebpAudioInterval = ebpAudioInterval;
    }

    /**
     * When videoAndFixedIntervals is selected, audio EBP markers will be added to partitions 3 and 4. The interval
     * between these additional markers will be fixed, and will be slightly shorter than the video EBP marker interval.
     * Only available when EBP Cablelabs segmentation markers are selected. Partitions 1 and 2 will always follow the
     * video interval.
     * 
     * @return When videoAndFixedIntervals is selected, audio EBP markers will be added to partitions 3 and 4. The
     *         interval between these additional markers will be fixed, and will be slightly shorter than the video EBP
     *         marker interval. Only available when EBP Cablelabs segmentation markers are selected. Partitions 1 and 2
     *         will always follow the video interval.
     * @see M2tsAudioInterval
     */

    public String getEbpAudioInterval() {
        return this.ebpAudioInterval;
    }

    /**
     * When videoAndFixedIntervals is selected, audio EBP markers will be added to partitions 3 and 4. The interval
     * between these additional markers will be fixed, and will be slightly shorter than the video EBP marker interval.
     * Only available when EBP Cablelabs segmentation markers are selected. Partitions 1 and 2 will always follow the
     * video interval.
     * 
     * @param ebpAudioInterval
     *        When videoAndFixedIntervals is selected, audio EBP markers will be added to partitions 3 and 4. The
     *        interval between these additional markers will be fixed, and will be slightly shorter than the video EBP
     *        marker interval. Only available when EBP Cablelabs segmentation markers are selected. Partitions 1 and 2
     *        will always follow the video interval.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsAudioInterval
     */

    public M2tsSettings withEbpAudioInterval(String ebpAudioInterval) {
        setEbpAudioInterval(ebpAudioInterval);
        return this;
    }

    /**
     * When videoAndFixedIntervals is selected, audio EBP markers will be added to partitions 3 and 4. The interval
     * between these additional markers will be fixed, and will be slightly shorter than the video EBP marker interval.
     * Only available when EBP Cablelabs segmentation markers are selected. Partitions 1 and 2 will always follow the
     * video interval.
     * 
     * @param ebpAudioInterval
     *        When videoAndFixedIntervals is selected, audio EBP markers will be added to partitions 3 and 4. The
     *        interval between these additional markers will be fixed, and will be slightly shorter than the video EBP
     *        marker interval. Only available when EBP Cablelabs segmentation markers are selected. Partitions 1 and 2
     *        will always follow the video interval.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsAudioInterval
     */

    public M2tsSettings withEbpAudioInterval(M2tsAudioInterval ebpAudioInterval) {
        this.ebpAudioInterval = ebpAudioInterval.toString();
        return this;
    }

    /**
     * When set, enforces that Encoder Boundary Points do not come within the specified time interval of each other by
     * looking ahead at input video. If another EBP is going to come in within the specified time interval, the current
     * EBP is not emitted, and the segment is "stretched" to the next marker. The lookahead value does not add latency to
     * the system. The Live Event must be configured elsewhere to create sufficient latency to make the lookahead
     * accurate.
     * 
     * @param ebpLookaheadMs
     *        When set, enforces that Encoder Boundary Points do not come within the specified time interval of each
     *        other by looking ahead at input video. If another EBP is going to come in within the specified time
     *        interval, the current EBP is not emitted, and the segment is "stretched" to the next marker. The lookahead
     *        value does not add latency to the system. The Live Event must be configured elsewhere to create sufficient
     *        latency to make the lookahead accurate.
     */

    public void setEbpLookaheadMs(Integer ebpLookaheadMs) {
        this.ebpLookaheadMs = ebpLookaheadMs;
    }

    /**
     * When set, enforces that Encoder Boundary Points do not come within the specified time interval of each other by
     * looking ahead at input video. If another EBP is going to come in within the specified time interval, the current
     * EBP is not emitted, and the segment is "stretched" to the next marker. The lookahead value does not add latency to
     * the system. The Live Event must be configured elsewhere to create sufficient latency to make the lookahead
     * accurate.
     * 
     * @return When set, enforces that Encoder Boundary Points do not come within the specified time interval of each
     *         other by looking ahead at input video. If another EBP is going to come in within the specified time
     *         interval, the current EBP is not emitted, and the segment is "stretched" to the next marker. The
     *         lookahead value does not add latency to the system. The Live Event must be configured elsewhere to create
     *         sufficient latency to make the lookahead accurate.
     */

    public Integer getEbpLookaheadMs() {
        return this.ebpLookaheadMs;
    }

    /**
     * When set, enforces that Encoder Boundary Points do not come within the specified time interval of each other by
     * looking ahead at input video. If another EBP is going to come in within the specified time interval, the current
     * EBP is not emitted, and the segment is "stretched" to the next marker. The lookahead value does not add latency to
     * the system. The Live Event must be configured elsewhere to create sufficient latency to make the lookahead
     * accurate.
     * 
     * @param ebpLookaheadMs
     *        When set, enforces that Encoder Boundary Points do not come within the specified time interval of each
     *        other by looking ahead at input video. If another EBP is going to come in within the specified time
     *        interval, the current EBP is not emitted, and the segment is "stretched" to the next marker. The lookahead
     *        value does not add latency to the system. The Live Event must be configured elsewhere to create sufficient
     *        latency to make the lookahead accurate.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withEbpLookaheadMs(Integer ebpLookaheadMs) {
        setEbpLookaheadMs(ebpLookaheadMs);
        return this;
    }

    /**
     * Controls placement of EBP on Audio PIDs. If set to videoAndAudioPids, EBP markers will be placed on the video PID
     * and all audio PIDs. If set to videoPid, EBP markers will be placed on only the video PID.
     * 
     * @param ebpPlacement
     *        Controls placement of EBP on Audio PIDs. If set to videoAndAudioPids, EBP markers will be placed on the
     *        video PID and all audio PIDs. If set to videoPid, EBP markers will be placed on only the video PID.
     * @see M2tsEbpPlacement
     */

    public void setEbpPlacement(String ebpPlacement) {
        this.ebpPlacement = ebpPlacement;
    }

    /**
     * Controls placement of EBP on Audio PIDs. If set to videoAndAudioPids, EBP markers will be placed on the video PID
     * and all audio PIDs. If set to videoPid, EBP markers will be placed on only the video PID.
     * 
     * @return Controls placement of EBP on Audio PIDs. If set to videoAndAudioPids, EBP markers will be placed on the
     *         video PID and all audio PIDs. If set to videoPid, EBP markers will be placed on only the video PID.
     * @see M2tsEbpPlacement
     */

    public String getEbpPlacement() {
        return this.ebpPlacement;
    }

    /**
     * Controls placement of EBP on Audio PIDs. If set to videoAndAudioPids, EBP markers will be placed on the video PID
     * and all audio PIDs. If set to videoPid, EBP markers will be placed on only the video PID.
     * 
     * @param ebpPlacement
     *        Controls placement of EBP on Audio PIDs. If set to videoAndAudioPids, EBP markers will be placed on the
     *        video PID and all audio PIDs. If set to videoPid, EBP markers will be placed on only the video PID.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsEbpPlacement
     */

    public M2tsSettings withEbpPlacement(String ebpPlacement) {
        setEbpPlacement(ebpPlacement);
        return this;
    }

    /**
     * Controls placement of EBP on Audio PIDs. If set to videoAndAudioPids, EBP markers will be placed on the video PID
     * and all audio PIDs. If set to videoPid, EBP markers will be placed on only the video PID.
     * 
     * @param ebpPlacement
     *        Controls placement of EBP on Audio PIDs. If set to videoAndAudioPids, EBP markers will be placed on the
     *        video PID and all audio PIDs. If set to videoPid, EBP markers will be placed on only the video PID.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsEbpPlacement
     */

    public M2tsSettings withEbpPlacement(M2tsEbpPlacement ebpPlacement) {
        this.ebpPlacement = ebpPlacement.toString();
        return this;
    }

    /**
     * This field is unused and deprecated.
     * 
     * @param ecmPid
     *        This field is unused and deprecated.
     */

    public void setEcmPid(String ecmPid) {
        this.ecmPid = ecmPid;
    }

    /**
     * This field is unused and deprecated.
     * 
     * @return This field is unused and deprecated.
     */

    public String getEcmPid() {
        return this.ecmPid;
    }

    /**
     * This field is unused and deprecated.
     * 
     * @param ecmPid
     *        This field is unused and deprecated.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withEcmPid(String ecmPid) {
        setEcmPid(ecmPid);
        return this;
    }

    /**
     * Include or exclude the ES Rate field in the PES header.
     * 
     * @param esRateInPes
     *        Include or exclude the ES Rate field in the PES header.
     * @see M2tsEsRateInPes
     */

    public void setEsRateInPes(String esRateInPes) {
        this.esRateInPes = esRateInPes;
    }

    /**
     * Include or exclude the ES Rate field in the PES header.
     * 
     * @return Include or exclude the ES Rate field in the PES header.
     * @see M2tsEsRateInPes
     */

    public String getEsRateInPes() {
        return this.esRateInPes;
    }

    /**
     * Include or exclude the ES Rate field in the PES header.
     * 
     * @param esRateInPes
     *        Include or exclude the ES Rate field in the PES header.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsEsRateInPes
     */

    public M2tsSettings withEsRateInPes(String esRateInPes) {
        setEsRateInPes(esRateInPes);
        return this;
    }

    /**
     * Include or exclude the ES Rate field in the PES header.
     * 
     * @param esRateInPes
     *        Include or exclude the ES Rate field in the PES header.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsEsRateInPes
     */

    public M2tsSettings withEsRateInPes(M2tsEsRateInPes esRateInPes) {
        this.esRateInPes = esRateInPes.toString();
        return this;
    }

    /**
     * Packet Identifier (PID) for input source ETV Platform data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param etvPlatformPid
     *        Packet Identifier (PID) for input source ETV Platform data to this output. Can be entered as a decimal or
     *        hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setEtvPlatformPid(String etvPlatformPid) {
        this.etvPlatformPid = etvPlatformPid;
    }

    /**
     * Packet Identifier (PID) for input source ETV Platform data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) for input source ETV Platform data to this output. Can be entered as a decimal or
     *         hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getEtvPlatformPid() {
        return this.etvPlatformPid;
    }

    /**
     * Packet Identifier (PID) for input source ETV Platform data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param etvPlatformPid
     *        Packet Identifier (PID) for input source ETV Platform data to this output. Can be entered as a decimal or
     *        hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withEtvPlatformPid(String etvPlatformPid) {
        setEtvPlatformPid(etvPlatformPid);
        return this;
    }

    /**
     * Packet Identifier (PID) for input source ETV Signal data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param etvSignalPid
     *        Packet Identifier (PID) for input source ETV Signal data to this output. Can be entered as a decimal or
     *        hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setEtvSignalPid(String etvSignalPid) {
        this.etvSignalPid = etvSignalPid;
    }

    /**
     * Packet Identifier (PID) for input source ETV Signal data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) for input source ETV Signal data to this output. Can be entered as a decimal or
     *         hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getEtvSignalPid() {
        return this.etvSignalPid;
    }

    /**
     * Packet Identifier (PID) for input source ETV Signal data to this output. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param etvSignalPid
     *        Packet Identifier (PID) for input source ETV Signal data to this output. Can be entered as a decimal or
     *        hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withEtvSignalPid(String etvSignalPid) {
        setEtvSignalPid(etvSignalPid);
        return this;
    }

    /**
     * The length in seconds of each fragment. Only used with EBP markers.
     * 
     * @param fragmentTime
     *        The length in seconds of each fragment. Only used with EBP markers.
     */

    public void setFragmentTime(Double fragmentTime) {
        this.fragmentTime = fragmentTime;
    }

    /**
     * The length in seconds of each fragment. Only used with EBP markers.
     * 
     * @return The length in seconds of each fragment. Only used with EBP markers.
     */

    public Double getFragmentTime() {
        return this.fragmentTime;
    }

    /**
     * The length in seconds of each fragment. Only used with EBP markers.
     * 
     * @param fragmentTime
     *        The length in seconds of each fragment. Only used with EBP markers.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withFragmentTime(Double fragmentTime) {
        setFragmentTime(fragmentTime);
        return this;
    }

    /**
     * If set to passthrough, passes any KLV data from the input source to this output.
     * 
     * @param klv
     *        If set to passthrough, passes any KLV data from the input source to this output.
     * @see M2tsKlv
     */

    public void setKlv(String klv) {
        this.klv = klv;
    }

    /**
     * If set to passthrough, passes any KLV data from the input source to this output.
     * 
     * @return If set to passthrough, passes any KLV data from the input source to this output.
     * @see M2tsKlv
     */

    public String getKlv() {
        return this.klv;
    }

    /**
     * If set to passthrough, passes any KLV data from the input source to this output.
     * 
     * @param klv
     *        If set to passthrough, passes any KLV data from the input source to this output.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsKlv
     */

    public M2tsSettings withKlv(String klv) {
        setKlv(klv);
        return this;
    }

    /**
     * If set to passthrough, passes any KLV data from the input source to this output.
     * 
     * @param klv
     *        If set to passthrough, passes any KLV data from the input source to this output.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsKlv
     */

    public M2tsSettings withKlv(M2tsKlv klv) {
        this.klv = klv.toString();
        return this;
    }

    /**
     * Packet Identifier (PID) for input source KLV data to this output. Multiple values are accepted, and can be
     * entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID specified
     * must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param klvDataPids
     *        Packet Identifier (PID) for input source KLV data to this output. Multiple values are accepted, and can be
     *        entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID
     *        specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setKlvDataPids(String klvDataPids) {
        this.klvDataPids = klvDataPids;
    }

    /**
     * Packet Identifier (PID) for input source KLV data to this output. Multiple values are accepted, and can be
     * entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID specified
     * must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) for input source KLV data to this output. Multiple values are accepted, and can
     *         be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each
     *         PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getKlvDataPids() {
        return this.klvDataPids;
    }

    /**
     * Packet Identifier (PID) for input source KLV data to this output. Multiple values are accepted, and can be
     * entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID specified
     * must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param klvDataPids
     *        Packet Identifier (PID) for input source KLV data to this output. Multiple values are accepted, and can be
     *        entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID
     *        specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withKlvDataPids(String klvDataPids) {
        setKlvDataPids(klvDataPids);
        return this;
    }

    /**
     * If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and an
     * equivalent ID3 tag will be inserted in the output.
     * 
     * @param nielsenId3Behavior
     *        If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and
     *        an equivalent ID3 tag will be inserted in the output.
     * @see M2tsNielsenId3Behavior
     */

    public void setNielsenId3Behavior(String nielsenId3Behavior) {
        this.nielsenId3Behavior = nielsenId3Behavior;
    }

    /**
     * If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and an
     * equivalent ID3 tag will be inserted in the output.
     * 
     * @return If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and
     *         an equivalent ID3 tag will be inserted in the output.
     * @see M2tsNielsenId3Behavior
     */

    public String getNielsenId3Behavior() {
        return this.nielsenId3Behavior;
    }

    /**
     * If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and an
     * equivalent ID3 tag will be inserted in the output.
     * 
     * @param nielsenId3Behavior
     *        If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and
     *        an equivalent ID3 tag will be inserted in the output.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsNielsenId3Behavior
     */

    public M2tsSettings withNielsenId3Behavior(String nielsenId3Behavior) {
        setNielsenId3Behavior(nielsenId3Behavior);
        return this;
    }

    /**
     * If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and an
     * equivalent ID3 tag will be inserted in the output.
     * 
     * @param nielsenId3Behavior
     *        If set to passthrough, Nielsen inaudible tones for media tracking will be detected in the input audio and
     *        an equivalent ID3 tag will be inserted in the output.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsNielsenId3Behavior
     */

    public M2tsSettings withNielsenId3Behavior(M2tsNielsenId3Behavior nielsenId3Behavior) {
        this.nielsenId3Behavior = nielsenId3Behavior.toString();
        return this;
    }

    /**
     * Value in bits per second of extra null packets to insert into the transport stream. This can be used if a
     * downstream encryption system requires periodic null packets.
     * 
     * @param nullPacketBitrate
     *        Value in bits per second of extra null packets to insert into the transport stream. This can be used if a
     *        downstream encryption system requires periodic null packets.
     */

    public void setNullPacketBitrate(Double nullPacketBitrate) {
        this.nullPacketBitrate = nullPacketBitrate;
    }

    /**
     * Value in bits per second of extra null packets to insert into the transport stream. This can be used if a
     * downstream encryption system requires periodic null packets.
     * 
     * @return Value in bits per second of extra null packets to insert into the transport stream. This can be used if a
     *         downstream encryption system requires periodic null packets.
     */

    public Double getNullPacketBitrate() {
        return this.nullPacketBitrate;
    }

    /**
     * Value in bits per second of extra null packets to insert into the transport stream. This can be used if a
     * downstream encryption system requires periodic null packets.
     * 
     * @param nullPacketBitrate
     *        Value in bits per second of extra null packets to insert into the transport stream. This can be used if a
     *        downstream encryption system requires periodic null packets.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withNullPacketBitrate(Double nullPacketBitrate) {
        setNullPacketBitrate(nullPacketBitrate);
        return this;
    }

    /**
     * The number of milliseconds between instances of this table in the output transport stream. Valid values are 0,
     * 10..1000.
     * 
     * @param patInterval
     *        The number of milliseconds between instances of this table in the output transport stream. Valid values
     *        are 0, 10..1000.
     */

    public void setPatInterval(Integer patInterval) {
        this.patInterval = patInterval;
    }

    /**
     * The number of milliseconds between instances of this table in the output transport stream. Valid values are 0,
     * 10..1000.
     * 
     * @return The number of milliseconds between instances of this table in the output transport stream. Valid values
     *         are 0, 10..1000.
     */

    public Integer getPatInterval() {
        return this.patInterval;
    }

    /**
     * The number of milliseconds between instances of this table in the output transport stream. Valid values are 0,
     * 10..1000.
     * 
     * @param patInterval
     *        The number of milliseconds between instances of this table in the output transport stream. Valid values
     *        are 0, 10..1000.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withPatInterval(Integer patInterval) {
        setPatInterval(patInterval);
        return this;
    }

    /**
     * When set to pcrEveryPesPacket, a Program Clock Reference value is inserted for every Packetized Elementary Stream
     * (PES) header. This parameter is effective only when the PCR PID is the same as the video or audio elementary
     * stream.
     * 
     * @param pcrControl
     *        When set to pcrEveryPesPacket, a Program Clock Reference value is inserted for every Packetized Elementary
     *        Stream (PES) header. This parameter is effective only when the PCR PID is the same as the video or audio
     *        elementary stream.
     * @see M2tsPcrControl
     */

    public void setPcrControl(String pcrControl) {
        this.pcrControl = pcrControl;
    }

    /**
     * When set to pcrEveryPesPacket, a Program Clock Reference value is inserted for every Packetized Elementary Stream
     * (PES) header. This parameter is effective only when the PCR PID is the same as the video or audio elementary
     * stream.
     * 
     * @return When set to pcrEveryPesPacket, a Program Clock Reference value is inserted for every Packetized
     *         Elementary Stream (PES) header. This parameter is effective only when the PCR PID is the same as the
     *         video or audio elementary stream.
     * @see M2tsPcrControl
     */

    public String getPcrControl() {
        return this.pcrControl;
    }

    /**
     * When set to pcrEveryPesPacket, a Program Clock Reference value is inserted for every Packetized Elementary Stream
     * (PES) header. This parameter is effective only when the PCR PID is the same as the video or audio elementary
     * stream.
     * 
     * @param pcrControl
     *        When set to pcrEveryPesPacket, a Program Clock Reference value is inserted for every Packetized Elementary
     *        Stream (PES) header. This parameter is effective only when the PCR PID is the same as the video or audio
     *        elementary stream.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsPcrControl
     */

    public M2tsSettings withPcrControl(String pcrControl) {
        setPcrControl(pcrControl);
        return this;
    }

    /**
     * When set to pcrEveryPesPacket, a Program Clock Reference value is inserted for every Packetized Elementary Stream
     * (PES) header. This parameter is effective only when the PCR PID is the same as the video or audio elementary
     * stream.
     * 
     * @param pcrControl
     *        When set to pcrEveryPesPacket, a Program Clock Reference value is inserted for every Packetized Elementary
     *        Stream (PES) header. This parameter is effective only when the PCR PID is the same as the video or audio
     *        elementary stream.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsPcrControl
     */

    public M2tsSettings withPcrControl(M2tsPcrControl pcrControl) {
        this.pcrControl = pcrControl.toString();
        return this;
    }

    /**
     * Maximum time in milliseconds between Program Clock Reference (PCRs) inserted into the transport stream.
     * 
     * @param pcrPeriod
     *        Maximum time in milliseconds between Program Clock Reference (PCRs) inserted into the transport stream.
     */

    public void setPcrPeriod(Integer pcrPeriod) {
        this.pcrPeriod = pcrPeriod;
    }

    /**
     * Maximum time in milliseconds between Program Clock Reference (PCRs) inserted into the transport stream.
     * 
     * @return Maximum time in milliseconds between Program Clock Reference (PCRs) inserted into the transport stream.
     */

    public Integer getPcrPeriod() {
        return this.pcrPeriod;
    }

    /**
     * Maximum time in milliseconds between Program Clock Reference (PCRs) inserted into the transport stream.
     * 
     * @param pcrPeriod
     *        Maximum time in milliseconds between Program Clock Reference (PCRs) inserted into the transport stream.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withPcrPeriod(Integer pcrPeriod) {
        setPcrPeriod(pcrPeriod);
        return this;
    }

    /**
     * Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is given, the
     * encoder will assign the same value as the Video PID. Can be entered as a decimal or hexadecimal value. Valid
     * values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param pcrPid
     *        Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is
     *        given, the encoder will assign the same value as the Video PID. Can be entered as a decimal or hexadecimal
     *        value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setPcrPid(String pcrPid) {
        this.pcrPid = pcrPid;
    }

    /**
     * Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is given, the
     * encoder will assign the same value as the Video PID. Can be entered as a decimal or hexadecimal value. Valid
     * values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is
     *         given, the encoder will assign the same value as the Video PID. Can be entered as a decimal or
     *         hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getPcrPid() {
        return this.pcrPid;
    }

    /**
     * Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is given, the
     * encoder will assign the same value as the Video PID. Can be entered as a decimal or hexadecimal value. Valid
     * values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param pcrPid
     *        Packet Identifier (PID) of the Program Clock Reference (PCR) in the transport stream. When no value is
     *        given, the encoder will assign the same value as the Video PID. Can be entered as a decimal or hexadecimal
     *        value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withPcrPid(String pcrPid) {
        setPcrPid(pcrPid);
        return this;
    }

    /**
     * The number of milliseconds between instances of this table in the output transport stream. Valid values are 0,
     * 10..1000.
     * 
     * @param pmtInterval
     *        The number of milliseconds between instances of this table in the output transport stream. Valid values
     *        are 0, 10..1000.
     */

    public void setPmtInterval(Integer pmtInterval) {
        this.pmtInterval = pmtInterval;
    }

    /**
     * The number of milliseconds between instances of this table in the output transport stream. Valid values are 0,
     * 10..1000.
     * 
     * @return The number of milliseconds between instances of this table in the output transport stream. Valid values
     *         are 0, 10..1000.
     */

    public Integer getPmtInterval() {
        return this.pmtInterval;
    }

    /**
     * The number of milliseconds between instances of this table in the output transport stream. Valid values are 0,
     * 10..1000.
     * 
     * @param pmtInterval
     *        The number of milliseconds between instances of this table in the output transport stream. Valid values
     *        are 0, 10..1000.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withPmtInterval(Integer pmtInterval) {
        setPmtInterval(pmtInterval);
        return this;
    }

    /**
     * Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param pmtPid
     *        Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream. Can be entered as a
     *        decimal or hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setPmtPid(String pmtPid) {
        this.pmtPid = pmtPid;
    }

    /**
     * Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream. Can be entered as a
     *         decimal or hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getPmtPid() {
        return this.pmtPid;
    }

    /**
     * Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param pmtPid
     *        Packet Identifier (PID) for the Program Map Table (PMT) in the transport stream. Can be entered as a
     *        decimal or hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withPmtPid(String pmtPid) {
        setPmtPid(pmtPid);
        return this;
    }

    /**
     * The value of the program number field in the Program Map Table.
     * 
     * @param programNum
     *        The value of the program number field in the Program Map Table.
     */

    public void setProgramNum(Integer programNum) {
        this.programNum = programNum;
    }

    /**
     * The value of the program number field in the Program Map Table.
     * 
     * @return The value of the program number field in the Program Map Table.
     */

    public Integer getProgramNum() {
        return this.programNum;
    }

    /**
     * The value of the program number field in the Program Map Table.
     * 
     * @param programNum
     *        The value of the program number field in the Program Map Table.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withProgramNum(Integer programNum) {
        setProgramNum(programNum);
        return this;
    }

    /**
     * When vbr, does not insert null packets into transport stream to fill specified bitrate. The bitrate setting acts
     * as the maximum bitrate when vbr is set.
     * 
     * @param rateMode
     *        When vbr, does not insert null packets into transport stream to fill specified bitrate. The bitrate
     *        setting acts as the maximum bitrate when vbr is set.
     * @see M2tsRateMode
     */

    public void setRateMode(String rateMode) {
        this.rateMode = rateMode;
    }

    /**
     * When vbr, does not insert null packets into transport stream to fill specified bitrate. The bitrate setting acts
     * as the maximum bitrate when vbr is set.
     * 
     * @return When vbr, does not insert null packets into transport stream to fill specified bitrate. The bitrate
     *         setting acts as the maximum bitrate when vbr is set.
     * @see M2tsRateMode
     */

    public String getRateMode() {
        return this.rateMode;
    }

    /**
     * When vbr, does not insert null packets into transport stream to fill specified bitrate. The bitrate setting acts
     * as the maximum bitrate when vbr is set.
     * 
     * @param rateMode
     *        When vbr, does not insert null packets into transport stream to fill specified bitrate. The bitrate
     *        setting acts as the maximum bitrate when vbr is set.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsRateMode
     */

    public M2tsSettings withRateMode(String rateMode) {
        setRateMode(rateMode);
        return this;
    }

    /**
     * When vbr, does not insert null packets into transport stream to fill specified bitrate. The bitrate setting acts
     * as the maximum bitrate when vbr is set.
     * 
     * @param rateMode
     *        When vbr, does not insert null packets into transport stream to fill specified bitrate. The bitrate
     *        setting acts as the maximum bitrate when vbr is set.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsRateMode
     */

    public M2tsSettings withRateMode(M2tsRateMode rateMode) {
        this.rateMode = rateMode.toString();
        return this;
    }

    /**
     * Packet Identifier (PID) for input source SCTE-27 data to this output. Multiple values are accepted, and can be
     * entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID specified
     * must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param scte27Pids
     *        Packet Identifier (PID) for input source SCTE-27 data to this output. Multiple values are accepted, and
     *        can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each
     *        PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setScte27Pids(String scte27Pids) {
        this.scte27Pids = scte27Pids;
    }

    /**
     * Packet Identifier (PID) for input source SCTE-27 data to this output. Multiple values are accepted, and can be
     * entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID specified
     * must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) for input source SCTE-27 data to this output. Multiple values are accepted, and
     *         can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values.
     *         Each PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getScte27Pids() {
        return this.scte27Pids;
    }

    /**
     * Packet Identifier (PID) for input source SCTE-27 data to this output. Multiple values are accepted, and can be
     * entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each PID specified
     * must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param scte27Pids
     *        Packet Identifier (PID) for input source SCTE-27 data to this output. Multiple values are accepted, and
     *        can be entered in ranges and/or by comma separation. Can be entered as decimal or hexadecimal values. Each
     *        PID specified must be in the range of 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withScte27Pids(String scte27Pids) {
        setScte27Pids(scte27Pids);
        return this;
    }

    /**
     * Optionally pass SCTE-35 signals from the input source to this output.
     * 
     * @param scte35Control
     *        Optionally pass SCTE-35 signals from the input source to this output.
     * @see M2tsScte35Control
     */

    public void setScte35Control(String scte35Control) {
        this.scte35Control = scte35Control;
    }

    /**
     * Optionally pass SCTE-35 signals from the input source to this output.
     * 
     * @return Optionally pass SCTE-35 signals from the input source to this output.
     * @see M2tsScte35Control
     */

    public String getScte35Control() {
        return this.scte35Control;
    }

    /**
     * Optionally pass SCTE-35 signals from the input source to this output.
     * 
     * @param scte35Control
     *        Optionally pass SCTE-35 signals from the input source to this output.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsScte35Control
     */

    public M2tsSettings withScte35Control(String scte35Control) {
        setScte35Control(scte35Control);
        return this;
    }

    /**
     * Optionally pass SCTE-35 signals from the input source to this output.
     * 
     * @param scte35Control
     *        Optionally pass SCTE-35 signals from the input source to this output.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsScte35Control
     */

    public M2tsSettings withScte35Control(M2tsScte35Control scte35Control) {
        this.scte35Control = scte35Control.toString();
        return this;
    }

    /**
     * Packet Identifier (PID) of the SCTE-35 stream in the transport stream. Can be entered as a decimal or hexadecimal
     * value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param scte35Pid
     *        Packet Identifier (PID) of the SCTE-35 stream in the transport stream. Can be entered as a decimal or
     *        hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setScte35Pid(String scte35Pid) {
        this.scte35Pid = scte35Pid;
    }

    /**
     * Packet Identifier (PID) of the SCTE-35 stream in the transport stream. Can be entered as a decimal or hexadecimal
     * value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) of the SCTE-35 stream in the transport stream. Can be entered as a decimal or
     *         hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getScte35Pid() {
        return this.scte35Pid;
    }

    /**
     * Packet Identifier (PID) of the SCTE-35 stream in the transport stream. Can be entered as a decimal or hexadecimal
     * value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param scte35Pid
     *        Packet Identifier (PID) of the SCTE-35 stream in the transport stream. Can be entered as a decimal or
     *        hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withScte35Pid(String scte35Pid) {
        setScte35Pid(scte35Pid);
        return this;
    }

    /**
     * Inserts segmentation markers at each segmentationTime period. raiSegstart sets the Random Access Indicator bit in
     * the adaptation field. raiAdapt sets the RAI bit and adds the current timecode in the private data bytes.
     * psiSegstart inserts PAT and PMT tables at the start of segments. ebp adds Encoder Boundary Point information to
     * the adaptation field as per OpenCable specification OC-SP-EBP-I01-130118. ebpLegacy adds Encoder Boundary Point
     * information to the adaptation field using a legacy proprietary format.
     * 
     * @param segmentationMarkers
     *        Inserts segmentation markers at each segmentationTime period. raiSegstart sets the Random Access Indicator
     *        bit in the adaptation field. raiAdapt sets the RAI bit and adds the current timecode in the private data
     *        bytes. psiSegstart inserts PAT and PMT tables at the start of segments. ebp adds Encoder Boundary Point
     *        information to the adaptation field as per OpenCable specification OC-SP-EBP-I01-130118. ebpLegacy adds
     *        Encoder Boundary Point information to the adaptation field using a legacy proprietary format.
     * @see M2tsSegmentationMarkers
     */

    public void setSegmentationMarkers(String segmentationMarkers) {
        this.segmentationMarkers = segmentationMarkers;
    }

    /**
     * Inserts segmentation markers at each segmentationTime period. raiSegstart sets the Random Access Indicator bit in
     * the adaptation field. raiAdapt sets the RAI bit and adds the current timecode in the private data bytes.
     * psiSegstart inserts PAT and PMT tables at the start of segments. ebp adds Encoder Boundary Point information to
     * the adaptation field as per OpenCable specification OC-SP-EBP-I01-130118. ebpLegacy adds Encoder Boundary Point
     * information to the adaptation field using a legacy proprietary format.
     * 
     * @return Inserts segmentation markers at each segmentationTime period. raiSegstart sets the Random Access
     *         Indicator bit in the adaptation field. raiAdapt sets the RAI bit and adds the current timecode in the
     *         private data bytes. psiSegstart inserts PAT and PMT tables at the start of segments. ebp adds Encoder
     *         Boundary Point information to the adaptation field as per OpenCable specification OC-SP-EBP-I01-130118.
     *         ebpLegacy adds Encoder Boundary Point information to the adaptation field using a legacy proprietary
     *         format.
     * @see M2tsSegmentationMarkers
     */

    public String getSegmentationMarkers() {
        return this.segmentationMarkers;
    }

    /**
     * Inserts segmentation markers at each segmentationTime period. raiSegstart sets the Random Access Indicator bit in
     * the adaptation field. raiAdapt sets the RAI bit and adds the current timecode in the private data bytes.
     * psiSegstart inserts PAT and PMT tables at the start of segments. ebp adds Encoder Boundary Point information to
     * the adaptation field as per OpenCable specification OC-SP-EBP-I01-130118. ebpLegacy adds Encoder Boundary Point
     * information to the adaptation field using a legacy proprietary format.
     * 
     * @param segmentationMarkers
     *        Inserts segmentation markers at each segmentationTime period. raiSegstart sets the Random Access Indicator
     *        bit in the adaptation field. raiAdapt sets the RAI bit and adds the current timecode in the private data
     *        bytes. psiSegstart inserts PAT and PMT tables at the start of segments. ebp adds Encoder Boundary Point
     *        information to the adaptation field as per OpenCable specification OC-SP-EBP-I01-130118. ebpLegacy adds
     *        Encoder Boundary Point information to the adaptation field using a legacy proprietary format.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsSegmentationMarkers
     */

    public M2tsSettings withSegmentationMarkers(String segmentationMarkers) {
        setSegmentationMarkers(segmentationMarkers);
        return this;
    }

    /**
     * Inserts segmentation markers at each segmentationTime period. raiSegstart sets the Random Access Indicator bit in
     * the adaptation field. raiAdapt sets the RAI bit and adds the current timecode in the private data bytes.
     * psiSegstart inserts PAT and PMT tables at the start of segments. ebp adds Encoder Boundary Point information to
     * the adaptation field as per OpenCable specification OC-SP-EBP-I01-130118. ebpLegacy adds Encoder Boundary Point
     * information to the adaptation field using a legacy proprietary format.
     * 
     * @param segmentationMarkers
     *        Inserts segmentation markers at each segmentationTime period. raiSegstart sets the Random Access Indicator
     *        bit in the adaptation field. raiAdapt sets the RAI bit and adds the current timecode in the private data
     *        bytes. psiSegstart inserts PAT and PMT tables at the start of segments. ebp adds Encoder Boundary Point
     *        information to the adaptation field as per OpenCable specification OC-SP-EBP-I01-130118. ebpLegacy adds
     *        Encoder Boundary Point information to the adaptation field using a legacy proprietary format.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsSegmentationMarkers
     */

    public M2tsSettings withSegmentationMarkers(M2tsSegmentationMarkers segmentationMarkers) {
        this.segmentationMarkers = segmentationMarkers.toString();
        return this;
    }

    /**
     * The segmentation style parameter controls how segmentation markers are inserted into the transport stream. With
     * avails, it is possible that segments may be truncated, which can influence where future segmentation markers are
     * inserted.
     * 
     * When a segmentation style of "resetCadence" is selected and a segment is truncated due to an avail, we will reset
     * the segmentation cadence. This means the subsequent segment will have a duration of $segmentationTime seconds.
     * 
     * When a segmentation style of "maintainCadence" is selected and a segment is truncated due to an avail, we will
     * not reset the segmentation cadence. This means the subsequent segment will likely be truncated as well. However,
     * all segments after that will have a duration of $segmentationTime seconds. Note that EBP lookahead is a slight
     * exception to this rule.
     * 
     * @param segmentationStyle
     *        The segmentation style parameter controls how segmentation markers are inserted into the transport stream.
     *        With avails, it is possible that segments may be truncated, which can influence where future segmentation
     *        markers are inserted.
     * 
     *        When a segmentation style of "resetCadence" is selected and a segment is truncated due to an avail, we
     *        will reset the segmentation cadence. This means the subsequent segment will have a duration of
     *        $segmentationTime seconds.
     * 
     *        When a segmentation style of "maintainCadence" is selected and a segment is truncated due to an avail, we
     *        will not reset the segmentation cadence. This means the subsequent segment will likely be truncated as
     *        well. However, all segments after that will have a duration of $segmentationTime seconds. Note that EBP
     *        lookahead is a slight exception to this rule.
     * @see M2tsSegmentationStyle
     */

    public void setSegmentationStyle(String segmentationStyle) {
        this.segmentationStyle = segmentationStyle;
    }

    /**
     * The segmentation style parameter controls how segmentation markers are inserted into the transport stream. With
     * avails, it is possible that segments may be truncated, which can influence where future segmentation markers are
     * inserted.
     * 
     * When a segmentation style of "resetCadence" is selected and a segment is truncated due to an avail, we will reset
     * the segmentation cadence. This means the subsequent segment will have a duration of $segmentationTime seconds.
     * 
     * When a segmentation style of "maintainCadence" is selected and a segment is truncated due to an avail, we will
     * not reset the segmentation cadence. This means the subsequent segment will likely be truncated as well. However,
     * all segments after that will have a duration of $segmentationTime seconds. Note that EBP lookahead is a slight
     * exception to this rule.
     * 
     * @return The segmentation style parameter controls how segmentation markers are inserted into the transport
     *         stream. With avails, it is possible that segments may be truncated, which can influence where future
     *         segmentation markers are inserted.
     * 
     *         When a segmentation style of "resetCadence" is selected and a segment is truncated due to an avail, we
     *         will reset the segmentation cadence. This means the subsequent segment will have a duration of
     *         $segmentationTime seconds.
     * 
     *         When a segmentation style of "maintainCadence" is selected and a segment is truncated due to an avail, we
     *         will not reset the segmentation cadence. This means the subsequent segment will likely be truncated as
     *         well. However, all segments after that will have a duration of $segmentationTime seconds. Note that EBP
     *         lookahead is a slight exception to this rule.
     * @see M2tsSegmentationStyle
     */

    public String getSegmentationStyle() {
        return this.segmentationStyle;
    }

    /**
     * The segmentation style parameter controls how segmentation markers are inserted into the transport stream. With
     * avails, it is possible that segments may be truncated, which can influence where future segmentation markers are
     * inserted.
     * 
     * When a segmentation style of "resetCadence" is selected and a segment is truncated due to an avail, we will reset
     * the segmentation cadence. This means the subsequent segment will have a duration of $segmentationTime seconds.
     * 
     * When a segmentation style of "maintainCadence" is selected and a segment is truncated due to an avail, we will
     * not reset the segmentation cadence. This means the subsequent segment will likely be truncated as well. However,
     * all segments after that will have a duration of $segmentationTime seconds. Note that EBP lookahead is a slight
     * exception to this rule.
     * 
     * @param segmentationStyle
     *        The segmentation style parameter controls how segmentation markers are inserted into the transport stream.
     *        With avails, it is possible that segments may be truncated, which can influence where future segmentation
     *        markers are inserted.
     * 
     *        When a segmentation style of "resetCadence" is selected and a segment is truncated due to an avail, we
     *        will reset the segmentation cadence. This means the subsequent segment will have a duration of
     *        $segmentationTime seconds.
     * 
     *        When a segmentation style of "maintainCadence" is selected and a segment is truncated due to an avail, we
     *        will not reset the segmentation cadence. This means the subsequent segment will likely be truncated as
     *        well. However, all segments after that will have a duration of $segmentationTime seconds. Note that EBP
     *        lookahead is a slight exception to this rule.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsSegmentationStyle
     */

    public M2tsSettings withSegmentationStyle(String segmentationStyle) {
        setSegmentationStyle(segmentationStyle);
        return this;
    }

    /**
     * The segmentation style parameter controls how segmentation markers are inserted into the transport stream. With
     * avails, it is possible that segments may be truncated, which can influence where future segmentation markers are
     * inserted.
     * 
     * When a segmentation style of "resetCadence" is selected and a segment is truncated due to an avail, we will reset
     * the segmentation cadence. This means the subsequent segment will have a duration of $segmentationTime seconds.
     * 
     * When a segmentation style of "maintainCadence" is selected and a segment is truncated due to an avail, we will
     * not reset the segmentation cadence. This means the subsequent segment will likely be truncated as well. However,
     * all segments after that will have a duration of $segmentationTime seconds. Note that EBP lookahead is a slight
     * exception to this rule.
     * 
     * @param segmentationStyle
     *        The segmentation style parameter controls how segmentation markers are inserted into the transport stream.
     *        With avails, it is possible that segments may be truncated, which can influence where future segmentation
     *        markers are inserted.
     * 
     *        When a segmentation style of "resetCadence" is selected and a segment is truncated due to an avail, we
     *        will reset the segmentation cadence. This means the subsequent segment will have a duration of
     *        $segmentationTime seconds.
     * 
     *        When a segmentation style of "maintainCadence" is selected and a segment is truncated due to an avail, we
     *        will not reset the segmentation cadence. This means the subsequent segment will likely be truncated as
     *        well. However, all segments after that will have a duration of $segmentationTime seconds. Note that EBP
     *        lookahead is a slight exception to this rule.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsSegmentationStyle
     */

    public M2tsSettings withSegmentationStyle(M2tsSegmentationStyle segmentationStyle) {
        this.segmentationStyle = segmentationStyle.toString();
        return this;
    }

    /**
     * The length in seconds of each segment. Required unless markers is set to _none_.
     * 
     * @param segmentationTime
     *        The length in seconds of each segment. Required unless markers is set to _none_.
     */

    public void setSegmentationTime(Double segmentationTime) {
        this.segmentationTime = segmentationTime;
    }

    /**
     * The length in seconds of each segment. Required unless markers is set to _none_.
     * 
     * @return The length in seconds of each segment. Required unless markers is set to _none_.
     */

    public Double getSegmentationTime() {
        return this.segmentationTime;
    }

    /**
     * The length in seconds of each segment. Required unless markers is set to _none_.
     * 
     * @param segmentationTime
     *        The length in seconds of each segment. Required unless markers is set to _none_.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withSegmentationTime(Double segmentationTime) {
        setSegmentationTime(segmentationTime);
        return this;
    }

    /**
     * When set to passthrough, timed metadata will be passed through from input to output.
     * 
     * @param timedMetadataBehavior
     *        When set to passthrough, timed metadata will be passed through from input to output.
     * @see M2tsTimedMetadataBehavior
     */

    public void setTimedMetadataBehavior(String timedMetadataBehavior) {
        this.timedMetadataBehavior = timedMetadataBehavior;
    }

    /**
     * When set to passthrough, timed metadata will be passed through from input to output.
     * 
     * @return When set to passthrough, timed metadata will be passed through from input to output.
     * @see M2tsTimedMetadataBehavior
     */

    public String getTimedMetadataBehavior() {
        return this.timedMetadataBehavior;
    }

    /**
     * When set to passthrough, timed metadata will be passed through from input to output.
     * 
     * @param timedMetadataBehavior
     *        When set to passthrough, timed metadata will be passed through from input to output.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsTimedMetadataBehavior
     */

    public M2tsSettings withTimedMetadataBehavior(String timedMetadataBehavior) {
        setTimedMetadataBehavior(timedMetadataBehavior);
        return this;
    }

    /**
     * When set to passthrough, timed metadata will be passed through from input to output.
     * 
     * @param timedMetadataBehavior
     *        When set to passthrough, timed metadata will be passed through from input to output.
     * @return Returns a reference to this object so that method calls can be chained together.
     * @see M2tsTimedMetadataBehavior
     */

    public M2tsSettings withTimedMetadataBehavior(M2tsTimedMetadataBehavior timedMetadataBehavior) {
        this.timedMetadataBehavior = timedMetadataBehavior.toString();
        return this;
    }

    /**
     * Packet Identifier (PID) of the timed metadata stream in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param timedMetadataPid
     *        Packet Identifier (PID) of the timed metadata stream in the transport stream. Can be entered as a decimal
     *        or hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setTimedMetadataPid(String timedMetadataPid) {
        this.timedMetadataPid = timedMetadataPid;
    }

    /**
     * Packet Identifier (PID) of the timed metadata stream in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) of the timed metadata stream in the transport stream. Can be entered as a decimal
     *         or hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getTimedMetadataPid() {
        return this.timedMetadataPid;
    }

    /**
     * Packet Identifier (PID) of the timed metadata stream in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param timedMetadataPid
     *        Packet Identifier (PID) of the timed metadata stream in the transport stream. Can be entered as a decimal
     *        or hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withTimedMetadataPid(String timedMetadataPid) {
        setTimedMetadataPid(timedMetadataPid);
        return this;
    }

    /**
     * The value of the transport stream ID field in the Program Map Table.
     * 
     * @param transportStreamId
     *        The value of the transport stream ID field in the Program Map Table.
     */

    public void setTransportStreamId(Integer transportStreamId) {
        this.transportStreamId = transportStreamId;
    }

    /**
     * The value of the transport stream ID field in the Program Map Table.
     * 
     * @return The value of the transport stream ID field in the Program Map Table.
     */

    public Integer getTransportStreamId() {
        return this.transportStreamId;
    }

    /**
     * The value of the transport stream ID field in the Program Map Table.
     * 
     * @param transportStreamId
     *        The value of the transport stream ID field in the Program Map Table.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withTransportStreamId(Integer transportStreamId) {
        setTransportStreamId(transportStreamId);
        return this;
    }

    /**
     * Packet Identifier (PID) of the elementary video stream in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param videoPid
     *        Packet Identifier (PID) of the elementary video stream in the transport stream. Can be entered as a
     *        decimal or hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public void setVideoPid(String videoPid) {
        this.videoPid = videoPid;
    }

    /**
     * Packet Identifier (PID) of the elementary video stream in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @return Packet Identifier (PID) of the elementary video stream in the transport stream. Can be entered as a
     *         decimal or hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     */

    public String getVideoPid() {
        return this.videoPid;
    }

    /**
     * Packet Identifier (PID) of the elementary video stream in the transport stream. Can be entered as a decimal or
     * hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * 
     * @param videoPid
     *        Packet Identifier (PID) of the elementary video stream in the transport stream. Can be entered as a
     *        decimal or hexadecimal value. Valid values are 32 (or 0x20)..8182 (or 0x1ff6).
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withVideoPid(String videoPid) {
        setVideoPid(videoPid);
        return this;
    }

    /**
     * Defines the amount SCTE-35 preroll will be increased (in milliseconds) on the output. Preroll is the amount of
     * time between the presence of a SCTE-35 indication in a transport stream and the PTS of the video frame it
     * references. Zero means don't add pullup (it doesn't mean set the preroll to zero). Negative pullup is not
     * supported, which means that you can't make the preroll shorter. Be aware that latency in the output will increase
     * by the pullup amount.
     * 
     * @param scte35PrerollPullupMilliseconds
     *        Defines the amount SCTE-35 preroll will be increased (in milliseconds) on the output. Preroll is the
     *        amount of time between the presence of a SCTE-35 indication in a transport stream and the PTS of the video
     *        frame it references. Zero means don't add pullup (it doesn't mean set the preroll to zero). Negative
     *        pullup is not supported, which means that you can't make the preroll shorter. Be aware that latency in the
     *        output will increase by the pullup amount.
     */

    public void setScte35PrerollPullupMilliseconds(Double scte35PrerollPullupMilliseconds) {
        this.scte35PrerollPullupMilliseconds = scte35PrerollPullupMilliseconds;
    }

    /**
     * Defines the amount SCTE-35 preroll will be increased (in milliseconds) on the output. Preroll is the amount of
     * time between the presence of a SCTE-35 indication in a transport stream and the PTS of the video frame it
     * references. Zero means don't add pullup (it doesn't mean set the preroll to zero). Negative pullup is not
     * supported, which means that you can't make the preroll shorter. Be aware that latency in the output will increase
     * by the pullup amount.
     * 
     * @return Defines the amount SCTE-35 preroll will be increased (in milliseconds) on the output. Preroll is the
     *         amount of time between the presence of a SCTE-35 indication in a transport stream and the PTS of the
     *         video frame it references. Zero means don't add pullup (it doesn't mean set the preroll to zero).
     *         Negative pullup is not supported, which means that you can't make the preroll shorter. Be aware that
     *         latency in the output will increase by the pullup amount.
     */

    public Double getScte35PrerollPullupMilliseconds() {
        return this.scte35PrerollPullupMilliseconds;
    }

    /**
     * Defines the amount SCTE-35 preroll will be increased (in milliseconds) on the output. Preroll is the amount of
     * time between the presence of a SCTE-35 indication in a transport stream and the PTS of the video frame it
     * references. Zero means don't add pullup (it doesn't mean set the preroll to zero). Negative pullup is not
     * supported, which means that you can't make the preroll shorter. Be aware that latency in the output will increase
     * by the pullup amount.
     * 
     * @param scte35PrerollPullupMilliseconds
     *        Defines the amount SCTE-35 preroll will be increased (in milliseconds) on the output. Preroll is the
     *        amount of time between the presence of a SCTE-35 indication in a transport stream and the PTS of the video
     *        frame it references. Zero means don't add pullup (it doesn't mean set the preroll to zero). Negative
     *        pullup is not supported, which means that you can't make the preroll shorter. Be aware that latency in the
     *        output will increase by the pullup amount.
     * @return Returns a reference to this object so that method calls can be chained together.
     */

    public M2tsSettings withScte35PrerollPullupMilliseconds(Double scte35PrerollPullupMilliseconds) {
        setScte35PrerollPullupMilliseconds(scte35PrerollPullupMilliseconds);
        return this;
    }

    /**
     * Returns a string representation of this object. This is useful for testing and debugging. Sensitive data will be
     * redacted from this string using a placeholder value.
     *
     * @return A string representation of this object.
     *
     * @see java.lang.Object#toString()
     */
    @Override
    public String toString() {
        StringBuilder sb = new StringBuilder();
        sb.append("{");
        if (getAbsentInputAudioBehavior() != null)
            sb.append("AbsentInputAudioBehavior: ").append(getAbsentInputAudioBehavior()).append(",");
        if (getArib() != null)
            sb.append("Arib: ").append(getArib()).append(",");
        if (getAribCaptionsPid() != null)
            sb.append("AribCaptionsPid: ").append(getAribCaptionsPid()).append(",");
        if (getAribCaptionsPidControl() != null)
            sb.append("AribCaptionsPidControl: ").append(getAribCaptionsPidControl()).append(",");
        if (getAudioBufferModel() != null)
            sb.append("AudioBufferModel: ").append(getAudioBufferModel()).append(",");
        if (getAudioFramesPerPes() != null)
            sb.append("AudioFramesPerPes: ").append(getAudioFramesPerPes()).append(",");
        if (getAudioPids() != null)
            sb.append("AudioPids: ").append(getAudioPids()).append(",");
        if (getAudioStreamType() != null)
            sb.append("AudioStreamType: ").append(getAudioStreamType()).append(",");
        if (getBitrate() != null)
            sb.append("Bitrate: ").append(getBitrate()).append(",");
        if (getBufferModel() != null)
            sb.append("BufferModel: ").append(getBufferModel()).append(",");
        if (getCcDescriptor() != null)
            sb.append("CcDescriptor: ").append(getCcDescriptor()).append(",");
        if (getDvbNitSettings() != null)
            sb.append("DvbNitSettings: ").append(getDvbNitSettings()).append(",");
        if (getDvbSdtSettings() != null)
            sb.append("DvbSdtSettings: ").append(getDvbSdtSettings()).append(",");
        if (getDvbSubPids() != null)
            sb.append("DvbSubPids: ").append(getDvbSubPids()).append(",");
        if (getDvbTdtSettings() != null)
            sb.append("DvbTdtSettings: ").append(getDvbTdtSettings()).append(",");
        if (getDvbTeletextPid() != null)
            sb.append("DvbTeletextPid: ").append(getDvbTeletextPid()).append(",");
        if (getEbif() != null)
            sb.append("Ebif: ").append(getEbif()).append(",");
        if (getEbpAudioInterval() != null)
            sb.append("EbpAudioInterval: ").append(getEbpAudioInterval()).append(",");
        if (getEbpLookaheadMs() != null)
            sb.append("EbpLookaheadMs: ").append(getEbpLookaheadMs()).append(",");
        if (getEbpPlacement() != null)
            sb.append("EbpPlacement: ").append(getEbpPlacement()).append(",");
        if (getEcmPid() != null)
            sb.append("EcmPid: ").append(getEcmPid()).append(",");
        if (getEsRateInPes() != null)
            sb.append("EsRateInPes: ").append(getEsRateInPes()).append(",");
        if (getEtvPlatformPid() != null)
            sb.append("EtvPlatformPid: ").append(getEtvPlatformPid()).append(",");
        if (getEtvSignalPid() != null)
            sb.append("EtvSignalPid: ").append(getEtvSignalPid()).append(",");
        if (getFragmentTime() != null)
            sb.append("FragmentTime: ").append(getFragmentTime()).append(",");
        if (getKlv() != null)
            sb.append("Klv: ").append(getKlv()).append(",");
        if (getKlvDataPids() != null)
            sb.append("KlvDataPids: ").append(getKlvDataPids()).append(",");
        if (getNielsenId3Behavior() != null)
            sb.append("NielsenId3Behavior: ").append(getNielsenId3Behavior()).append(",");
        if (getNullPacketBitrate() != null)
            sb.append("NullPacketBitrate: ").append(getNullPacketBitrate()).append(",");
        if (getPatInterval() != null)
            sb.append("PatInterval: ").append(getPatInterval()).append(",");
        if (getPcrControl() != null)
            sb.append("PcrControl: ").append(getPcrControl()).append(",");
        if (getPcrPeriod() != null)
            sb.append("PcrPeriod: ").append(getPcrPeriod()).append(",");
        if (getPcrPid() != null)
            sb.append("PcrPid: ").append(getPcrPid()).append(",");
        if (getPmtInterval() != null)
            sb.append("PmtInterval: ").append(getPmtInterval()).append(",");
        if (getPmtPid() != null)
            sb.append("PmtPid: ").append(getPmtPid()).append(",");
        if (getProgramNum() != null)
            sb.append("ProgramNum: ").append(getProgramNum()).append(",");
        if (getRateMode() != null)
            sb.append("RateMode: ").append(getRateMode()).append(",");
        if (getScte27Pids() != null)
            sb.append("Scte27Pids: ").append(getScte27Pids()).append(",");
        if (getScte35Control() != null)
            sb.append("Scte35Control: ").append(getScte35Control()).append(",");
        if (getScte35Pid() != null)
            sb.append("Scte35Pid: ").append(getScte35Pid()).append(",");
        if (getSegmentationMarkers() != null)
            sb.append("SegmentationMarkers: ").append(getSegmentationMarkers()).append(",");
        if (getSegmentationStyle() != null)
            sb.append("SegmentationStyle: ").append(getSegmentationStyle()).append(",");
        if (getSegmentationTime() != null)
            sb.append("SegmentationTime: ").append(getSegmentationTime()).append(",");
        if (getTimedMetadataBehavior() != null)
            sb.append("TimedMetadataBehavior: ").append(getTimedMetadataBehavior()).append(",");
        if (getTimedMetadataPid() != null)
            sb.append("TimedMetadataPid: ").append(getTimedMetadataPid()).append(",");
        if (getTransportStreamId() != null)
            sb.append("TransportStreamId: ").append(getTransportStreamId()).append(",");
        if (getVideoPid() != null)
            sb.append("VideoPid: ").append(getVideoPid()).append(",");
        if (getScte35PrerollPullupMilliseconds() != null)
            sb.append("Scte35PrerollPullupMilliseconds: ").append(getScte35PrerollPullupMilliseconds());
        sb.append("}");
        return sb.toString();
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;

        if (obj instanceof M2tsSettings == false)
            return false;
        M2tsSettings other = (M2tsSettings) obj;
        if (other.getAbsentInputAudioBehavior() == null ^ this.getAbsentInputAudioBehavior() == null)
            return false;
        if (other.getAbsentInputAudioBehavior() != null && other.getAbsentInputAudioBehavior().equals(this.getAbsentInputAudioBehavior()) == false)
            return false;
        if (other.getArib() == null ^ this.getArib() == null)
            return false;
        if (other.getArib() != null && other.getArib().equals(this.getArib()) == false)
            return false;
        if (other.getAribCaptionsPid() == null ^ this.getAribCaptionsPid() == null)
            return false;
        if (other.getAribCaptionsPid() != null && other.getAribCaptionsPid().equals(this.getAribCaptionsPid()) == false)
            return false;
        if (other.getAribCaptionsPidControl() == null ^ this.getAribCaptionsPidControl() == null)
            return false;
        if (other.getAribCaptionsPidControl() != null && other.getAribCaptionsPidControl().equals(this.getAribCaptionsPidControl()) == false)
            return false;
        if (other.getAudioBufferModel() == null ^ this.getAudioBufferModel() == null)
            return false;
        if (other.getAudioBufferModel() != null && other.getAudioBufferModel().equals(this.getAudioBufferModel()) == false)
            return false;
        if (other.getAudioFramesPerPes() == null ^ this.getAudioFramesPerPes() == null)
            return false;
        if (other.getAudioFramesPerPes() != null && other.getAudioFramesPerPes().equals(this.getAudioFramesPerPes()) == false)
            return false;
        if (other.getAudioPids() == null ^ this.getAudioPids() == null)
            return false;
        if (other.getAudioPids() != null && other.getAudioPids().equals(this.getAudioPids()) == false)
            return false;
        if (other.getAudioStreamType() == null ^ this.getAudioStreamType() == null)
            return false;
        if (other.getAudioStreamType() != null && other.getAudioStreamType().equals(this.getAudioStreamType()) == false)
            return false;
        if (other.getBitrate() == null ^ this.getBitrate() == null)
            return false;
        if (other.getBitrate() != null && other.getBitrate().equals(this.getBitrate()) == false)
            return false;
        if (other.getBufferModel() == null ^ this.getBufferModel() == null)
            return false;
        if (other.getBufferModel() != null && other.getBufferModel().equals(this.getBufferModel()) == false)
            return false;
        if (other.getCcDescriptor() == null ^ this.getCcDescriptor() == null)
            return false;
        if (other.getCcDescriptor() != null && other.getCcDescriptor().equals(this.getCcDescriptor()) == false)
            return false;
        if (other.getDvbNitSettings() == null ^ this.getDvbNitSettings() == null)
            return false;
        if (other.getDvbNitSettings() != null && other.getDvbNitSettings().equals(this.getDvbNitSettings()) == false)
            return false;
        if (other.getDvbSdtSettings() == null ^ this.getDvbSdtSettings() == null)
            return false;
        if (other.getDvbSdtSettings() != null && other.getDvbSdtSettings().equals(this.getDvbSdtSettings()) == false)
            return false;
        if (other.getDvbSubPids() == null ^ this.getDvbSubPids() == null)
            return false;
        if (other.getDvbSubPids() != null && other.getDvbSubPids().equals(this.getDvbSubPids()) == false)
            return false;
        if (other.getDvbTdtSettings() == null ^ this.getDvbTdtSettings() == null)
            return false;
        if (other.getDvbTdtSettings() != null && other.getDvbTdtSettings().equals(this.getDvbTdtSettings()) == false)
            return false;
        if (other.getDvbTeletextPid() == null ^ this.getDvbTeletextPid() == null)
            return false;
        if (other.getDvbTeletextPid() != null && other.getDvbTeletextPid().equals(this.getDvbTeletextPid()) == false)
            return false;
        if (other.getEbif() == null ^ this.getEbif() == null)
            return false;
        if (other.getEbif() != null && other.getEbif().equals(this.getEbif()) == false)
            return false;
        if (other.getEbpAudioInterval() == null ^ this.getEbpAudioInterval() == null)
            return false;
        if (other.getEbpAudioInterval() != null && other.getEbpAudioInterval().equals(this.getEbpAudioInterval()) == false)
            return false;
        if (other.getEbpLookaheadMs() == null ^ this.getEbpLookaheadMs() == null)
            return false;
        if (other.getEbpLookaheadMs() != null && other.getEbpLookaheadMs().equals(this.getEbpLookaheadMs()) == false)
            return false;
        if (other.getEbpPlacement() == null ^ this.getEbpPlacement() == null)
            return false;
        if (other.getEbpPlacement() != null && other.getEbpPlacement().equals(this.getEbpPlacement()) == false)
            return false;
        if (other.getEcmPid() == null ^ this.getEcmPid() == null)
            return false;
        if (other.getEcmPid() != null && other.getEcmPid().equals(this.getEcmPid()) == false)
            return false;
        if (other.getEsRateInPes() == null ^ this.getEsRateInPes() == null)
            return false;
        if (other.getEsRateInPes() != null && other.getEsRateInPes().equals(this.getEsRateInPes()) == false)
            return false;
        if (other.getEtvPlatformPid() == null ^ this.getEtvPlatformPid() == null)
            return false;
        if (other.getEtvPlatformPid() != null && other.getEtvPlatformPid().equals(this.getEtvPlatformPid()) == false)
            return false;
        if (other.getEtvSignalPid() == null ^ this.getEtvSignalPid() == null)
            return false;
        if (other.getEtvSignalPid() != null && other.getEtvSignalPid().equals(this.getEtvSignalPid()) == false)
            return false;
        if (other.getFragmentTime() == null ^ this.getFragmentTime() == null)
            return false;
        if (other.getFragmentTime() != null && other.getFragmentTime().equals(this.getFragmentTime()) == false)
            return false;
        if (other.getKlv() == null ^ this.getKlv() == null)
            return false;
        if (other.getKlv() != null && other.getKlv().equals(this.getKlv()) == false)
            return false;
        if (other.getKlvDataPids() == null ^ this.getKlvDataPids() == null)
            return false;
        if (other.getKlvDataPids() != null && other.getKlvDataPids().equals(this.getKlvDataPids()) == false)
            return false;
        if (other.getNielsenId3Behavior() == null ^ this.getNielsenId3Behavior() == null)
            return false;
        if (other.getNielsenId3Behavior() != null && other.getNielsenId3Behavior().equals(this.getNielsenId3Behavior()) == false)
            return false;
        if (other.getNullPacketBitrate() == null ^ this.getNullPacketBitrate() == null)
            return false;
        if (other.getNullPacketBitrate() != null && other.getNullPacketBitrate().equals(this.getNullPacketBitrate()) == false)
            return false;
        if (other.getPatInterval() == null ^ this.getPatInterval() == null)
            return false;
        if (other.getPatInterval() != null && other.getPatInterval().equals(this.getPatInterval()) == false)
            return false;
        if (other.getPcrControl() == null ^ this.getPcrControl() == null)
            return false;
        if (other.getPcrControl() != null && other.getPcrControl().equals(this.getPcrControl()) == false)
            return false;
        if (other.getPcrPeriod() == null ^ this.getPcrPeriod() == null)
            return false;
        if (other.getPcrPeriod() != null && other.getPcrPeriod().equals(this.getPcrPeriod()) == false)
            return false;
        if (other.getPcrPid() == null ^ this.getPcrPid() == null)
            return false;
        if (other.getPcrPid() != null && other.getPcrPid().equals(this.getPcrPid()) == false)
            return false;
        if (other.getPmtInterval() == null ^ this.getPmtInterval() == null)
            return false;
        if (other.getPmtInterval() != null && other.getPmtInterval().equals(this.getPmtInterval()) == false)
            return false;
        if (other.getPmtPid() == null ^ this.getPmtPid() == null)
            return false;
        if (other.getPmtPid() != null && other.getPmtPid().equals(this.getPmtPid()) == false)
            return false;
        if (other.getProgramNum() == null ^ this.getProgramNum() == null)
            return false;
        if (other.getProgramNum() != null && other.getProgramNum().equals(this.getProgramNum()) == false)
            return false;
        if (other.getRateMode() == null ^ this.getRateMode() == null)
            return false;
        if (other.getRateMode() != null && other.getRateMode().equals(this.getRateMode()) == false)
            return false;
        if (other.getScte27Pids() == null ^ this.getScte27Pids() == null)
            return false;
        if (other.getScte27Pids() != null && other.getScte27Pids().equals(this.getScte27Pids()) == false)
            return false;
        if (other.getScte35Control() == null ^ this.getScte35Control() == null)
            return false;
        if (other.getScte35Control() != null && other.getScte35Control().equals(this.getScte35Control()) == false)
            return false;
        if (other.getScte35Pid() == null ^ this.getScte35Pid() == null)
            return false;
        if (other.getScte35Pid() != null && other.getScte35Pid().equals(this.getScte35Pid()) == false)
            return false;
        if (other.getSegmentationMarkers() == null ^ this.getSegmentationMarkers() == null)
            return false;
        if (other.getSegmentationMarkers() != null && other.getSegmentationMarkers().equals(this.getSegmentationMarkers()) == false)
            return false;
        if (other.getSegmentationStyle() == null ^ this.getSegmentationStyle() == null)
            return false;
        if (other.getSegmentationStyle() != null && other.getSegmentationStyle().equals(this.getSegmentationStyle()) == false)
            return false;
        if (other.getSegmentationTime() == null ^ this.getSegmentationTime() == null)
            return false;
        if (other.getSegmentationTime() != null && other.getSegmentationTime().equals(this.getSegmentationTime()) == false)
            return false;
        if (other.getTimedMetadataBehavior() == null ^ this.getTimedMetadataBehavior() == null)
            return false;
        if (other.getTimedMetadataBehavior() != null && other.getTimedMetadataBehavior().equals(this.getTimedMetadataBehavior()) == false)
            return false;
        if (other.getTimedMetadataPid() == null ^ this.getTimedMetadataPid() == null)
            return false;
        if (other.getTimedMetadataPid() != null && other.getTimedMetadataPid().equals(this.getTimedMetadataPid()) == false)
            return false;
        if (other.getTransportStreamId() == null ^ this.getTransportStreamId() == null)
            return false;
        if (other.getTransportStreamId() != null && other.getTransportStreamId().equals(this.getTransportStreamId()) == false)
            return false;
        if (other.getVideoPid() == null ^ this.getVideoPid() == null)
            return false;
        if (other.getVideoPid() != null && other.getVideoPid().equals(this.getVideoPid()) == false)
            return false;
        if (other.getScte35PrerollPullupMilliseconds() == null ^ this.getScte35PrerollPullupMilliseconds() == null)
            return false;
        if (other.getScte35PrerollPullupMilliseconds() != null
                && other.getScte35PrerollPullupMilliseconds().equals(this.getScte35PrerollPullupMilliseconds()) == false)
            return false;
        return true;
    }

    @Override
    public int hashCode() {
        final int prime = 31;
        int hashCode = 1;

        hashCode = prime * hashCode + ((getAbsentInputAudioBehavior() == null) ? 0 : getAbsentInputAudioBehavior().hashCode());
        hashCode = prime * hashCode + ((getArib() == null) ? 0 : getArib().hashCode());
        hashCode = prime * hashCode + ((getAribCaptionsPid() == null) ? 0 : getAribCaptionsPid().hashCode());
        hashCode = prime * hashCode + ((getAribCaptionsPidControl() == null) ? 0 : getAribCaptionsPidControl().hashCode());
        hashCode = prime * hashCode + ((getAudioBufferModel() == null) ? 0 : getAudioBufferModel().hashCode());
        hashCode = prime * hashCode + ((getAudioFramesPerPes() == null) ? 0 : getAudioFramesPerPes().hashCode());
        hashCode = prime * hashCode + ((getAudioPids() == null) ? 0 : getAudioPids().hashCode());
        hashCode = prime * hashCode + ((getAudioStreamType() == null) ? 0 : getAudioStreamType().hashCode());
        hashCode = prime * hashCode + ((getBitrate() == null) ? 0 : getBitrate().hashCode());
        hashCode = prime * hashCode + ((getBufferModel() == null) ? 0 : getBufferModel().hashCode());
        hashCode = prime * hashCode + ((getCcDescriptor() == null) ? 0 : getCcDescriptor().hashCode());
        hashCode = prime * hashCode + ((getDvbNitSettings() == null) ? 0 : getDvbNitSettings().hashCode());
        hashCode = prime * hashCode + ((getDvbSdtSettings() == null) ? 0 : getDvbSdtSettings().hashCode());
        hashCode = prime * hashCode + ((getDvbSubPids() == null) ? 0 : getDvbSubPids().hashCode());
        hashCode = prime * hashCode + ((getDvbTdtSettings() == null) ? 0 : getDvbTdtSettings().hashCode());
        hashCode = prime * hashCode + ((getDvbTeletextPid() == null) ? 0 : getDvbTeletextPid().hashCode());
        hashCode = prime * hashCode + ((getEbif() == null) ? 0 : getEbif().hashCode());
        hashCode = prime * hashCode + ((getEbpAudioInterval() == null) ? 0 : getEbpAudioInterval().hashCode());
        hashCode = prime * hashCode + ((getEbpLookaheadMs() == null) ? 0 : getEbpLookaheadMs().hashCode());
        hashCode = prime * hashCode + ((getEbpPlacement() == null) ? 0 : getEbpPlacement().hashCode());
        hashCode = prime * hashCode + ((getEcmPid() == null) ? 0 : getEcmPid().hashCode());
        hashCode = prime * hashCode + ((getEsRateInPes() == null) ? 0 : getEsRateInPes().hashCode());
        hashCode = prime * hashCode + ((getEtvPlatformPid() == null) ? 0 : getEtvPlatformPid().hashCode());
        hashCode = prime * hashCode + ((getEtvSignalPid() == null) ? 0 : getEtvSignalPid().hashCode());
        hashCode = prime * hashCode + ((getFragmentTime() == null) ? 0 : getFragmentTime().hashCode());
        hashCode = prime * hashCode + ((getKlv() == null) ? 0 : getKlv().hashCode());
        hashCode = prime * hashCode + ((getKlvDataPids() == null) ? 0 : getKlvDataPids().hashCode());
        hashCode = prime * hashCode + ((getNielsenId3Behavior() == null) ? 0 : getNielsenId3Behavior().hashCode());
        hashCode = prime * hashCode + ((getNullPacketBitrate() == null) ? 0 : getNullPacketBitrate().hashCode());
        hashCode = prime * hashCode + ((getPatInterval() == null) ? 0 : getPatInterval().hashCode());
        hashCode = prime * hashCode + ((getPcrControl() == null) ? 0 : getPcrControl().hashCode());
        hashCode = prime * hashCode + ((getPcrPeriod() == null) ? 0 : getPcrPeriod().hashCode());
        hashCode = prime * hashCode + ((getPcrPid() == null) ? 0 : getPcrPid().hashCode());
        hashCode = prime * hashCode + ((getPmtInterval() == null) ? 0 : getPmtInterval().hashCode());
        hashCode = prime * hashCode + ((getPmtPid() == null) ? 0 : getPmtPid().hashCode());
        hashCode = prime * hashCode + ((getProgramNum() == null) ? 0 : getProgramNum().hashCode());
        hashCode = prime * hashCode + ((getRateMode() == null) ? 0 : getRateMode().hashCode());
        hashCode = prime * hashCode + ((getScte27Pids() == null) ? 0 : getScte27Pids().hashCode());
        hashCode = prime * hashCode + ((getScte35Control() == null) ? 0 : getScte35Control().hashCode());
        hashCode = prime * hashCode + ((getScte35Pid() == null) ? 0 : getScte35Pid().hashCode());
        hashCode = prime * hashCode + ((getSegmentationMarkers() == null) ? 0 : getSegmentationMarkers().hashCode());
        hashCode = prime * hashCode + ((getSegmentationStyle() == null) ? 0 : getSegmentationStyle().hashCode());
        hashCode = prime * hashCode + ((getSegmentationTime() == null) ? 0 : getSegmentationTime().hashCode());
        hashCode = prime * hashCode + ((getTimedMetadataBehavior() == null) ? 0 : getTimedMetadataBehavior().hashCode());
        hashCode = prime * hashCode + ((getTimedMetadataPid() == null) ? 0 : getTimedMetadataPid().hashCode());
        hashCode = prime * hashCode + ((getTransportStreamId() == null) ? 0 : getTransportStreamId().hashCode());
        hashCode = prime * hashCode + ((getVideoPid() == null) ? 0 : getVideoPid().hashCode());
        hashCode = prime * hashCode + ((getScte35PrerollPullupMilliseconds() == null) ? 0 : getScte35PrerollPullupMilliseconds().hashCode());
        return hashCode;
    }

    @Override
    public M2tsSettings clone() {
        try {
            return (M2tsSettings) super.clone();
        } catch (CloneNotSupportedException e) {
            throw new IllegalStateException("Got a CloneNotSupportedException from Object.clone() " + "even though we're Cloneable!", e);
        }
    }

    @com.amazonaws.annotation.SdkInternalApi
    @Override
    public void marshall(ProtocolMarshaller protocolMarshaller) {
        com.amazonaws.services.medialive.model.transform.M2tsSettingsMarshaller.getInstance().marshall(this, protocolMarshaller);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy