/* tslint:disable */
/* eslint-disable */
/**
 * Jellyfin API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 10.8.9
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { exists, mapValues } from '../runtime';
/**
 * 
 * @export
 * @interface EncodingOptions
 */
export interface EncodingOptions {
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    encodingThreadCount?: number;
    /**
     * 
     * @type {string}
     * @memberof EncodingOptions
     */
    transcodingTempPath?: string | null;
    /**
     * 
     * @type {string}
     * @memberof EncodingOptions
     */
    fallbackFontPath?: string | null;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    enableFallbackFont?: boolean;
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    downMixAudioBoost?: number;
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    maxMuxingQueueSize?: number;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    enableThrottling?: boolean;
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    throttleDelaySeconds?: number;
    /**
     * 
     * @type {string}
     * @memberof EncodingOptions
     */
    hardwareAccelerationType?: string | null;
    /**
     * Gets or sets the FFmpeg path as set by the user via the UI.
     * @type {string}
     * @memberof EncodingOptions
     */
    encoderAppPath?: string | null;
    /**
     * Gets or sets the current FFmpeg path being used by the system and displayed on the transcode page.
     * @type {string}
     * @memberof EncodingOptions
     */
    encoderAppPathDisplay?: string | null;
    /**
     * 
     * @type {string}
     * @memberof EncodingOptions
     */
    vaapiDevice?: string | null;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    enableTonemapping?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    enableVppTonemapping?: boolean;
    /**
     * 
     * @type {string}
     * @memberof EncodingOptions
     */
    tonemappingAlgorithm?: string | null;
    /**
     * 
     * @type {string}
     * @memberof EncodingOptions
     */
    tonemappingRange?: string | null;
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    tonemappingDesat?: number;
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    tonemappingThreshold?: number;
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    tonemappingPeak?: number;
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    tonemappingParam?: number;
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    vppTonemappingBrightness?: number;
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    vppTonemappingContrast?: number;
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    h264Crf?: number;
    /**
     * 
     * @type {number}
     * @memberof EncodingOptions
     */
    h265Crf?: number;
    /**
     * 
     * @type {string}
     * @memberof EncodingOptions
     */
    encoderPreset?: string | null;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    deinterlaceDoubleRate?: boolean;
    /**
     * 
     * @type {string}
     * @memberof EncodingOptions
     */
    deinterlaceMethod?: string | null;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    enableDecodingColorDepth10Hevc?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    enableDecodingColorDepth10Vp9?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    enableEnhancedNvdecDecoder?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    preferSystemNativeHwDecoder?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    enableIntelLowPowerH264HwEncoder?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    enableIntelLowPowerHevcHwEncoder?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    enableHardwareEncoding?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    allowHevcEncoding?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof EncodingOptions
     */
    enableSubtitleExtraction?: boolean;
    /**
     * 
     * @type {Array<string>}
     * @memberof EncodingOptions
     */
    hardwareDecodingCodecs?: Array<string> | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof EncodingOptions
     */
    allowOnDemandMetadataBasedKeyframeExtractionForExtensions?: Array<string> | null;
}

/**
 * Check if a given object implements the EncodingOptions interface.
 */
export function instanceOfEncodingOptions(value: object): boolean {
    let isInstance = true;

    return isInstance;
}

export function EncodingOptionsFromJSON(json: any): EncodingOptions {
    return EncodingOptionsFromJSONTyped(json, false);
}

