# coding: utf-8

"""
    Emby Server REST API (BETA)
"""

import pprint
import re  # noqa: F401

import six

class VideoCodecBase(object):
    """NOTE: This class is auto generated by the swagger code generator program.

    Do not edit the class manually.
    """
    """
    Attributes:
      swagger_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.
    """
    swagger_types = {
        'codec_device_info': 'CommonInterfacesICodecDeviceInfo',
        'codec_kind': 'CodecKinds',
        'media_type_name': 'str',
        'video_media_type': 'VideoMediaTypes',
        'min_width': 'int',
        'max_width': 'int',
        'min_height': 'int',
        'max_height': 'int',
        'width_alignment': 'int',
        'height_alignment': 'int',
        'max_bit_rate': 'BitRate',
        'supported_color_formats': 'list[ColorFormats]',
        'supported_color_format_strings': 'list[str]',
        'profile_and_level_information': 'list[ProfileLevelInformation]',
        'id': 'str',
        'direction': 'CodecDirections',
        'name': 'str',
        'description': 'str',
        'framework_codec': 'str',
        'is_hardware_codec': 'bool',
        'secondary_framework': 'SecondaryFrameworks',
        'secondary_framework_codec': 'str',
        'max_instance_count': 'int',
        'is_enabled_by_default': 'bool',
        'default_priority': 'int'
    }

    attribute_map = {
        'codec_device_info': 'CodecDeviceInfo',
        'codec_kind': 'CodecKind',
        'media_type_name': 'MediaTypeName',
        'video_media_type': 'VideoMediaType',
        'min_width': 'MinWidth',
        'max_width': 'MaxWidth',
        'min_height': 'MinHeight',
        'max_height': 'MaxHeight',
        'width_alignment': 'WidthAlignment',
        'height_alignment': 'HeightAlignment',
        'max_bit_rate': 'MaxBitRate',
        'supported_color_formats': 'SupportedColorFormats',
        'supported_color_format_strings': 'SupportedColorFormatStrings',
        'profile_and_level_information': 'ProfileAndLevelInformation',
        'id': 'Id',
        'direction': 'Direction',
        'name': 'Name',
        'description': 'Description',
        'framework_codec': 'FrameworkCodec',
        'is_hardware_codec': 'IsHardwareCodec',
        'secondary_framework': 'SecondaryFramework',
        'secondary_framework_codec': 'SecondaryFrameworkCodec',
        'max_instance_count': 'MaxInstanceCount',
        'is_enabled_by_default': 'IsEnabledByDefault',
        'default_priority': 'DefaultPriority'
    }

    def __init__(self, codec_device_info=None, codec_kind=None, media_type_name=None, video_media_type=None, min_width=None, max_width=None, min_height=None, max_height=None, width_alignment=None, height_alignment=None, max_bit_rate=None, supported_color_formats=None, supported_color_format_strings=None, profile_and_level_information=None, id=None, direction=None, name=None, description=None, framework_codec=None, is_hardware_codec=None, secondary_framework=None, secondary_framework_codec=None, max_instance_count=None, is_enabled_by_default=None, default_priority=None):  # noqa: E501
        """VideoCodecBase - a model defined in Swagger"""  # noqa: E501
        self._codec_device_info = None
        self._codec_kind = None
        self._media_type_name = None
        self._video_media_type = None
        self._min_width = None
        self._max_width = None
        self._min_height = None
        self._max_height = None
        self._width_alignment = None
        self._height_alignment = None
        self._max_bit_rate = None
        self._supported_color_formats = None
        self._supported_color_format_strings = None
        self._profile_and_level_information = None
        self._id = None
        self._direction = None
        self._name = None
        self._description = None
        self._framework_codec = None
        self._is_hardware_codec = None
        self._secondary_framework = None
        self._secondary_framework_codec = None
        self._max_instance_count = None
        self._is_enabled_by_default = None
        self._default_priority = None
        self.discriminator = None
        if codec_device_info is not None:
            self.codec_device_info = codec_device_info
        if codec_kind is not None:
            self.codec_kind = codec_kind
        if media_type_name is not None:
            self.media_type_name = media_type_name
        if video_media_type is not None:
            self.video_media_type = video_media_type
        if min_width is not None:
            self.min_width = min_width
        if max_width is not None:
            self.max_width = max_width
        if min_height is not None:
            self.min_height = min_height
        if max_height is not None:
            self.max_height = max_height
        if width_alignment is not None:
            self.width_alignment = width_alignment
        if height_alignment is not None:
            self.height_alignment = height_alignment
        if max_bit_rate is not None:
            self.max_bit_rate = max_bit_rate
        if supported_color_formats is not None:
            self.supported_color_formats = supported_color_formats
        if supported_color_format_strings is not None:
            self.supported_color_format_strings = supported_color_format_strings
        if profile_and_level_information is not None:
            self.profile_and_level_information = profile_and_level_information
        if id is not None:
            self.id = id
        if direction is not None:
            self.direction = direction
        if name is not None:
            self.name = name
        if description is not None:
            self.description = description
        if framework_codec is not None:
            self.framework_codec = framework_codec
        if is_hardware_codec is not None:
            self.is_hardware_codec = is_hardware_codec
        if secondary_framework is not None:
            self.secondary_framework = secondary_framework
        if secondary_framework_codec is not None:
            self.secondary_framework_codec = secondary_framework_codec
        if max_instance_count is not None:
            self.max_instance_count = max_instance_count
        if is_enabled_by_default is not None:
            self.is_enabled_by_default = is_enabled_by_default
        if default_priority is not None:
            self.default_priority = default_priority

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


        :return: The codec_device_info of this VideoCodecBase.  # noqa: E501
        :rtype: CommonInterfacesICodecDeviceInfo
        """
        return self._codec_device_info

    @codec_device_info.setter
    def codec_device_info(self, codec_device_info):
        """Sets the codec_device_info of this VideoCodecBase.


        :param codec_device_info: The codec_device_info of this VideoCodecBase.  # noqa: E501
        :type: CommonInterfacesICodecDeviceInfo
        """

        self._codec_device_info = codec_device_info

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


        :return: The codec_kind of this VideoCodecBase.  # noqa: E501
        :rtype: CodecKinds
        """
        return self._codec_kind

    @codec_kind.setter
    def codec_kind(self, codec_kind):
        """Sets the codec_kind of this VideoCodecBase.


        :param codec_kind: The codec_kind of this VideoCodecBase.  # noqa: E501
        :type: CodecKinds
        """

        self._codec_kind = codec_kind

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


        :return: The media_type_name of this VideoCodecBase.  # noqa: E501
        :rtype: str
        """
        return self._media_type_name

    @media_type_name.setter
    def media_type_name(self, media_type_name):
        """Sets the media_type_name of this VideoCodecBase.


        :param media_type_name: The media_type_name of this VideoCodecBase.  # noqa: E501
        :type: str
        """

        self._media_type_name = media_type_name

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


        :return: The video_media_type of this VideoCodecBase.  # noqa: E501
        :rtype: VideoMediaTypes
        """
        return self._video_media_type

    @video_media_type.setter
    def video_media_type(self, video_media_type):
        """Sets the video_media_type of this VideoCodecBase.


        :param video_media_type: The video_media_type of this VideoCodecBase.  # noqa: E501
        :type: VideoMediaTypes
        """

        self._video_media_type = video_media_type

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


        :return: The min_width of this VideoCodecBase.  # noqa: E501
        :rtype: int
        """
        return self._min_width

    @min_width.setter
    def min_width(self, min_width):
        """Sets the min_width of this VideoCodecBase.


        :param min_width: The min_width of this VideoCodecBase.  # noqa: E501
        :type: int
        """

        self._min_width = min_width

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


        :return: The max_width of this VideoCodecBase.  # noqa: E501
        :rtype: int
        """
        return self._max_width

    @max_width.setter
    def max_width(self, max_width):
        """Sets the max_width of this VideoCodecBase.


        :param max_width: The max_width of this VideoCodecBase.  # noqa: E501
        :type: int
        """

        self._max_width = max_width

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


        :return: The min_height of this VideoCodecBase.  # noqa: E501
        :rtype: int
        """
        return self._min_height

    @min_height.setter
    def min_height(self, min_height):
        """Sets the min_height of this VideoCodecBase.


        :param min_height: The min_height of this VideoCodecBase.  # noqa: E501
        :type: int
        """

        self._min_height = min_height

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


        :return: The max_height of this VideoCodecBase.  # noqa: E501
        :rtype: int
        """
        return self._max_height

    @max_height.setter
    def max_height(self, max_height):
        """Sets the max_height of this VideoCodecBase.


        :param max_height: The max_height of this VideoCodecBase.  # noqa: E501
        :type: int
        """

        self._max_height = max_height

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


        :return: The width_alignment of this VideoCodecBase.  # noqa: E501
        :rtype: int
        """
        return self._width_alignment

    @width_alignment.setter
    def width_alignment(self, width_alignment):
        """Sets the width_alignment of this VideoCodecBase.


        :param width_alignment: The width_alignment of this VideoCodecBase.  # noqa: E501
        :type: int
        """

        self._width_alignment = width_alignment

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


        :return: The height_alignment of this VideoCodecBase.  # noqa: E501
        :rtype: int
        """
        return self._height_alignment

    @height_alignment.setter
    def height_alignment(self, height_alignment):
        """Sets the height_alignment of this VideoCodecBase.


        :param height_alignment: The height_alignment of this VideoCodecBase.  # noqa: E501
        :type: int
        """

        self._height_alignment = height_alignment

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


        :return: The max_bit_rate of this VideoCodecBase.  # noqa: E501
        :rtype: BitRate
        """
        return self._max_bit_rate

    @max_bit_rate.setter
    def max_bit_rate(self, max_bit_rate):
        """Sets the max_bit_rate of this VideoCodecBase.


        :param max_bit_rate: The max_bit_rate of this VideoCodecBase.  # noqa: E501
        :type: BitRate
        """

        self._max_bit_rate = max_bit_rate

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


        :return: The supported_color_formats of this VideoCodecBase.  # noqa: E501
        :rtype: list[ColorFormats]
        """
        return self._supported_color_formats

    @supported_color_formats.setter
    def supported_color_formats(self, supported_color_formats):
        """Sets the supported_color_formats of this VideoCodecBase.


        :param supported_color_formats: The supported_color_formats of this VideoCodecBase.  # noqa: E501
        :type: list[ColorFormats]
        """

        self._supported_color_formats = supported_color_formats

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


        :return: The supported_color_format_strings of this VideoCodecBase.  # noqa: E501
        :rtype: list[str]
        """
        return self._supported_color_format_strings

    @supported_color_format_strings.setter
    def supported_color_format_strings(self, supported_color_format_strings):
        """Sets the supported_color_format_strings of this VideoCodecBase.


        :param supported_color_format_strings: The supported_color_format_strings of this VideoCodecBase.  # noqa: E501
        :type: list[str]
        """

        self._supported_color_format_strings = supported_color_format_strings

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


        :return: The profile_and_level_information of this VideoCodecBase.  # noqa: E501
        :rtype: list[ProfileLevelInformation]
        """
        return self._profile_and_level_information

    @profile_and_level_information.setter
    def profile_and_level_information(self, profile_and_level_information):
        """Sets the profile_and_level_information of this VideoCodecBase.


        :param profile_and_level_information: The profile_and_level_information of this VideoCodecBase.  # noqa: E501
        :type: list[ProfileLevelInformation]
        """

        self._profile_and_level_information = profile_and_level_information

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


        :return: The id of this VideoCodecBase.  # noqa: E501
        :rtype: str
        """
        return self._id

    @id.setter
    def id(self, id):
        """Sets the id of this VideoCodecBase.


        :param id: The id of this VideoCodecBase.  # noqa: E501
        :type: str
        """

        self._id = id

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


        :return: The direction of this VideoCodecBase.  # noqa: E501
        :rtype: CodecDirections
        """
        return self._direction

    @direction.setter
    def direction(self, direction):
        """Sets the direction of this VideoCodecBase.


        :param direction: The direction of this VideoCodecBase.  # noqa: E501
        :type: CodecDirections
        """

        self._direction = direction

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


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

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


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

        self._name = name

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


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

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


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

        self._description = description

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


        :return: The framework_codec of this VideoCodecBase.  # noqa: E501
        :rtype: str
        """
        return self._framework_codec

    @framework_codec.setter
    def framework_codec(self, framework_codec):
        """Sets the framework_codec of this VideoCodecBase.


        :param framework_codec: The framework_codec of this VideoCodecBase.  # noqa: E501
        :type: str
        """

        self._framework_codec = framework_codec

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


        :return: The is_hardware_codec of this VideoCodecBase.  # noqa: E501
        :rtype: bool
        """
        return self._is_hardware_codec

    @is_hardware_codec.setter
    def is_hardware_codec(self, is_hardware_codec):
        """Sets the is_hardware_codec of this VideoCodecBase.


        :param is_hardware_codec: The is_hardware_codec of this VideoCodecBase.  # noqa: E501
        :type: bool
        """

        self._is_hardware_codec = is_hardware_codec

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


        :return: The secondary_framework of this VideoCodecBase.  # noqa: E501
        :rtype: SecondaryFrameworks
        """
        return self._secondary_framework

    @secondary_framework.setter
    def secondary_framework(self, secondary_framework):
        """Sets the secondary_framework of this VideoCodecBase.


        :param secondary_framework: The secondary_framework of this VideoCodecBase.  # noqa: E501
        :type: SecondaryFrameworks
        """

        self._secondary_framework = secondary_framework

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


        :return: The secondary_framework_codec of this VideoCodecBase.  # noqa: E501
        :rtype: str
        """
        return self._secondary_framework_codec

    @secondary_framework_codec.setter
    def secondary_framework_codec(self, secondary_framework_codec):
        """Sets the secondary_framework_codec of this VideoCodecBase.


        :param secondary_framework_codec: The secondary_framework_codec of this VideoCodecBase.  # noqa: E501
        :type: str
        """

        self._secondary_framework_codec = secondary_framework_codec

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


        :return: The max_instance_count of this VideoCodecBase.  # noqa: E501
        :rtype: int
        """
        return self._max_instance_count

    @max_instance_count.setter
    def max_instance_count(self, max_instance_count):
        """Sets the max_instance_count of this VideoCodecBase.


        :param max_instance_count: The max_instance_count of this VideoCodecBase.  # noqa: E501
        :type: int
        """

        self._max_instance_count = max_instance_count

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


        :return: The is_enabled_by_default of this VideoCodecBase.  # noqa: E501
        :rtype: bool
        """
        return self._is_enabled_by_default

    @is_enabled_by_default.setter
    def is_enabled_by_default(self, is_enabled_by_default):
        """Sets the is_enabled_by_default of this VideoCodecBase.


        :param is_enabled_by_default: The is_enabled_by_default of this VideoCodecBase.  # noqa: E501
        :type: bool
        """

        self._is_enabled_by_default = is_enabled_by_default

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


        :return: The default_priority of this VideoCodecBase.  # noqa: E501
        :rtype: int
        """
        return self._default_priority

    @default_priority.setter
    def default_priority(self, default_priority):
        """Sets the default_priority of this VideoCodecBase.


        :param default_priority: The default_priority of this VideoCodecBase.  # noqa: E501
        :type: int
        """

        self._default_priority = default_priority

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

        for attr, _ in six.iteritems(self.swagger_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
        if issubclass(VideoCodecBase, dict):
            for key, value in self.items():
                result[key] = 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, VideoCodecBase):
            return False

        return self.__dict__ == other.__dict__

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