# coding: utf-8

"""
    Vidispine API

    No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)  # noqa: E501

    The version of the OpenAPI document: 5.x
    Contact: info@vidispine.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six
from . import *

class TranscodePresetType(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    openapi_types = {
        'video': 'VideoTranscodePresetType',
        'max_chunk_duration': 'TimeCodeType',
        'sequence_output': 'TranscodePresetTypeSequenceOutput',
        'script': 'str',
        'preferred_source_tag': 'str',
        'poster_background': 'str',
        'shape_metadata': 'list[KeyValuePairType]',
        'start_timecode': 'str',
        'poster_resolution': 'ResolutionType',
        'metadata': 'SimpleMetadataType',
        'description': 'str',
        'format': 'str',
        'face_detect': 'bool',
        'audio_track': 'list[AudioTrackTranscodePresetType]',
        'fast_start_setting': 'FastStartSettingType',
        'add_clip_name': 'bool',
        'thumbnail_background': 'str',
        'text_overlay': 'list[TextOverlayType]',
        'name': 'str',
        'thumbnail_period': 'TimeCodeType',
        'overlay': 'list[OverlayType]',
        'mediaconvert': 'TranscodePresetTypeMediaconvert',
        'thumbnail_resolution': 'ResolutionType',
        'demuxer_setting': 'list[KeyValuePairType]',
        'thumbnail_plugin': 'str',
        'audio': 'AudioTranscodePresetType',
        'muxer_setting': 'list[KeyValuePairType]',
        'preserve_edl': 'bool'
    }

    attribute_map = {
        'video': 'video',
        'max_chunk_duration': 'maxChunkDuration',
        'sequence_output': 'sequenceOutput',
        'script': 'script',
        'preferred_source_tag': 'preferredSourceTag',
        'poster_background': 'posterBackground',
        'shape_metadata': 'shapeMetadata',
        'start_timecode': 'startTimecode',
        'poster_resolution': 'posterResolution',
        'metadata': 'metadata',
        'description': 'description',
        'format': 'format',
        'face_detect': 'faceDetect',
        'audio_track': 'audioTrack',
        'fast_start_setting': 'fastStartSetting',
        'add_clip_name': 'addClipName',
        'thumbnail_background': 'thumbnailBackground',
        'text_overlay': 'textOverlay',
        'name': 'name',
        'thumbnail_period': 'thumbnailPeriod',
        'overlay': 'overlay',
        'mediaconvert': 'mediaconvert',
        'thumbnail_resolution': 'thumbnailResolution',
        'demuxer_setting': 'demuxerSetting',
        'thumbnail_plugin': 'thumbnailPlugin',
        'audio': 'audio',
        'muxer_setting': 'muxerSetting',
        'preserve_edl': 'preserveEDL'
    }

    def __init__(self, video=None, max_chunk_duration=None, sequence_output=None, script=None, preferred_source_tag=None, poster_background=None, shape_metadata=None, start_timecode=None, poster_resolution=None, metadata=None, description=None, format=None, face_detect=None, audio_track=None, fast_start_setting=None, add_clip_name=None, thumbnail_background=None, text_overlay=None, name=None, thumbnail_period=None, overlay=None, mediaconvert=None, thumbnail_resolution=None, demuxer_setting=None, thumbnail_plugin=None, audio=None, muxer_setting=None, preserve_edl=None):  # noqa: E501
        """TranscodePresetType - a model defined in OpenAPI"""  # noqa: E501

        self._video = None
        self._max_chunk_duration = None
        self._sequence_output = None
        self._script = None
        self._preferred_source_tag = None
        self._poster_background = None
        self._shape_metadata = None
        self._start_timecode = None
        self._poster_resolution = None
        self._metadata = None
        self._description = None
        self._format = None
        self._face_detect = None
        self._audio_track = None
        self._fast_start_setting = None
        self._add_clip_name = None
        self._thumbnail_background = None
        self._text_overlay = None
        self._name = None
        self._thumbnail_period = None
        self._overlay = None
        self._mediaconvert = None
        self._thumbnail_resolution = None
        self._demuxer_setting = None
        self._thumbnail_plugin = None
        self._audio = None
        self._muxer_setting = None
        self._preserve_edl = None
        self.discriminator = None

        if video is not None:
            self.video = video
        if max_chunk_duration is not None:
            self.max_chunk_duration = max_chunk_duration
        if sequence_output is not None:
            self.sequence_output = sequence_output
        if script is not None:
            self.script = script
        if preferred_source_tag is not None:
            self.preferred_source_tag = preferred_source_tag
        if poster_background is not None:
            self.poster_background = poster_background
        if shape_metadata is not None:
            self.shape_metadata = shape_metadata
        if start_timecode is not None:
            self.start_timecode = start_timecode
        if poster_resolution is not None:
            self.poster_resolution = poster_resolution
        if metadata is not None:
            self.metadata = metadata
        if description is not None:
            self.description = description
        if format is not None:
            self.format = format
        if face_detect is not None:
            self.face_detect = face_detect
        if audio_track is not None:
            self.audio_track = audio_track
        if fast_start_setting is not None:
            self.fast_start_setting = fast_start_setting
        if add_clip_name is not None:
            self.add_clip_name = add_clip_name
        if thumbnail_background is not None:
            self.thumbnail_background = thumbnail_background
        if text_overlay is not None:
            self.text_overlay = text_overlay
        if name is not None:
            self.name = name
        if thumbnail_period is not None:
            self.thumbnail_period = thumbnail_period
        if overlay is not None:
            self.overlay = overlay
        if mediaconvert is not None:
            self.mediaconvert = mediaconvert
        if thumbnail_resolution is not None:
            self.thumbnail_resolution = thumbnail_resolution
        if demuxer_setting is not None:
            self.demuxer_setting = demuxer_setting
        if thumbnail_plugin is not None:
            self.thumbnail_plugin = thumbnail_plugin
        if audio is not None:
            self.audio = audio
        if muxer_setting is not None:
            self.muxer_setting = muxer_setting
        if preserve_edl is not None:
            self.preserve_edl = preserve_edl

    @property
    def video(self):
        """Gets the video of this TranscodePresetType.  # noqa: E501


        :return: The video of this TranscodePresetType.  # noqa: E501
        :rtype: VideoTranscodePresetType
        """
        return self._video

    @video.setter
    def video(self, video):
        """Sets the video of this TranscodePresetType.


        :param video: The video of this TranscodePresetType.  # noqa: E501
        :type: VideoTranscodePresetType
        """

        self._video = video

    @property
    def max_chunk_duration(self):
        """Gets the max_chunk_duration of this TranscodePresetType.  # noqa: E501


        :return: The max_chunk_duration of this TranscodePresetType.  # noqa: E501
        :rtype: TimeCodeType
        """
        return self._max_chunk_duration

    @max_chunk_duration.setter
    def max_chunk_duration(self, max_chunk_duration):
        """Sets the max_chunk_duration of this TranscodePresetType.


        :param max_chunk_duration: The max_chunk_duration of this TranscodePresetType.  # noqa: E501
        :type: TimeCodeType
        """

        self._max_chunk_duration = max_chunk_duration

    @property
    def sequence_output(self):
        """Gets the sequence_output of this TranscodePresetType.  # noqa: E501


        :return: The sequence_output of this TranscodePresetType.  # noqa: E501
        :rtype: TranscodePresetTypeSequenceOutput
        """
        return self._sequence_output

    @sequence_output.setter
    def sequence_output(self, sequence_output):
        """Sets the sequence_output of this TranscodePresetType.


        :param sequence_output: The sequence_output of this TranscodePresetType.  # noqa: E501
        :type: TranscodePresetTypeSequenceOutput
        """

        self._sequence_output = sequence_output

    @property
    def script(self):
        """Gets the script of this TranscodePresetType.  # noqa: E501


        :return: The script of this TranscodePresetType.  # noqa: E501
        :rtype: str
        """
        return self._script

    @script.setter
    def script(self, script):
        """Sets the script of this TranscodePresetType.


        :param script: The script of this TranscodePresetType.  # noqa: E501
        :type: str
        """

        self._script = script

    @property
    def preferred_source_tag(self):
        """Gets the preferred_source_tag of this TranscodePresetType.  # noqa: E501


        :return: The preferred_source_tag of this TranscodePresetType.  # noqa: E501
        :rtype: str
        """
        return self._preferred_source_tag

    @preferred_source_tag.setter
    def preferred_source_tag(self, preferred_source_tag):
        """Sets the preferred_source_tag of this TranscodePresetType.


        :param preferred_source_tag: The preferred_source_tag of this TranscodePresetType.  # noqa: E501
        :type: str
        """

        self._preferred_source_tag = preferred_source_tag

    @property
    def poster_background(self):
        """Gets the poster_background of this TranscodePresetType.  # noqa: E501


        :return: The poster_background of this TranscodePresetType.  # noqa: E501
        :rtype: str
        """
        return self._poster_background

    @poster_background.setter
    def poster_background(self, poster_background):
        """Sets the poster_background of this TranscodePresetType.


        :param poster_background: The poster_background of this TranscodePresetType.  # noqa: E501
        :type: str
        """

        self._poster_background = poster_background

    @property
    def shape_metadata(self):
        """Gets the shape_metadata of this TranscodePresetType.  # noqa: E501


        :return: The shape_metadata of this TranscodePresetType.  # noqa: E501
        :rtype: list[KeyValuePairType]
        """
        return self._shape_metadata

    @shape_metadata.setter
    def shape_metadata(self, shape_metadata):
        """Sets the shape_metadata of this TranscodePresetType.


        :param shape_metadata: The shape_metadata of this TranscodePresetType.  # noqa: E501
        :type: list[KeyValuePairType]
        """

        self._shape_metadata = shape_metadata

    @property
    def start_timecode(self):
        """Gets the start_timecode of this TranscodePresetType.  # noqa: E501


        :return: The start_timecode of this TranscodePresetType.  # noqa: E501
        :rtype: str
        """
        return self._start_timecode

    @start_timecode.setter
    def start_timecode(self, start_timecode):
        """Sets the start_timecode of this TranscodePresetType.


        :param start_timecode: The start_timecode of this TranscodePresetType.  # noqa: E501
        :type: str
        """

        self._start_timecode = start_timecode

    @property
    def poster_resolution(self):
        """Gets the poster_resolution of this TranscodePresetType.  # noqa: E501


        :return: The poster_resolution of this TranscodePresetType.  # noqa: E501
        :rtype: ResolutionType
        """
        return self._poster_resolution

    @poster_resolution.setter
    def poster_resolution(self, poster_resolution):
        """Sets the poster_resolution of this TranscodePresetType.


        :param poster_resolution: The poster_resolution of this TranscodePresetType.  # noqa: E501
        :type: ResolutionType
        """

        self._poster_resolution = poster_resolution

    @property
    def metadata(self):
        """Gets the metadata of this TranscodePresetType.  # noqa: E501


        :return: The metadata of this TranscodePresetType.  # noqa: E501
        :rtype: SimpleMetadataType
        """
        return self._metadata

    @metadata.setter
    def metadata(self, metadata):
        """Sets the metadata of this TranscodePresetType.


        :param metadata: The metadata of this TranscodePresetType.  # noqa: E501
        :type: SimpleMetadataType
        """

        self._metadata = metadata

    @property
    def description(self):
        """Gets the description of this TranscodePresetType.  # noqa: E501


        :return: The description of this TranscodePresetType.  # noqa: E501
        :rtype: str
        """
        return self._description

    @description.setter
    def description(self, description):
        """Sets the description of this TranscodePresetType.


        :param description: The description of this TranscodePresetType.  # noqa: E501
        :type: str
        """

        self._description = description

    @property
    def format(self):
        """Gets the format of this TranscodePresetType.  # noqa: E501


        :return: The format of this TranscodePresetType.  # noqa: E501
        :rtype: str
        """
        return self._format

    @format.setter
    def format(self, format):
        """Sets the format of this TranscodePresetType.


        :param format: The format of this TranscodePresetType.  # noqa: E501
        :type: str
        """

        self._format = format

    @property
    def face_detect(self):
        """Gets the face_detect of this TranscodePresetType.  # noqa: E501


        :return: The face_detect of this TranscodePresetType.  # noqa: E501
        :rtype: bool
        """
        return self._face_detect

    @face_detect.setter
    def face_detect(self, face_detect):
        """Sets the face_detect of this TranscodePresetType.


        :param face_detect: The face_detect of this TranscodePresetType.  # noqa: E501
        :type: bool
        """

        self._face_detect = face_detect

    @property
    def audio_track(self):
        """Gets the audio_track of this TranscodePresetType.  # noqa: E501


        :return: The audio_track of this TranscodePresetType.  # noqa: E501
        :rtype: list[AudioTrackTranscodePresetType]
        """
        return self._audio_track

    @audio_track.setter
    def audio_track(self, audio_track):
        """Sets the audio_track of this TranscodePresetType.


        :param audio_track: The audio_track of this TranscodePresetType.  # noqa: E501
        :type: list[AudioTrackTranscodePresetType]
        """

        self._audio_track = audio_track

    @property
    def fast_start_setting(self):
        """Gets the fast_start_setting of this TranscodePresetType.  # noqa: E501


        :return: The fast_start_setting of this TranscodePresetType.  # noqa: E501
        :rtype: FastStartSettingType
        """
        return self._fast_start_setting

    @fast_start_setting.setter
    def fast_start_setting(self, fast_start_setting):
        """Sets the fast_start_setting of this TranscodePresetType.


        :param fast_start_setting: The fast_start_setting of this TranscodePresetType.  # noqa: E501
        :type: FastStartSettingType
        """

        self._fast_start_setting = fast_start_setting

    @property
    def add_clip_name(self):
        """Gets the add_clip_name of this TranscodePresetType.  # noqa: E501


        :return: The add_clip_name of this TranscodePresetType.  # noqa: E501
        :rtype: bool
        """
        return self._add_clip_name

    @add_clip_name.setter
    def add_clip_name(self, add_clip_name):
        """Sets the add_clip_name of this TranscodePresetType.


        :param add_clip_name: The add_clip_name of this TranscodePresetType.  # noqa: E501
        :type: bool
        """

        self._add_clip_name = add_clip_name

    @property
    def thumbnail_background(self):
        """Gets the thumbnail_background of this TranscodePresetType.  # noqa: E501


        :return: The thumbnail_background of this TranscodePresetType.  # noqa: E501
        :rtype: str
        """
        return self._thumbnail_background

    @thumbnail_background.setter
    def thumbnail_background(self, thumbnail_background):
        """Sets the thumbnail_background of this TranscodePresetType.


        :param thumbnail_background: The thumbnail_background of this TranscodePresetType.  # noqa: E501
        :type: str
        """

        self._thumbnail_background = thumbnail_background

    @property
    def text_overlay(self):
        """Gets the text_overlay of this TranscodePresetType.  # noqa: E501


        :return: The text_overlay of this TranscodePresetType.  # noqa: E501
        :rtype: list[TextOverlayType]
        """
        return self._text_overlay

    @text_overlay.setter
    def text_overlay(self, text_overlay):
        """Sets the text_overlay of this TranscodePresetType.


        :param text_overlay: The text_overlay of this TranscodePresetType.  # noqa: E501
        :type: list[TextOverlayType]
        """

        self._text_overlay = text_overlay

    @property
    def name(self):
        """Gets the name of this TranscodePresetType.  # noqa: E501


        :return: The name of this TranscodePresetType.  # noqa: E501
        :rtype: str
        """
        return self._name

    @name.setter
    def name(self, name):
        """Sets the name of this TranscodePresetType.


        :param name: The name of this TranscodePresetType.  # noqa: E501
        :type: str
        """

        self._name = name

    @property
    def thumbnail_period(self):
        """Gets the thumbnail_period of this TranscodePresetType.  # noqa: E501


        :return: The thumbnail_period of this TranscodePresetType.  # noqa: E501
        :rtype: TimeCodeType
        """
        return self._thumbnail_period

    @thumbnail_period.setter
    def thumbnail_period(self, thumbnail_period):
        """Sets the thumbnail_period of this TranscodePresetType.


        :param thumbnail_period: The thumbnail_period of this TranscodePresetType.  # noqa: E501
        :type: TimeCodeType
        """

        self._thumbnail_period = thumbnail_period

    @property
    def overlay(self):
        """Gets the overlay of this TranscodePresetType.  # noqa: E501


        :return: The overlay of this TranscodePresetType.  # noqa: E501
        :rtype: list[OverlayType]
        """
        return self._overlay

    @overlay.setter
    def overlay(self, overlay):
        """Sets the overlay of this TranscodePresetType.


        :param overlay: The overlay of this TranscodePresetType.  # noqa: E501
        :type: list[OverlayType]
        """

        self._overlay = overlay

    @property
    def mediaconvert(self):
        """Gets the mediaconvert of this TranscodePresetType.  # noqa: E501


        :return: The mediaconvert of this TranscodePresetType.  # noqa: E501
        :rtype: TranscodePresetTypeMediaconvert
        """
        return self._mediaconvert

    @mediaconvert.setter
    def mediaconvert(self, mediaconvert):
        """Sets the mediaconvert of this TranscodePresetType.


        :param mediaconvert: The mediaconvert of this TranscodePresetType.  # noqa: E501
        :type: TranscodePresetTypeMediaconvert
        """

        self._mediaconvert = mediaconvert

    @property
    def thumbnail_resolution(self):
        """Gets the thumbnail_resolution of this TranscodePresetType.  # noqa: E501


        :return: The thumbnail_resolution of this TranscodePresetType.  # noqa: E501
        :rtype: ResolutionType
        """
        return self._thumbnail_resolution

    @thumbnail_resolution.setter
    def thumbnail_resolution(self, thumbnail_resolution):
        """Sets the thumbnail_resolution of this TranscodePresetType.


        :param thumbnail_resolution: The thumbnail_resolution of this TranscodePresetType.  # noqa: E501
        :type: ResolutionType
        """

        self._thumbnail_resolution = thumbnail_resolution

    @property
    def demuxer_setting(self):
        """Gets the demuxer_setting of this TranscodePresetType.  # noqa: E501


        :return: The demuxer_setting of this TranscodePresetType.  # noqa: E501
        :rtype: list[KeyValuePairType]
        """
        return self._demuxer_setting

    @demuxer_setting.setter
    def demuxer_setting(self, demuxer_setting):
        """Sets the demuxer_setting of this TranscodePresetType.


        :param demuxer_setting: The demuxer_setting of this TranscodePresetType.  # noqa: E501
        :type: list[KeyValuePairType]
        """

        self._demuxer_setting = demuxer_setting

    @property
    def thumbnail_plugin(self):
        """Gets the thumbnail_plugin of this TranscodePresetType.  # noqa: E501


        :return: The thumbnail_plugin of this TranscodePresetType.  # noqa: E501
        :rtype: str
        """
        return self._thumbnail_plugin

    @thumbnail_plugin.setter
    def thumbnail_plugin(self, thumbnail_plugin):
        """Sets the thumbnail_plugin of this TranscodePresetType.


        :param thumbnail_plugin: The thumbnail_plugin of this TranscodePresetType.  # noqa: E501
        :type: str
        """

        self._thumbnail_plugin = thumbnail_plugin

    @property
    def audio(self):
        """Gets the audio of this TranscodePresetType.  # noqa: E501


        :return: The audio of this TranscodePresetType.  # noqa: E501
        :rtype: AudioTranscodePresetType
        """
        return self._audio

    @audio.setter
    def audio(self, audio):
        """Sets the audio of this TranscodePresetType.


        :param audio: The audio of this TranscodePresetType.  # noqa: E501
        :type: AudioTranscodePresetType
        """

        self._audio = audio

    @property
    def muxer_setting(self):
        """Gets the muxer_setting of this TranscodePresetType.  # noqa: E501


        :return: The muxer_setting of this TranscodePresetType.  # noqa: E501
        :rtype: list[KeyValuePairType]
        """
        return self._muxer_setting

    @muxer_setting.setter
    def muxer_setting(self, muxer_setting):
        """Sets the muxer_setting of this TranscodePresetType.


        :param muxer_setting: The muxer_setting of this TranscodePresetType.  # noqa: E501
        :type: list[KeyValuePairType]
        """

        self._muxer_setting = muxer_setting

    @property
    def preserve_edl(self):
        """Gets the preserve_edl of this TranscodePresetType.  # noqa: E501


        :return: The preserve_edl of this TranscodePresetType.  # noqa: E501
        :rtype: bool
        """
        return self._preserve_edl

    @preserve_edl.setter
    def preserve_edl(self, preserve_edl):
        """Sets the preserve_edl of this TranscodePresetType.


        :param preserve_edl: The preserve_edl of this TranscodePresetType.  # noqa: E501
        :type: bool
        """

        self._preserve_edl = preserve_edl

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, TranscodePresetType):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