export function EncodingOptionsFromJSONTyped(json: any, ignoreDiscriminator: boolean): EncodingOptions {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'encodingThreadCount': !exists(json, 'EncodingThreadCount') ? undefined : json['EncodingThreadCount'],
        'transcodingTempPath': !exists(json, 'TranscodingTempPath') ? undefined : json['TranscodingTempPath'],
        'fallbackFontPath': !exists(json, 'FallbackFontPath') ? undefined : json['FallbackFontPath'],
        'enableFallbackFont': !exists(json, 'EnableFallbackFont') ? undefined : json['EnableFallbackFont'],
        'downMixAudioBoost': !exists(json, 'DownMixAudioBoost') ? undefined : json['DownMixAudioBoost'],
        'maxMuxingQueueSize': !exists(json, 'MaxMuxingQueueSize') ? undefined : json['MaxMuxingQueueSize'],
        'enableThrottling': !exists(json, 'EnableThrottling') ? undefined : json['EnableThrottling'],
        'throttleDelaySeconds': !exists(json, 'ThrottleDelaySeconds') ? undefined : json['ThrottleDelaySeconds'],
        'hardwareAccelerationType': !exists(json, 'HardwareAccelerationType') ? undefined : json['HardwareAccelerationType'],
        'encoderAppPath': !exists(json, 'EncoderAppPath') ? undefined : json['EncoderAppPath'],
        'encoderAppPathDisplay': !exists(json, 'EncoderAppPathDisplay') ? undefined : json['EncoderAppPathDisplay'],
        'vaapiDevice': !exists(json, 'VaapiDevice') ? undefined : json['VaapiDevice'],
        'enableTonemapping': !exists(json, 'EnableTonemapping') ? undefined : json['EnableTonemapping'],
        'enableVppTonemapping': !exists(json, 'EnableVppTonemapping') ? undefined : json['EnableVppTonemapping'],
        'tonemappingAlgorithm': !exists(json, 'TonemappingAlgorithm') ? undefined : json['TonemappingAlgorithm'],
        'tonemappingRange': !exists(json, 'TonemappingRange') ? undefined : json['TonemappingRange'],
        'tonemappingDesat': !exists(json, 'TonemappingDesat') ? undefined : json['TonemappingDesat'],
        'tonemappingThreshold': !exists(json, 'TonemappingThreshold') ? undefined : json['TonemappingThreshold'],
        'tonemappingPeak': !exists(json, 'TonemappingPeak') ? undefined : json['TonemappingPeak'],
        'tonemappingParam': !exists(json, 'TonemappingParam') ? undefined : json['TonemappingParam'],
        'vppTonemappingBrightness': !exists(json, 'VppTonemappingBrightness') ? undefined : json['VppTonemappingBrightness'],
        'vppTonemappingContrast': !exists(json, 'VppTonemappingContrast') ? undefined : json['VppTonemappingContrast'],
        'h264Crf': !exists(json, 'H264Crf') ? undefined : json['H264Crf'],
        'h265Crf': !exists(json, 'H265Crf') ? undefined : json['H265Crf'],
        'encoderPreset': !exists(json, 'EncoderPreset') ? undefined : json['EncoderPreset'],
        'deinterlaceDoubleRate': !exists(json, 'DeinterlaceDoubleRate') ? undefined : json['DeinterlaceDoubleRate'],
        'deinterlaceMethod': !exists(json, 'DeinterlaceMethod') ? undefined : json['DeinterlaceMethod'],
        'enableDecodingColorDepth10Hevc': !exists(json, 'EnableDecodingColorDepth10Hevc') ? undefined : json['EnableDecodingColorDepth10Hevc'],
        'enableDecodingColorDepth10Vp9': !exists(json, 'EnableDecodingColorDepth10Vp9') ? undefined : json['EnableDecodingColorDepth10Vp9'],
        'enableEnhancedNvdecDecoder': !exists(json, 'EnableEnhancedNvdecDecoder') ? undefined : json['EnableEnhancedNvdecDecoder'],
        'preferSystemNativeHwDecoder': !exists(json, 'PreferSystemNativeHwDecoder') ? undefined : json['PreferSystemNativeHwDecoder'],
        'enableIntelLowPowerH264HwEncoder': !exists(json, 'EnableIntelLowPowerH264HwEncoder') ? undefined : json['EnableIntelLowPowerH264HwEncoder'],
        'enableIntelLowPowerHevcHwEncoder': !exists(json, 'EnableIntelLowPowerHevcHwEncoder') ? undefined : json['EnableIntelLowPowerHevcHwEncoder'],
        'enableHardwareEncoding': !exists(json, 'EnableHardwareEncoding') ? undefined : json['EnableHardwareEncoding'],
        'allowHevcEncoding': !exists(json, 'AllowHevcEncoding') ? undefined : json['AllowHevcEncoding'],
        'enableSubtitleExtraction': !exists(json, 'EnableSubtitleExtraction') ? undefined : json['EnableSubtitleExtraction'],
        'hardwareDecodingCodecs': !exists(json, 'HardwareDecodingCodecs') ? undefined : json['HardwareDecodingCodecs'],
        'allowOnDemandMetadataBasedKeyframeExtractionForExtensions': !exists(json, 'AllowOnDemandMetadataBasedKeyframeExtractionForExtensions') ? undefined : json['AllowOnDemandMetadataBasedKeyframeExtractionForExtensions'],
    };
}

export function EncodingOptionsToJSON(value?: EncodingOptions | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'EncodingThreadCount': value.encodingThreadCount,
        'TranscodingTempPath': value.transcodingTempPath,
        'FallbackFontPath': value.fallbackFontPath,
        'EnableFallbackFont': value.enableFallbackFont,
        'DownMixAudioBoost': value.downMixAudioBoost,
        'MaxMuxingQueueSize': value.maxMuxingQueueSize,
        'EnableThrottling': value.enableThrottling,
        'ThrottleDelaySeconds': value.throttleDelaySeconds,
        'HardwareAccelerationType': value.hardwareAccelerationType,
        'EncoderAppPath': value.encoderAppPath,
        'EncoderAppPathDisplay': value.encoderAppPathDisplay,
        'VaapiDevice': value.vaapiDevice,
        'EnableTonemapping': value.enableTonemapping,
        'EnableVppTonemapping': value.enableVppTonemapping,
        'TonemappingAlgorithm': value.tonemappingAlgorithm,
        'TonemappingRange': value.tonemappingRange,
        'TonemappingDesat': value.tonemappingDesat,
        'TonemappingThreshold': value.tonemappingThreshold,
        'TonemappingPeak': value.tonemappingPeak,
        'TonemappingParam': value.tonemappingParam,
        'VppTonemappingBrightness': value.vppTonemappingBrightness,
        'VppTonemappingContrast': value.vppTonemappingContrast,
        'H264Crf': value.h264Crf,
        'H265Crf': value.h265Crf,
        'EncoderPreset': value.encoderPreset,
        'DeinterlaceDoubleRate': value.deinterlaceDoubleRate,
        'DeinterlaceMethod': value.deinterlaceMethod,
        'EnableDecodingColorDepth10Hevc': value.enableDecodingColorDepth10Hevc,
        'EnableDecodingColorDepth10Vp9': value.enableDecodingColorDepth10Vp9,
        'EnableEnhancedNvdecDecoder': value.enableEnhancedNvdecDecoder,
        'PreferSystemNativeHwDecoder': value.preferSystemNativeHwDecoder,
        'EnableIntelLowPowerH264HwEncoder': value.enableIntelLowPowerH264HwEncoder,
        'EnableIntelLowPowerHevcHwEncoder': value.enableIntelLowPowerHevcHwEncoder,
        'EnableHardwareEncoding': value.enableHardwareEncoding,
        'AllowHevcEncoding': value.allowHevcEncoding,
        'EnableSubtitleExtraction': value.enableSubtitleExtraction,
        'HardwareDecodingCodecs': value.hardwareDecodingCodecs,
        'AllowOnDemandMetadataBasedKeyframeExtractionForExtensions': value.allowOnDemandMetadataBasedKeyframeExtractionForExtensions,
    };
}

