Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
software.amazon.awssdk.services.mediaconvert.model.Input Maven / Gradle / Ivy
Go to download
The AWS Java SDK for AWS Elemental MediaConvert module holds the client classes that are used for
communicating
with AWS Elemental MediaConvert Service
/*
* Copyright 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 software.amazon.awssdk.services.mediaconvert.model;
import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import software.amazon.awssdk.annotations.Generated;
import software.amazon.awssdk.core.SdkField;
import software.amazon.awssdk.core.SdkPojo;
import software.amazon.awssdk.core.protocol.MarshallLocation;
import software.amazon.awssdk.core.protocol.MarshallingType;
import software.amazon.awssdk.core.traits.ListTrait;
import software.amazon.awssdk.core.traits.LocationTrait;
import software.amazon.awssdk.core.traits.MapTrait;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructList;
import software.amazon.awssdk.core.util.DefaultSdkAutoConstructMap;
import software.amazon.awssdk.core.util.SdkAutoConstructList;
import software.amazon.awssdk.core.util.SdkAutoConstructMap;
import software.amazon.awssdk.utils.ToString;
import software.amazon.awssdk.utils.builder.CopyableBuilder;
import software.amazon.awssdk.utils.builder.ToCopyableBuilder;
/**
* Use inputs to define the source files used in your transcoding job. For more information, see
* https://docs.aws.amazon.com/mediaconvert/latest/ug/specify-input-settings.html. You can use multiple video inputs to
* do input stitching. For more information, see
* https://docs.aws.amazon.com/mediaconvert/latest/ug/assembling-multiple-inputs-and-input-clips.html
*/
@Generated("software.amazon.awssdk:codegen")
public final class Input implements SdkPojo, Serializable, ToCopyableBuilder {
private static final SdkField ADVANCED_INPUT_FILTER_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("AdvancedInputFilter").getter(getter(Input::advancedInputFilterAsString))
.setter(setter(Builder::advancedInputFilter))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("advancedInputFilter").build())
.build();
private static final SdkField ADVANCED_INPUT_FILTER_SETTINGS_FIELD = SdkField
. builder(MarshallingType.SDK_POJO)
.memberName("AdvancedInputFilterSettings")
.getter(getter(Input::advancedInputFilterSettings))
.setter(setter(Builder::advancedInputFilterSettings))
.constructor(AdvancedInputFilterSettings::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("advancedInputFilterSettings")
.build()).build();
private static final SdkField> AUDIO_SELECTOR_GROUPS_FIELD = SdkField
.> builder(MarshallingType.MAP)
.memberName("AudioSelectorGroups")
.getter(getter(Input::audioSelectorGroups))
.setter(setter(Builder::audioSelectorGroups))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("audioSelectorGroups").build(),
MapTrait.builder()
.keyLocationName("key")
.valueLocationName("value")
.valueFieldInfo(
SdkField. builder(MarshallingType.SDK_POJO)
.constructor(AudioSelectorGroup::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("value").build()).build()).build()).build();
private static final SdkField> AUDIO_SELECTORS_FIELD = SdkField
.> builder(MarshallingType.MAP)
.memberName("AudioSelectors")
.getter(getter(Input::audioSelectors))
.setter(setter(Builder::audioSelectors))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("audioSelectors").build(),
MapTrait.builder()
.keyLocationName("key")
.valueLocationName("value")
.valueFieldInfo(
SdkField. builder(MarshallingType.SDK_POJO)
.constructor(AudioSelector::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("value").build()).build()).build()).build();
private static final SdkField> CAPTION_SELECTORS_FIELD = SdkField
.> builder(MarshallingType.MAP)
.memberName("CaptionSelectors")
.getter(getter(Input::captionSelectors))
.setter(setter(Builder::captionSelectors))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("captionSelectors").build(),
MapTrait.builder()
.keyLocationName("key")
.valueLocationName("value")
.valueFieldInfo(
SdkField. builder(MarshallingType.SDK_POJO)
.constructor(CaptionSelector::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("value").build()).build()).build()).build();
private static final SdkField CROP_FIELD = SdkField. builder(MarshallingType.SDK_POJO)
.memberName("Crop").getter(getter(Input::crop)).setter(setter(Builder::crop)).constructor(Rectangle::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("crop").build()).build();
private static final SdkField DEBLOCK_FILTER_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("DeblockFilter").getter(getter(Input::deblockFilterAsString)).setter(setter(Builder::deblockFilter))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("deblockFilter").build()).build();
private static final SdkField DECRYPTION_SETTINGS_FIELD = SdkField
. builder(MarshallingType.SDK_POJO).memberName("DecryptionSettings")
.getter(getter(Input::decryptionSettings)).setter(setter(Builder::decryptionSettings))
.constructor(InputDecryptionSettings::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("decryptionSettings").build())
.build();
private static final SdkField DENOISE_FILTER_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("DenoiseFilter").getter(getter(Input::denoiseFilterAsString)).setter(setter(Builder::denoiseFilter))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("denoiseFilter").build()).build();
private static final SdkField DOLBY_VISION_METADATA_XML_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("DolbyVisionMetadataXml").getter(getter(Input::dolbyVisionMetadataXml))
.setter(setter(Builder::dolbyVisionMetadataXml))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("dolbyVisionMetadataXml").build())
.build();
private static final SdkField FILE_INPUT_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("FileInput").getter(getter(Input::fileInput)).setter(setter(Builder::fileInput))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("fileInput").build()).build();
private static final SdkField FILTER_ENABLE_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("FilterEnable").getter(getter(Input::filterEnableAsString)).setter(setter(Builder::filterEnable))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("filterEnable").build()).build();
private static final SdkField FILTER_STRENGTH_FIELD = SdkField. builder(MarshallingType.INTEGER)
.memberName("FilterStrength").getter(getter(Input::filterStrength)).setter(setter(Builder::filterStrength))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("filterStrength").build()).build();
private static final SdkField IMAGE_INSERTER_FIELD = SdkField
. builder(MarshallingType.SDK_POJO).memberName("ImageInserter").getter(getter(Input::imageInserter))
.setter(setter(Builder::imageInserter)).constructor(ImageInserter::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("imageInserter").build()).build();
private static final SdkField> INPUT_CLIPPINGS_FIELD = SdkField
.> builder(MarshallingType.LIST)
.memberName("InputClippings")
.getter(getter(Input::inputClippings))
.setter(setter(Builder::inputClippings))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("inputClippings").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField. builder(MarshallingType.SDK_POJO)
.constructor(InputClipping::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("member").build()).build()).build()).build();
private static final SdkField INPUT_SCAN_TYPE_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("InputScanType").getter(getter(Input::inputScanTypeAsString)).setter(setter(Builder::inputScanType))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("inputScanType").build()).build();
private static final SdkField POSITION_FIELD = SdkField. builder(MarshallingType.SDK_POJO)
.memberName("Position").getter(getter(Input::position)).setter(setter(Builder::position))
.constructor(Rectangle::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("position").build()).build();
private static final SdkField PROGRAM_NUMBER_FIELD = SdkField. builder(MarshallingType.INTEGER)
.memberName("ProgramNumber").getter(getter(Input::programNumber)).setter(setter(Builder::programNumber))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("programNumber").build()).build();
private static final SdkField PSI_CONTROL_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("PsiControl").getter(getter(Input::psiControlAsString)).setter(setter(Builder::psiControl))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("psiControl").build()).build();
private static final SdkField> SUPPLEMENTAL_IMPS_FIELD = SdkField
.> builder(MarshallingType.LIST)
.memberName("SupplementalImps")
.getter(getter(Input::supplementalImps))
.setter(setter(Builder::supplementalImps))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("supplementalImps").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField. builder(MarshallingType.STRING)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("member").build()).build()).build()).build();
private static final SdkField TIMECODE_SOURCE_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("TimecodeSource").getter(getter(Input::timecodeSourceAsString)).setter(setter(Builder::timecodeSource))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("timecodeSource").build()).build();
private static final SdkField TIMECODE_START_FIELD = SdkField. builder(MarshallingType.STRING)
.memberName("TimecodeStart").getter(getter(Input::timecodeStart)).setter(setter(Builder::timecodeStart))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("timecodeStart").build()).build();
private static final SdkField VIDEO_GENERATOR_FIELD = SdkField
. builder(MarshallingType.SDK_POJO).memberName("VideoGenerator")
.getter(getter(Input::videoGenerator)).setter(setter(Builder::videoGenerator))
.constructor(InputVideoGenerator::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("videoGenerator").build()).build();
private static final SdkField> VIDEO_OVERLAYS_FIELD = SdkField
.> builder(MarshallingType.LIST)
.memberName("VideoOverlays")
.getter(getter(Input::videoOverlays))
.setter(setter(Builder::videoOverlays))
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("videoOverlays").build(),
ListTrait
.builder()
.memberLocationName(null)
.memberFieldInfo(
SdkField. builder(MarshallingType.SDK_POJO)
.constructor(VideoOverlay::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD)
.locationName("member").build()).build()).build()).build();
private static final SdkField VIDEO_SELECTOR_FIELD = SdkField
. builder(MarshallingType.SDK_POJO).memberName("VideoSelector").getter(getter(Input::videoSelector))
.setter(setter(Builder::videoSelector)).constructor(VideoSelector::builder)
.traits(LocationTrait.builder().location(MarshallLocation.PAYLOAD).locationName("videoSelector").build()).build();
private static final List> SDK_FIELDS = Collections.unmodifiableList(Arrays.asList(ADVANCED_INPUT_FILTER_FIELD,
ADVANCED_INPUT_FILTER_SETTINGS_FIELD, AUDIO_SELECTOR_GROUPS_FIELD, AUDIO_SELECTORS_FIELD, CAPTION_SELECTORS_FIELD,
CROP_FIELD, DEBLOCK_FILTER_FIELD, DECRYPTION_SETTINGS_FIELD, DENOISE_FILTER_FIELD, DOLBY_VISION_METADATA_XML_FIELD,
FILE_INPUT_FIELD, FILTER_ENABLE_FIELD, FILTER_STRENGTH_FIELD, IMAGE_INSERTER_FIELD, INPUT_CLIPPINGS_FIELD,
INPUT_SCAN_TYPE_FIELD, POSITION_FIELD, PROGRAM_NUMBER_FIELD, PSI_CONTROL_FIELD, SUPPLEMENTAL_IMPS_FIELD,
TIMECODE_SOURCE_FIELD, TIMECODE_START_FIELD, VIDEO_GENERATOR_FIELD, VIDEO_OVERLAYS_FIELD, VIDEO_SELECTOR_FIELD));
private static final long serialVersionUID = 1L;
private final String advancedInputFilter;
private final AdvancedInputFilterSettings advancedInputFilterSettings;
private final Map audioSelectorGroups;
private final Map audioSelectors;
private final Map captionSelectors;
private final Rectangle crop;
private final String deblockFilter;
private final InputDecryptionSettings decryptionSettings;
private final String denoiseFilter;
private final String dolbyVisionMetadataXml;
private final String fileInput;
private final String filterEnable;
private final Integer filterStrength;
private final ImageInserter imageInserter;
private final List inputClippings;
private final String inputScanType;
private final Rectangle position;
private final Integer programNumber;
private final String psiControl;
private final List supplementalImps;
private final String timecodeSource;
private final String timecodeStart;
private final InputVideoGenerator videoGenerator;
private final List videoOverlays;
private final VideoSelector videoSelector;
private Input(BuilderImpl builder) {
this.advancedInputFilter = builder.advancedInputFilter;
this.advancedInputFilterSettings = builder.advancedInputFilterSettings;
this.audioSelectorGroups = builder.audioSelectorGroups;
this.audioSelectors = builder.audioSelectors;
this.captionSelectors = builder.captionSelectors;
this.crop = builder.crop;
this.deblockFilter = builder.deblockFilter;
this.decryptionSettings = builder.decryptionSettings;
this.denoiseFilter = builder.denoiseFilter;
this.dolbyVisionMetadataXml = builder.dolbyVisionMetadataXml;
this.fileInput = builder.fileInput;
this.filterEnable = builder.filterEnable;
this.filterStrength = builder.filterStrength;
this.imageInserter = builder.imageInserter;
this.inputClippings = builder.inputClippings;
this.inputScanType = builder.inputScanType;
this.position = builder.position;
this.programNumber = builder.programNumber;
this.psiControl = builder.psiControl;
this.supplementalImps = builder.supplementalImps;
this.timecodeSource = builder.timecodeSource;
this.timecodeStart = builder.timecodeStart;
this.videoGenerator = builder.videoGenerator;
this.videoOverlays = builder.videoOverlays;
this.videoSelector = builder.videoSelector;
}
/**
* Use to remove noise, blocking, blurriness, or ringing from your input as a pre-filter step before encoding. The
* Advanced input filter removes more types of compression artifacts and is an improvement when compared to basic
* Deblock and Denoise filters. To remove video compression artifacts from your input and improve the video quality:
* Choose Enabled. Additionally, this filter can help increase the video quality of your output relative to its
* bitrate, since noisy inputs are more complex and require more bits to encode. To help restore loss of detail
* after applying the filter, you can optionally add texture or sharpening as an additional step. Jobs that use this
* feature incur pro-tier pricing. To not apply advanced input filtering: Choose Disabled. Note that you can still
* apply basic filtering with Deblock and Denoise.
*
* If the service returns an enum value that is not available in the current SDK version,
* {@link #advancedInputFilter} will return {@link AdvancedInputFilter#UNKNOWN_TO_SDK_VERSION}. The raw value
* returned by the service is available from {@link #advancedInputFilterAsString}.
*
*
* @return Use to remove noise, blocking, blurriness, or ringing from your input as a pre-filter step before
* encoding. The Advanced input filter removes more types of compression artifacts and is an improvement
* when compared to basic Deblock and Denoise filters. To remove video compression artifacts from your input
* and improve the video quality: Choose Enabled. Additionally, this filter can help increase the video
* quality of your output relative to its bitrate, since noisy inputs are more complex and require more bits
* to encode. To help restore loss of detail after applying the filter, you can optionally add texture or
* sharpening as an additional step. Jobs that use this feature incur pro-tier pricing. To not apply
* advanced input filtering: Choose Disabled. Note that you can still apply basic filtering with Deblock and
* Denoise.
* @see AdvancedInputFilter
*/
public final AdvancedInputFilter advancedInputFilter() {
return AdvancedInputFilter.fromValue(advancedInputFilter);
}
/**
* Use to remove noise, blocking, blurriness, or ringing from your input as a pre-filter step before encoding. The
* Advanced input filter removes more types of compression artifacts and is an improvement when compared to basic
* Deblock and Denoise filters. To remove video compression artifacts from your input and improve the video quality:
* Choose Enabled. Additionally, this filter can help increase the video quality of your output relative to its
* bitrate, since noisy inputs are more complex and require more bits to encode. To help restore loss of detail
* after applying the filter, you can optionally add texture or sharpening as an additional step. Jobs that use this
* feature incur pro-tier pricing. To not apply advanced input filtering: Choose Disabled. Note that you can still
* apply basic filtering with Deblock and Denoise.
*
* If the service returns an enum value that is not available in the current SDK version,
* {@link #advancedInputFilter} will return {@link AdvancedInputFilter#UNKNOWN_TO_SDK_VERSION}. The raw value
* returned by the service is available from {@link #advancedInputFilterAsString}.
*
*
* @return Use to remove noise, blocking, blurriness, or ringing from your input as a pre-filter step before
* encoding. The Advanced input filter removes more types of compression artifacts and is an improvement
* when compared to basic Deblock and Denoise filters. To remove video compression artifacts from your input
* and improve the video quality: Choose Enabled. Additionally, this filter can help increase the video
* quality of your output relative to its bitrate, since noisy inputs are more complex and require more bits
* to encode. To help restore loss of detail after applying the filter, you can optionally add texture or
* sharpening as an additional step. Jobs that use this feature incur pro-tier pricing. To not apply
* advanced input filtering: Choose Disabled. Note that you can still apply basic filtering with Deblock and
* Denoise.
* @see AdvancedInputFilter
*/
public final String advancedInputFilterAsString() {
return advancedInputFilter;
}
/**
* Optional settings for Advanced input filter when you set Advanced input filter to Enabled.
*
* @return Optional settings for Advanced input filter when you set Advanced input filter to Enabled.
*/
public final AdvancedInputFilterSettings advancedInputFilterSettings() {
return advancedInputFilterSettings;
}
/**
* For responses, this returns true if the service returned a value for the AudioSelectorGroups property. This DOES
* NOT check that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property).
* This is useful because the SDK will never return a null collection or map, but you may need to differentiate
* between the service returning nothing (or null) and the service returning an empty collection or map. For
* requests, this returns true if a value for the property was specified in the request builder, and false if a
* value was not specified.
*/
public final boolean hasAudioSelectorGroups() {
return audioSelectorGroups != null && !(audioSelectorGroups instanceof SdkAutoConstructMap);
}
/**
* Use audio selector groups to combine multiple sidecar audio inputs so that you can assign them to a single output
* audio tab. Note that, if you're working with embedded audio, it's simpler to assign multiple input tracks into a
* single audio selector rather than use an audio selector group.
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* This method will never return null. If you would like to know whether the service returned this field (so that
* you can differentiate between null and empty), you can use the {@link #hasAudioSelectorGroups} method.
*
*
* @return Use audio selector groups to combine multiple sidecar audio inputs so that you can assign them to a
* single output audio tab. Note that, if you're working with embedded audio, it's simpler to assign
* multiple input tracks into a single audio selector rather than use an audio selector group.
*/
public final Map audioSelectorGroups() {
return audioSelectorGroups;
}
/**
* For responses, this returns true if the service returned a value for the AudioSelectors property. This DOES NOT
* check that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property).
* This is useful because the SDK will never return a null collection or map, but you may need to differentiate
* between the service returning nothing (or null) and the service returning an empty collection or map. For
* requests, this returns true if a value for the property was specified in the request builder, and false if a
* value was not specified.
*/
public final boolean hasAudioSelectors() {
return audioSelectors != null && !(audioSelectors instanceof SdkAutoConstructMap);
}
/**
* Use Audio selectors to specify a track or set of tracks from the input that you will use in your outputs. You can
* use multiple Audio selectors per input.
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* This method will never return null. If you would like to know whether the service returned this field (so that
* you can differentiate between null and empty), you can use the {@link #hasAudioSelectors} method.
*
*
* @return Use Audio selectors to specify a track or set of tracks from the input that you will use in your outputs.
* You can use multiple Audio selectors per input.
*/
public final Map audioSelectors() {
return audioSelectors;
}
/**
* For responses, this returns true if the service returned a value for the CaptionSelectors property. This DOES NOT
* check that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property).
* This is useful because the SDK will never return a null collection or map, but you may need to differentiate
* between the service returning nothing (or null) and the service returning an empty collection or map. For
* requests, this returns true if a value for the property was specified in the request builder, and false if a
* value was not specified.
*/
public final boolean hasCaptionSelectors() {
return captionSelectors != null && !(captionSelectors instanceof SdkAutoConstructMap);
}
/**
* Use captions selectors to specify the captions data from your input that you use in your outputs. You can use up
* to 100 captions selectors per input.
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* This method will never return null. If you would like to know whether the service returned this field (so that
* you can differentiate between null and empty), you can use the {@link #hasCaptionSelectors} method.
*
*
* @return Use captions selectors to specify the captions data from your input that you use in your outputs. You can
* use up to 100 captions selectors per input.
*/
public final Map captionSelectors() {
return captionSelectors;
}
/**
* Use Cropping selection to specify the video area that the service will include in the output video frame. If you
* specify a value here, it will override any value that you specify in the output setting Cropping selection.
*
* @return Use Cropping selection to specify the video area that the service will include in the output video frame.
* If you specify a value here, it will override any value that you specify in the output setting Cropping
* selection.
*/
public final Rectangle crop() {
return crop;
}
/**
* Enable Deblock to produce smoother motion in the output. Default is disabled. Only manually controllable for
* MPEG2 and uncompressed video inputs.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #deblockFilter}
* will return {@link InputDeblockFilter#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available
* from {@link #deblockFilterAsString}.
*
*
* @return Enable Deblock to produce smoother motion in the output. Default is disabled. Only manually controllable
* for MPEG2 and uncompressed video inputs.
* @see InputDeblockFilter
*/
public final InputDeblockFilter deblockFilter() {
return InputDeblockFilter.fromValue(deblockFilter);
}
/**
* Enable Deblock to produce smoother motion in the output. Default is disabled. Only manually controllable for
* MPEG2 and uncompressed video inputs.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #deblockFilter}
* will return {@link InputDeblockFilter#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available
* from {@link #deblockFilterAsString}.
*
*
* @return Enable Deblock to produce smoother motion in the output. Default is disabled. Only manually controllable
* for MPEG2 and uncompressed video inputs.
* @see InputDeblockFilter
*/
public final String deblockFilterAsString() {
return deblockFilter;
}
/**
* Settings for decrypting any input files that you encrypt before you upload them to Amazon S3. MediaConvert can
* decrypt files only when you use AWS Key Management Service (KMS) to encrypt the data key that you use to encrypt
* your content.
*
* @return Settings for decrypting any input files that you encrypt before you upload them to Amazon S3.
* MediaConvert can decrypt files only when you use AWS Key Management Service (KMS) to encrypt the data key
* that you use to encrypt your content.
*/
public final InputDecryptionSettings decryptionSettings() {
return decryptionSettings;
}
/**
* Enable Denoise to filter noise from the input. Default is disabled. Only applicable to MPEG2, H.264, H.265, and
* uncompressed video inputs.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #denoiseFilter}
* will return {@link InputDenoiseFilter#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available
* from {@link #denoiseFilterAsString}.
*
*
* @return Enable Denoise to filter noise from the input. Default is disabled. Only applicable to MPEG2, H.264,
* H.265, and uncompressed video inputs.
* @see InputDenoiseFilter
*/
public final InputDenoiseFilter denoiseFilter() {
return InputDenoiseFilter.fromValue(denoiseFilter);
}
/**
* Enable Denoise to filter noise from the input. Default is disabled. Only applicable to MPEG2, H.264, H.265, and
* uncompressed video inputs.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #denoiseFilter}
* will return {@link InputDenoiseFilter#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available
* from {@link #denoiseFilterAsString}.
*
*
* @return Enable Denoise to filter noise from the input. Default is disabled. Only applicable to MPEG2, H.264,
* H.265, and uncompressed video inputs.
* @see InputDenoiseFilter
*/
public final String denoiseFilterAsString() {
return denoiseFilter;
}
/**
* Use this setting only when your video source has Dolby Vision studio mastering metadata that is carried in a
* separate XML file. Specify the Amazon S3 location for the metadata XML file. MediaConvert uses this file to
* provide global and frame-level metadata for Dolby Vision preprocessing. When you specify a file here and your
* input also has interleaved global and frame level metadata, MediaConvert ignores the interleaved metadata and
* uses only the the metadata from this external XML file. Note that your IAM service role must grant MediaConvert
* read permissions to this file. For more information, see
* https://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html.
*
* @return Use this setting only when your video source has Dolby Vision studio mastering metadata that is carried
* in a separate XML file. Specify the Amazon S3 location for the metadata XML file. MediaConvert uses this
* file to provide global and frame-level metadata for Dolby Vision preprocessing. When you specify a file
* here and your input also has interleaved global and frame level metadata, MediaConvert ignores the
* interleaved metadata and uses only the the metadata from this external XML file. Note that your IAM
* service role must grant MediaConvert read permissions to this file. For more information, see
* https://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html.
*/
public final String dolbyVisionMetadataXml() {
return dolbyVisionMetadataXml;
}
/**
* Specify the source file for your transcoding job. You can use multiple inputs in a single job. The service
* concatenates these inputs, in the order that you specify them in the job, to create the outputs. If your input
* format is IMF, specify your input by providing the path to your CPL. For example, "s3://bucket/vf/cpl.xml". If
* the CPL is in an incomplete IMP, make sure to use *Supplemental IMPs* to specify any supplemental IMPs that
* contain assets referenced by the CPL.
*
* @return Specify the source file for your transcoding job. You can use multiple inputs in a single job. The
* service concatenates these inputs, in the order that you specify them in the job, to create the outputs.
* If your input format is IMF, specify your input by providing the path to your CPL. For example,
* "s3://bucket/vf/cpl.xml". If the CPL is in an incomplete IMP, make sure to use *Supplemental IMPs* to
* specify any supplemental IMPs that contain assets referenced by the CPL.
*/
public final String fileInput() {
return fileInput;
}
/**
* Specify whether to apply input filtering to improve the video quality of your input. To apply filtering depending
* on your input type and quality: Choose Auto. To apply no filtering: Choose Disable. To apply filtering regardless
* of your input type and quality: Choose Force. When you do, you must also specify a value for Filter strength.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #filterEnable} will
* return {@link InputFilterEnable#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from
* {@link #filterEnableAsString}.
*
*
* @return Specify whether to apply input filtering to improve the video quality of your input. To apply filtering
* depending on your input type and quality: Choose Auto. To apply no filtering: Choose Disable. To apply
* filtering regardless of your input type and quality: Choose Force. When you do, you must also specify a
* value for Filter strength.
* @see InputFilterEnable
*/
public final InputFilterEnable filterEnable() {
return InputFilterEnable.fromValue(filterEnable);
}
/**
* Specify whether to apply input filtering to improve the video quality of your input. To apply filtering depending
* on your input type and quality: Choose Auto. To apply no filtering: Choose Disable. To apply filtering regardless
* of your input type and quality: Choose Force. When you do, you must also specify a value for Filter strength.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #filterEnable} will
* return {@link InputFilterEnable#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from
* {@link #filterEnableAsString}.
*
*
* @return Specify whether to apply input filtering to improve the video quality of your input. To apply filtering
* depending on your input type and quality: Choose Auto. To apply no filtering: Choose Disable. To apply
* filtering regardless of your input type and quality: Choose Force. When you do, you must also specify a
* value for Filter strength.
* @see InputFilterEnable
*/
public final String filterEnableAsString() {
return filterEnable;
}
/**
* Specify the strength of the input filter. To apply an automatic amount of filtering based the compression
* artifacts measured in your input: We recommend that you leave Filter strength blank and set Filter enable to
* Auto. To manually apply filtering: Enter a value from 1 to 5, where 1 is the least amount of filtering and 5 is
* the most. The value that you enter applies to the strength of the Deblock or Denoise filters, or to the strength
* of the Advanced input filter.
*
* @return Specify the strength of the input filter. To apply an automatic amount of filtering based the compression
* artifacts measured in your input: We recommend that you leave Filter strength blank and set Filter enable
* to Auto. To manually apply filtering: Enter a value from 1 to 5, where 1 is the least amount of filtering
* and 5 is the most. The value that you enter applies to the strength of the Deblock or Denoise filters, or
* to the strength of the Advanced input filter.
*/
public final Integer filterStrength() {
return filterStrength;
}
/**
* Enable the image inserter feature to include a graphic overlay on your video. Enable or disable this feature for
* each input individually. This setting is disabled by default.
*
* @return Enable the image inserter feature to include a graphic overlay on your video. Enable or disable this
* feature for each input individually. This setting is disabled by default.
*/
public final ImageInserter imageInserter() {
return imageInserter;
}
/**
* For responses, this returns true if the service returned a value for the InputClippings property. This DOES NOT
* check that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property).
* This is useful because the SDK will never return a null collection or map, but you may need to differentiate
* between the service returning nothing (or null) and the service returning an empty collection or map. For
* requests, this returns true if a value for the property was specified in the request builder, and false if a
* value was not specified.
*/
public final boolean hasInputClippings() {
return inputClippings != null && !(inputClippings instanceof SdkAutoConstructList);
}
/**
* Contains sets of start and end times that together specify a portion of the input to be used in the outputs. If
* you provide only a start time, the clip will be the entire input from that point to the end. If you provide only
* an end time, it will be the entire input up to that point. When you specify more than one input clip, the
* transcoding service creates the job outputs by stringing the clips together in the order you specify them.
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* This method will never return null. If you would like to know whether the service returned this field (so that
* you can differentiate between null and empty), you can use the {@link #hasInputClippings} method.
*
*
* @return Contains sets of start and end times that together specify a portion of the input to be used in the
* outputs. If you provide only a start time, the clip will be the entire input from that point to the end.
* If you provide only an end time, it will be the entire input up to that point. When you specify more than
* one input clip, the transcoding service creates the job outputs by stringing the clips together in the
* order you specify them.
*/
public final List inputClippings() {
return inputClippings;
}
/**
* When you have a progressive segmented frame (PsF) input, use this setting to flag the input as PsF. MediaConvert
* doesn't automatically detect PsF. Therefore, flagging your input as PsF results in better preservation of video
* quality when you do deinterlacing and frame rate conversion. If you don't specify, the default value is Auto.
* Auto is the correct setting for all inputs that are not PsF. Don't set this value to PsF when your input is
* interlaced. Doing so creates horizontal interlacing artifacts.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #inputScanType}
* will return {@link InputScanType#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from
* {@link #inputScanTypeAsString}.
*
*
* @return When you have a progressive segmented frame (PsF) input, use this setting to flag the input as PsF.
* MediaConvert doesn't automatically detect PsF. Therefore, flagging your input as PsF results in better
* preservation of video quality when you do deinterlacing and frame rate conversion. If you don't specify,
* the default value is Auto. Auto is the correct setting for all inputs that are not PsF. Don't set this
* value to PsF when your input is interlaced. Doing so creates horizontal interlacing artifacts.
* @see InputScanType
*/
public final InputScanType inputScanType() {
return InputScanType.fromValue(inputScanType);
}
/**
* When you have a progressive segmented frame (PsF) input, use this setting to flag the input as PsF. MediaConvert
* doesn't automatically detect PsF. Therefore, flagging your input as PsF results in better preservation of video
* quality when you do deinterlacing and frame rate conversion. If you don't specify, the default value is Auto.
* Auto is the correct setting for all inputs that are not PsF. Don't set this value to PsF when your input is
* interlaced. Doing so creates horizontal interlacing artifacts.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #inputScanType}
* will return {@link InputScanType#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from
* {@link #inputScanTypeAsString}.
*
*
* @return When you have a progressive segmented frame (PsF) input, use this setting to flag the input as PsF.
* MediaConvert doesn't automatically detect PsF. Therefore, flagging your input as PsF results in better
* preservation of video quality when you do deinterlacing and frame rate conversion. If you don't specify,
* the default value is Auto. Auto is the correct setting for all inputs that are not PsF. Don't set this
* value to PsF when your input is interlaced. Doing so creates horizontal interlacing artifacts.
* @see InputScanType
*/
public final String inputScanTypeAsString() {
return inputScanType;
}
/**
* Use Selection placement to define the video area in your output frame. The area outside of the rectangle that you
* specify here is black. If you specify a value here, it will override any value that you specify in the output
* setting Selection placement. If you specify a value here, this will override any AFD values in your input, even
* if you set Respond to AFD to Respond. If you specify a value here, this will ignore anything that you specify for
* the setting Scaling Behavior.
*
* @return Use Selection placement to define the video area in your output frame. The area outside of the rectangle
* that you specify here is black. If you specify a value here, it will override any value that you specify
* in the output setting Selection placement. If you specify a value here, this will override any AFD values
* in your input, even if you set Respond to AFD to Respond. If you specify a value here, this will ignore
* anything that you specify for the setting Scaling Behavior.
*/
public final Rectangle position() {
return position;
}
/**
* Use Program to select a specific program from within a multi-program transport stream. Note that Quad 4K is not
* currently supported. Default is the first program within the transport stream. If the program you specify doesn't
* exist, the transcoding service will use this default.
*
* @return Use Program to select a specific program from within a multi-program transport stream. Note that Quad 4K
* is not currently supported. Default is the first program within the transport stream. If the program you
* specify doesn't exist, the transcoding service will use this default.
*/
public final Integer programNumber() {
return programNumber;
}
/**
* Set PSI control for transport stream inputs to specify which data the demux process to scans. * Ignore PSI - Scan
* all PIDs for audio and video. * Use PSI - Scan only PSI data.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #psiControl} will
* return {@link InputPsiControl#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from
* {@link #psiControlAsString}.
*
*
* @return Set PSI control for transport stream inputs to specify which data the demux process to scans. * Ignore
* PSI - Scan all PIDs for audio and video. * Use PSI - Scan only PSI data.
* @see InputPsiControl
*/
public final InputPsiControl psiControl() {
return InputPsiControl.fromValue(psiControl);
}
/**
* Set PSI control for transport stream inputs to specify which data the demux process to scans. * Ignore PSI - Scan
* all PIDs for audio and video. * Use PSI - Scan only PSI data.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #psiControl} will
* return {@link InputPsiControl#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is available from
* {@link #psiControlAsString}.
*
*
* @return Set PSI control for transport stream inputs to specify which data the demux process to scans. * Ignore
* PSI - Scan all PIDs for audio and video. * Use PSI - Scan only PSI data.
* @see InputPsiControl
*/
public final String psiControlAsString() {
return psiControl;
}
/**
* For responses, this returns true if the service returned a value for the SupplementalImps property. This DOES NOT
* check that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property).
* This is useful because the SDK will never return a null collection or map, but you may need to differentiate
* between the service returning nothing (or null) and the service returning an empty collection or map. For
* requests, this returns true if a value for the property was specified in the request builder, and false if a
* value was not specified.
*/
public final boolean hasSupplementalImps() {
return supplementalImps != null && !(supplementalImps instanceof SdkAutoConstructList);
}
/**
* Provide a list of any necessary supplemental IMPs. You need supplemental IMPs if the CPL that you're using for
* your input is in an incomplete IMP. Specify either the supplemental IMP directories with a trailing slash or the
* ASSETMAP.xml files. For example ["s3://bucket/ov/", "s3://bucket/vf2/ASSETMAP.xml"]. You don't need to specify
* the IMP that contains your input CPL, because the service automatically detects it.
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* This method will never return null. If you would like to know whether the service returned this field (so that
* you can differentiate between null and empty), you can use the {@link #hasSupplementalImps} method.
*
*
* @return Provide a list of any necessary supplemental IMPs. You need supplemental IMPs if the CPL that you're
* using for your input is in an incomplete IMP. Specify either the supplemental IMP directories with a
* trailing slash or the ASSETMAP.xml files. For example ["s3://bucket/ov/",
* "s3://bucket/vf2/ASSETMAP.xml"]. You don't need to specify the IMP that contains your input CPL, because
* the service automatically detects it.
*/
public final List supplementalImps() {
return supplementalImps;
}
/**
* Use this Timecode source setting, located under the input settings, to specify how the service counts input video
* frames. This input frame count affects only the behavior of features that apply to a single input at a time, such
* as input clipping and synchronizing some captions formats. Choose Embedded to use the timecodes in your input
* video. Choose Start at zero to start the first frame at zero. Choose Specified start to start the first frame at
* the timecode that you specify in the setting Start timecode. If you don't specify a value for Timecode source,
* the service will use Embedded by default. For more information about timecodes, see
* https://docs.aws.amazon.com/console/mediaconvert/timecode.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #timecodeSource}
* will return {@link InputTimecodeSource#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is
* available from {@link #timecodeSourceAsString}.
*
*
* @return Use this Timecode source setting, located under the input settings, to specify how the service counts
* input video frames. This input frame count affects only the behavior of features that apply to a single
* input at a time, such as input clipping and synchronizing some captions formats. Choose Embedded to use
* the timecodes in your input video. Choose Start at zero to start the first frame at zero. Choose
* Specified start to start the first frame at the timecode that you specify in the setting Start timecode.
* If you don't specify a value for Timecode source, the service will use Embedded by default. For more
* information about timecodes, see https://docs.aws.amazon.com/console/mediaconvert/timecode.
* @see InputTimecodeSource
*/
public final InputTimecodeSource timecodeSource() {
return InputTimecodeSource.fromValue(timecodeSource);
}
/**
* Use this Timecode source setting, located under the input settings, to specify how the service counts input video
* frames. This input frame count affects only the behavior of features that apply to a single input at a time, such
* as input clipping and synchronizing some captions formats. Choose Embedded to use the timecodes in your input
* video. Choose Start at zero to start the first frame at zero. Choose Specified start to start the first frame at
* the timecode that you specify in the setting Start timecode. If you don't specify a value for Timecode source,
* the service will use Embedded by default. For more information about timecodes, see
* https://docs.aws.amazon.com/console/mediaconvert/timecode.
*
* If the service returns an enum value that is not available in the current SDK version, {@link #timecodeSource}
* will return {@link InputTimecodeSource#UNKNOWN_TO_SDK_VERSION}. The raw value returned by the service is
* available from {@link #timecodeSourceAsString}.
*
*
* @return Use this Timecode source setting, located under the input settings, to specify how the service counts
* input video frames. This input frame count affects only the behavior of features that apply to a single
* input at a time, such as input clipping and synchronizing some captions formats. Choose Embedded to use
* the timecodes in your input video. Choose Start at zero to start the first frame at zero. Choose
* Specified start to start the first frame at the timecode that you specify in the setting Start timecode.
* If you don't specify a value for Timecode source, the service will use Embedded by default. For more
* information about timecodes, see https://docs.aws.amazon.com/console/mediaconvert/timecode.
* @see InputTimecodeSource
*/
public final String timecodeSourceAsString() {
return timecodeSource;
}
/**
* Specify the timecode that you want the service to use for this input's initial frame. To use this setting, you
* must set the Timecode source setting, located under the input settings, to Specified start. For more information
* about timecodes, see https://docs.aws.amazon.com/console/mediaconvert/timecode.
*
* @return Specify the timecode that you want the service to use for this input's initial frame. To use this
* setting, you must set the Timecode source setting, located under the input settings, to Specified start.
* For more information about timecodes, see https://docs.aws.amazon.com/console/mediaconvert/timecode.
*/
public final String timecodeStart() {
return timecodeStart;
}
/**
* When you include Video generator, MediaConvert creates a video input with black frames. Use this setting if you
* do not have a video input or if you want to add black video frames before, or after, other inputs. You can
* specify Video generator, or you can specify an Input file, but you cannot specify both. For more information, see
* https://docs.aws.amazon.com/mediaconvert/latest/ug/video-generator.html
*
* @return When you include Video generator, MediaConvert creates a video input with black frames. Use this setting
* if you do not have a video input or if you want to add black video frames before, or after, other inputs.
* You can specify Video generator, or you can specify an Input file, but you cannot specify both. For more
* information, see https://docs.aws.amazon.com/mediaconvert/latest/ug/video-generator.html
*/
public final InputVideoGenerator videoGenerator() {
return videoGenerator;
}
/**
* For responses, this returns true if the service returned a value for the VideoOverlays property. This DOES NOT
* check that the value is non-empty (for which, you should check the {@code isEmpty()} method on the property).
* This is useful because the SDK will never return a null collection or map, but you may need to differentiate
* between the service returning nothing (or null) and the service returning an empty collection or map. For
* requests, this returns true if a value for the property was specified in the request builder, and false if a
* value was not specified.
*/
public final boolean hasVideoOverlays() {
return videoOverlays != null && !(videoOverlays instanceof SdkAutoConstructList);
}
/**
* Contains an array of video overlays.
*
* Attempts to modify the collection returned by this method will result in an UnsupportedOperationException.
*
*
* This method will never return null. If you would like to know whether the service returned this field (so that
* you can differentiate between null and empty), you can use the {@link #hasVideoOverlays} method.
*
*
* @return Contains an array of video overlays.
*/
public final List videoOverlays() {
return videoOverlays;
}
/**
* Input video selectors contain the video settings for the input. Each of your inputs can have up to one video
* selector.
*
* @return Input video selectors contain the video settings for the input. Each of your inputs can have up to one
* video selector.
*/
public final VideoSelector videoSelector() {
return videoSelector;
}
@Override
public Builder toBuilder() {
return new BuilderImpl(this);
}
public static Builder builder() {
return new BuilderImpl();
}
public static Class extends Builder> serializableBuilderClass() {
return BuilderImpl.class;
}
@Override
public final int hashCode() {
int hashCode = 1;
hashCode = 31 * hashCode + Objects.hashCode(advancedInputFilterAsString());
hashCode = 31 * hashCode + Objects.hashCode(advancedInputFilterSettings());
hashCode = 31 * hashCode + Objects.hashCode(hasAudioSelectorGroups() ? audioSelectorGroups() : null);
hashCode = 31 * hashCode + Objects.hashCode(hasAudioSelectors() ? audioSelectors() : null);
hashCode = 31 * hashCode + Objects.hashCode(hasCaptionSelectors() ? captionSelectors() : null);
hashCode = 31 * hashCode + Objects.hashCode(crop());
hashCode = 31 * hashCode + Objects.hashCode(deblockFilterAsString());
hashCode = 31 * hashCode + Objects.hashCode(decryptionSettings());
hashCode = 31 * hashCode + Objects.hashCode(denoiseFilterAsString());
hashCode = 31 * hashCode + Objects.hashCode(dolbyVisionMetadataXml());
hashCode = 31 * hashCode + Objects.hashCode(fileInput());
hashCode = 31 * hashCode + Objects.hashCode(filterEnableAsString());
hashCode = 31 * hashCode + Objects.hashCode(filterStrength());
hashCode = 31 * hashCode + Objects.hashCode(imageInserter());
hashCode = 31 * hashCode + Objects.hashCode(hasInputClippings() ? inputClippings() : null);
hashCode = 31 * hashCode + Objects.hashCode(inputScanTypeAsString());
hashCode = 31 * hashCode + Objects.hashCode(position());
hashCode = 31 * hashCode + Objects.hashCode(programNumber());
hashCode = 31 * hashCode + Objects.hashCode(psiControlAsString());
hashCode = 31 * hashCode + Objects.hashCode(hasSupplementalImps() ? supplementalImps() : null);
hashCode = 31 * hashCode + Objects.hashCode(timecodeSourceAsString());
hashCode = 31 * hashCode + Objects.hashCode(timecodeStart());
hashCode = 31 * hashCode + Objects.hashCode(videoGenerator());
hashCode = 31 * hashCode + Objects.hashCode(hasVideoOverlays() ? videoOverlays() : null);
hashCode = 31 * hashCode + Objects.hashCode(videoSelector());
return hashCode;
}
@Override
public final boolean equals(Object obj) {
return equalsBySdkFields(obj);
}
@Override
public final boolean equalsBySdkFields(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (!(obj instanceof Input)) {
return false;
}
Input other = (Input) obj;
return Objects.equals(advancedInputFilterAsString(), other.advancedInputFilterAsString())
&& Objects.equals(advancedInputFilterSettings(), other.advancedInputFilterSettings())
&& hasAudioSelectorGroups() == other.hasAudioSelectorGroups()
&& Objects.equals(audioSelectorGroups(), other.audioSelectorGroups())
&& hasAudioSelectors() == other.hasAudioSelectors() && Objects.equals(audioSelectors(), other.audioSelectors())
&& hasCaptionSelectors() == other.hasCaptionSelectors()
&& Objects.equals(captionSelectors(), other.captionSelectors()) && Objects.equals(crop(), other.crop())
&& Objects.equals(deblockFilterAsString(), other.deblockFilterAsString())
&& Objects.equals(decryptionSettings(), other.decryptionSettings())
&& Objects.equals(denoiseFilterAsString(), other.denoiseFilterAsString())
&& Objects.equals(dolbyVisionMetadataXml(), other.dolbyVisionMetadataXml())
&& Objects.equals(fileInput(), other.fileInput())
&& Objects.equals(filterEnableAsString(), other.filterEnableAsString())
&& Objects.equals(filterStrength(), other.filterStrength())
&& Objects.equals(imageInserter(), other.imageInserter()) && hasInputClippings() == other.hasInputClippings()
&& Objects.equals(inputClippings(), other.inputClippings())
&& Objects.equals(inputScanTypeAsString(), other.inputScanTypeAsString())
&& Objects.equals(position(), other.position()) && Objects.equals(programNumber(), other.programNumber())
&& Objects.equals(psiControlAsString(), other.psiControlAsString())
&& hasSupplementalImps() == other.hasSupplementalImps()
&& Objects.equals(supplementalImps(), other.supplementalImps())
&& Objects.equals(timecodeSourceAsString(), other.timecodeSourceAsString())
&& Objects.equals(timecodeStart(), other.timecodeStart())
&& Objects.equals(videoGenerator(), other.videoGenerator()) && hasVideoOverlays() == other.hasVideoOverlays()
&& Objects.equals(videoOverlays(), other.videoOverlays())
&& Objects.equals(videoSelector(), other.videoSelector());
}
/**
* 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.
*/
@Override
public final String toString() {
return ToString.builder("Input").add("AdvancedInputFilter", advancedInputFilterAsString())
.add("AdvancedInputFilterSettings", advancedInputFilterSettings())
.add("AudioSelectorGroups", hasAudioSelectorGroups() ? audioSelectorGroups() : null)
.add("AudioSelectors", hasAudioSelectors() ? audioSelectors() : null)
.add("CaptionSelectors", hasCaptionSelectors() ? captionSelectors() : null).add("Crop", crop())
.add("DeblockFilter", deblockFilterAsString()).add("DecryptionSettings", decryptionSettings())
.add("DenoiseFilter", denoiseFilterAsString()).add("DolbyVisionMetadataXml", dolbyVisionMetadataXml())
.add("FileInput", fileInput()).add("FilterEnable", filterEnableAsString())
.add("FilterStrength", filterStrength()).add("ImageInserter", imageInserter())
.add("InputClippings", hasInputClippings() ? inputClippings() : null)
.add("InputScanType", inputScanTypeAsString()).add("Position", position()).add("ProgramNumber", programNumber())
.add("PsiControl", psiControlAsString())
.add("SupplementalImps", hasSupplementalImps() ? supplementalImps() : null)
.add("TimecodeSource", timecodeSourceAsString()).add("TimecodeStart", timecodeStart())
.add("VideoGenerator", videoGenerator()).add("VideoOverlays", hasVideoOverlays() ? videoOverlays() : null)
.add("VideoSelector", videoSelector()).build();
}
public final Optional getValueForField(String fieldName, Class clazz) {
switch (fieldName) {
case "AdvancedInputFilter":
return Optional.ofNullable(clazz.cast(advancedInputFilterAsString()));
case "AdvancedInputFilterSettings":
return Optional.ofNullable(clazz.cast(advancedInputFilterSettings()));
case "AudioSelectorGroups":
return Optional.ofNullable(clazz.cast(audioSelectorGroups()));
case "AudioSelectors":
return Optional.ofNullable(clazz.cast(audioSelectors()));
case "CaptionSelectors":
return Optional.ofNullable(clazz.cast(captionSelectors()));
case "Crop":
return Optional.ofNullable(clazz.cast(crop()));
case "DeblockFilter":
return Optional.ofNullable(clazz.cast(deblockFilterAsString()));
case "DecryptionSettings":
return Optional.ofNullable(clazz.cast(decryptionSettings()));
case "DenoiseFilter":
return Optional.ofNullable(clazz.cast(denoiseFilterAsString()));
case "DolbyVisionMetadataXml":
return Optional.ofNullable(clazz.cast(dolbyVisionMetadataXml()));
case "FileInput":
return Optional.ofNullable(clazz.cast(fileInput()));
case "FilterEnable":
return Optional.ofNullable(clazz.cast(filterEnableAsString()));
case "FilterStrength":
return Optional.ofNullable(clazz.cast(filterStrength()));
case "ImageInserter":
return Optional.ofNullable(clazz.cast(imageInserter()));
case "InputClippings":
return Optional.ofNullable(clazz.cast(inputClippings()));
case "InputScanType":
return Optional.ofNullable(clazz.cast(inputScanTypeAsString()));
case "Position":
return Optional.ofNullable(clazz.cast(position()));
case "ProgramNumber":
return Optional.ofNullable(clazz.cast(programNumber()));
case "PsiControl":
return Optional.ofNullable(clazz.cast(psiControlAsString()));
case "SupplementalImps":
return Optional.ofNullable(clazz.cast(supplementalImps()));
case "TimecodeSource":
return Optional.ofNullable(clazz.cast(timecodeSourceAsString()));
case "TimecodeStart":
return Optional.ofNullable(clazz.cast(timecodeStart()));
case "VideoGenerator":
return Optional.ofNullable(clazz.cast(videoGenerator()));
case "VideoOverlays":
return Optional.ofNullable(clazz.cast(videoOverlays()));
case "VideoSelector":
return Optional.ofNullable(clazz.cast(videoSelector()));
default:
return Optional.empty();
}
}
@Override
public final List> sdkFields() {
return SDK_FIELDS;
}
private static Function getter(Function g) {
return obj -> g.apply((Input) obj);
}
private static BiConsumer setter(BiConsumer s) {
return (obj, val) -> s.accept((Builder) obj, val);
}
public interface Builder extends SdkPojo, CopyableBuilder {
/**
* Use to remove noise, blocking, blurriness, or ringing from your input as a pre-filter step before encoding.
* The Advanced input filter removes more types of compression artifacts and is an improvement when compared to
* basic Deblock and Denoise filters. To remove video compression artifacts from your input and improve the
* video quality: Choose Enabled. Additionally, this filter can help increase the video quality of your output
* relative to its bitrate, since noisy inputs are more complex and require more bits to encode. To help restore
* loss of detail after applying the filter, you can optionally add texture or sharpening as an additional step.
* Jobs that use this feature incur pro-tier pricing. To not apply advanced input filtering: Choose Disabled.
* Note that you can still apply basic filtering with Deblock and Denoise.
*
* @param advancedInputFilter
* Use to remove noise, blocking, blurriness, or ringing from your input as a pre-filter step before
* encoding. The Advanced input filter removes more types of compression artifacts and is an improvement
* when compared to basic Deblock and Denoise filters. To remove video compression artifacts from your
* input and improve the video quality: Choose Enabled. Additionally, this filter can help increase the
* video quality of your output relative to its bitrate, since noisy inputs are more complex and require
* more bits to encode. To help restore loss of detail after applying the filter, you can optionally add
* texture or sharpening as an additional step. Jobs that use this feature incur pro-tier pricing. To not
* apply advanced input filtering: Choose Disabled. Note that you can still apply basic filtering with
* Deblock and Denoise.
* @see AdvancedInputFilter
* @return Returns a reference to this object so that method calls can be chained together.
* @see AdvancedInputFilter
*/
Builder advancedInputFilter(String advancedInputFilter);
/**
* Use to remove noise, blocking, blurriness, or ringing from your input as a pre-filter step before encoding.
* The Advanced input filter removes more types of compression artifacts and is an improvement when compared to
* basic Deblock and Denoise filters. To remove video compression artifacts from your input and improve the
* video quality: Choose Enabled. Additionally, this filter can help increase the video quality of your output
* relative to its bitrate, since noisy inputs are more complex and require more bits to encode. To help restore
* loss of detail after applying the filter, you can optionally add texture or sharpening as an additional step.
* Jobs that use this feature incur pro-tier pricing. To not apply advanced input filtering: Choose Disabled.
* Note that you can still apply basic filtering with Deblock and Denoise.
*
* @param advancedInputFilter
* Use to remove noise, blocking, blurriness, or ringing from your input as a pre-filter step before
* encoding. The Advanced input filter removes more types of compression artifacts and is an improvement
* when compared to basic Deblock and Denoise filters. To remove video compression artifacts from your
* input and improve the video quality: Choose Enabled. Additionally, this filter can help increase the
* video quality of your output relative to its bitrate, since noisy inputs are more complex and require
* more bits to encode. To help restore loss of detail after applying the filter, you can optionally add
* texture or sharpening as an additional step. Jobs that use this feature incur pro-tier pricing. To not
* apply advanced input filtering: Choose Disabled. Note that you can still apply basic filtering with
* Deblock and Denoise.
* @see AdvancedInputFilter
* @return Returns a reference to this object so that method calls can be chained together.
* @see AdvancedInputFilter
*/
Builder advancedInputFilter(AdvancedInputFilter advancedInputFilter);
/**
* Optional settings for Advanced input filter when you set Advanced input filter to Enabled.
*
* @param advancedInputFilterSettings
* Optional settings for Advanced input filter when you set Advanced input filter to Enabled.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder advancedInputFilterSettings(AdvancedInputFilterSettings advancedInputFilterSettings);
/**
* Optional settings for Advanced input filter when you set Advanced input filter to Enabled. This is a
* convenience method that creates an instance of the {@link AdvancedInputFilterSettings.Builder} avoiding the
* need to create one manually via {@link AdvancedInputFilterSettings#builder()}.
*
*
* When the {@link Consumer} completes, {@link AdvancedInputFilterSettings.Builder#build()} is called
* immediately and its result is passed to {@link #advancedInputFilterSettings(AdvancedInputFilterSettings)}.
*
* @param advancedInputFilterSettings
* a consumer that will call methods on {@link AdvancedInputFilterSettings.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #advancedInputFilterSettings(AdvancedInputFilterSettings)
*/
default Builder advancedInputFilterSettings(Consumer advancedInputFilterSettings) {
return advancedInputFilterSettings(AdvancedInputFilterSettings.builder().applyMutation(advancedInputFilterSettings)
.build());
}
/**
* Use audio selector groups to combine multiple sidecar audio inputs so that you can assign them to a single
* output audio tab. Note that, if you're working with embedded audio, it's simpler to assign multiple input
* tracks into a single audio selector rather than use an audio selector group.
*
* @param audioSelectorGroups
* Use audio selector groups to combine multiple sidecar audio inputs so that you can assign them to a
* single output audio tab. Note that, if you're working with embedded audio, it's simpler to assign
* multiple input tracks into a single audio selector rather than use an audio selector group.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder audioSelectorGroups(Map audioSelectorGroups);
/**
* Use Audio selectors to specify a track or set of tracks from the input that you will use in your outputs. You
* can use multiple Audio selectors per input.
*
* @param audioSelectors
* Use Audio selectors to specify a track or set of tracks from the input that you will use in your
* outputs. You can use multiple Audio selectors per input.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder audioSelectors(Map audioSelectors);
/**
* Use captions selectors to specify the captions data from your input that you use in your outputs. You can use
* up to 100 captions selectors per input.
*
* @param captionSelectors
* Use captions selectors to specify the captions data from your input that you use in your outputs. You
* can use up to 100 captions selectors per input.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder captionSelectors(Map captionSelectors);
/**
* Use Cropping selection to specify the video area that the service will include in the output video frame. If
* you specify a value here, it will override any value that you specify in the output setting Cropping
* selection.
*
* @param crop
* Use Cropping selection to specify the video area that the service will include in the output video
* frame. If you specify a value here, it will override any value that you specify in the output setting
* Cropping selection.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder crop(Rectangle crop);
/**
* Use Cropping selection to specify the video area that the service will include in the output video frame. If
* you specify a value here, it will override any value that you specify in the output setting Cropping
* selection. This is a convenience method that creates an instance of the {@link Rectangle.Builder} avoiding
* the need to create one manually via {@link Rectangle#builder()}.
*
*
* When the {@link Consumer} completes, {@link Rectangle.Builder#build()} is called immediately and its result
* is passed to {@link #crop(Rectangle)}.
*
* @param crop
* a consumer that will call methods on {@link Rectangle.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #crop(Rectangle)
*/
default Builder crop(Consumer crop) {
return crop(Rectangle.builder().applyMutation(crop).build());
}
/**
* Enable Deblock to produce smoother motion in the output. Default is disabled. Only manually controllable for
* MPEG2 and uncompressed video inputs.
*
* @param deblockFilter
* Enable Deblock to produce smoother motion in the output. Default is disabled. Only manually
* controllable for MPEG2 and uncompressed video inputs.
* @see InputDeblockFilter
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputDeblockFilter
*/
Builder deblockFilter(String deblockFilter);
/**
* Enable Deblock to produce smoother motion in the output. Default is disabled. Only manually controllable for
* MPEG2 and uncompressed video inputs.
*
* @param deblockFilter
* Enable Deblock to produce smoother motion in the output. Default is disabled. Only manually
* controllable for MPEG2 and uncompressed video inputs.
* @see InputDeblockFilter
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputDeblockFilter
*/
Builder deblockFilter(InputDeblockFilter deblockFilter);
/**
* Settings for decrypting any input files that you encrypt before you upload them to Amazon S3. MediaConvert
* can decrypt files only when you use AWS Key Management Service (KMS) to encrypt the data key that you use to
* encrypt your content.
*
* @param decryptionSettings
* Settings for decrypting any input files that you encrypt before you upload them to Amazon S3.
* MediaConvert can decrypt files only when you use AWS Key Management Service (KMS) to encrypt the data
* key that you use to encrypt your content.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder decryptionSettings(InputDecryptionSettings decryptionSettings);
/**
* Settings for decrypting any input files that you encrypt before you upload them to Amazon S3. MediaConvert
* can decrypt files only when you use AWS Key Management Service (KMS) to encrypt the data key that you use to
* encrypt your content. This is a convenience method that creates an instance of the
* {@link InputDecryptionSettings.Builder} avoiding the need to create one manually via
* {@link InputDecryptionSettings#builder()}.
*
*
* When the {@link Consumer} completes, {@link InputDecryptionSettings.Builder#build()} is called immediately
* and its result is passed to {@link #decryptionSettings(InputDecryptionSettings)}.
*
* @param decryptionSettings
* a consumer that will call methods on {@link InputDecryptionSettings.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #decryptionSettings(InputDecryptionSettings)
*/
default Builder decryptionSettings(Consumer decryptionSettings) {
return decryptionSettings(InputDecryptionSettings.builder().applyMutation(decryptionSettings).build());
}
/**
* Enable Denoise to filter noise from the input. Default is disabled. Only applicable to MPEG2, H.264, H.265,
* and uncompressed video inputs.
*
* @param denoiseFilter
* Enable Denoise to filter noise from the input. Default is disabled. Only applicable to MPEG2, H.264,
* H.265, and uncompressed video inputs.
* @see InputDenoiseFilter
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputDenoiseFilter
*/
Builder denoiseFilter(String denoiseFilter);
/**
* Enable Denoise to filter noise from the input. Default is disabled. Only applicable to MPEG2, H.264, H.265,
* and uncompressed video inputs.
*
* @param denoiseFilter
* Enable Denoise to filter noise from the input. Default is disabled. Only applicable to MPEG2, H.264,
* H.265, and uncompressed video inputs.
* @see InputDenoiseFilter
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputDenoiseFilter
*/
Builder denoiseFilter(InputDenoiseFilter denoiseFilter);
/**
* Use this setting only when your video source has Dolby Vision studio mastering metadata that is carried in a
* separate XML file. Specify the Amazon S3 location for the metadata XML file. MediaConvert uses this file to
* provide global and frame-level metadata for Dolby Vision preprocessing. When you specify a file here and your
* input also has interleaved global and frame level metadata, MediaConvert ignores the interleaved metadata and
* uses only the the metadata from this external XML file. Note that your IAM service role must grant
* MediaConvert read permissions to this file. For more information, see
* https://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html.
*
* @param dolbyVisionMetadataXml
* Use this setting only when your video source has Dolby Vision studio mastering metadata that is
* carried in a separate XML file. Specify the Amazon S3 location for the metadata XML file. MediaConvert
* uses this file to provide global and frame-level metadata for Dolby Vision preprocessing. When you
* specify a file here and your input also has interleaved global and frame level metadata, MediaConvert
* ignores the interleaved metadata and uses only the the metadata from this external XML file. Note that
* your IAM service role must grant MediaConvert read permissions to this file. For more information, see
* https://docs.aws.amazon.com/mediaconvert/latest/ug/iam-role.html.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder dolbyVisionMetadataXml(String dolbyVisionMetadataXml);
/**
* Specify the source file for your transcoding job. You can use multiple inputs in a single job. The service
* concatenates these inputs, in the order that you specify them in the job, to create the outputs. If your
* input format is IMF, specify your input by providing the path to your CPL. For example,
* "s3://bucket/vf/cpl.xml". If the CPL is in an incomplete IMP, make sure to use *Supplemental IMPs* to specify
* any supplemental IMPs that contain assets referenced by the CPL.
*
* @param fileInput
* Specify the source file for your transcoding job. You can use multiple inputs in a single job. The
* service concatenates these inputs, in the order that you specify them in the job, to create the
* outputs. If your input format is IMF, specify your input by providing the path to your CPL. For
* example, "s3://bucket/vf/cpl.xml". If the CPL is in an incomplete IMP, make sure to use *Supplemental
* IMPs* to specify any supplemental IMPs that contain assets referenced by the CPL.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder fileInput(String fileInput);
/**
* Specify whether to apply input filtering to improve the video quality of your input. To apply filtering
* depending on your input type and quality: Choose Auto. To apply no filtering: Choose Disable. To apply
* filtering regardless of your input type and quality: Choose Force. When you do, you must also specify a value
* for Filter strength.
*
* @param filterEnable
* Specify whether to apply input filtering to improve the video quality of your input. To apply
* filtering depending on your input type and quality: Choose Auto. To apply no filtering: Choose
* Disable. To apply filtering regardless of your input type and quality: Choose Force. When you do, you
* must also specify a value for Filter strength.
* @see InputFilterEnable
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputFilterEnable
*/
Builder filterEnable(String filterEnable);
/**
* Specify whether to apply input filtering to improve the video quality of your input. To apply filtering
* depending on your input type and quality: Choose Auto. To apply no filtering: Choose Disable. To apply
* filtering regardless of your input type and quality: Choose Force. When you do, you must also specify a value
* for Filter strength.
*
* @param filterEnable
* Specify whether to apply input filtering to improve the video quality of your input. To apply
* filtering depending on your input type and quality: Choose Auto. To apply no filtering: Choose
* Disable. To apply filtering regardless of your input type and quality: Choose Force. When you do, you
* must also specify a value for Filter strength.
* @see InputFilterEnable
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputFilterEnable
*/
Builder filterEnable(InputFilterEnable filterEnable);
/**
* Specify the strength of the input filter. To apply an automatic amount of filtering based the compression
* artifacts measured in your input: We recommend that you leave Filter strength blank and set Filter enable to
* Auto. To manually apply filtering: Enter a value from 1 to 5, where 1 is the least amount of filtering and 5
* is the most. The value that you enter applies to the strength of the Deblock or Denoise filters, or to the
* strength of the Advanced input filter.
*
* @param filterStrength
* Specify the strength of the input filter. To apply an automatic amount of filtering based the
* compression artifacts measured in your input: We recommend that you leave Filter strength blank and
* set Filter enable to Auto. To manually apply filtering: Enter a value from 1 to 5, where 1 is the
* least amount of filtering and 5 is the most. The value that you enter applies to the strength of the
* Deblock or Denoise filters, or to the strength of the Advanced input filter.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder filterStrength(Integer filterStrength);
/**
* Enable the image inserter feature to include a graphic overlay on your video. Enable or disable this feature
* for each input individually. This setting is disabled by default.
*
* @param imageInserter
* Enable the image inserter feature to include a graphic overlay on your video. Enable or disable this
* feature for each input individually. This setting is disabled by default.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder imageInserter(ImageInserter imageInserter);
/**
* Enable the image inserter feature to include a graphic overlay on your video. Enable or disable this feature
* for each input individually. This setting is disabled by default. This is a convenience method that creates
* an instance of the {@link ImageInserter.Builder} avoiding the need to create one manually via
* {@link ImageInserter#builder()}.
*
*
* When the {@link Consumer} completes, {@link ImageInserter.Builder#build()} is called immediately and its
* result is passed to {@link #imageInserter(ImageInserter)}.
*
* @param imageInserter
* a consumer that will call methods on {@link ImageInserter.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #imageInserter(ImageInserter)
*/
default Builder imageInserter(Consumer imageInserter) {
return imageInserter(ImageInserter.builder().applyMutation(imageInserter).build());
}
/**
* Contains sets of start and end times that together specify a portion of the input to be used in the outputs.
* If you provide only a start time, the clip will be the entire input from that point to the end. If you
* provide only an end time, it will be the entire input up to that point. When you specify more than one input
* clip, the transcoding service creates the job outputs by stringing the clips together in the order you
* specify them.
*
* @param inputClippings
* Contains sets of start and end times that together specify a portion of the input to be used in the
* outputs. If you provide only a start time, the clip will be the entire input from that point to the
* end. If you provide only an end time, it will be the entire input up to that point. When you specify
* more than one input clip, the transcoding service creates the job outputs by stringing the clips
* together in the order you specify them.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder inputClippings(Collection inputClippings);
/**
* Contains sets of start and end times that together specify a portion of the input to be used in the outputs.
* If you provide only a start time, the clip will be the entire input from that point to the end. If you
* provide only an end time, it will be the entire input up to that point. When you specify more than one input
* clip, the transcoding service creates the job outputs by stringing the clips together in the order you
* specify them.
*
* @param inputClippings
* Contains sets of start and end times that together specify a portion of the input to be used in the
* outputs. If you provide only a start time, the clip will be the entire input from that point to the
* end. If you provide only an end time, it will be the entire input up to that point. When you specify
* more than one input clip, the transcoding service creates the job outputs by stringing the clips
* together in the order you specify them.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder inputClippings(InputClipping... inputClippings);
/**
* Contains sets of start and end times that together specify a portion of the input to be used in the outputs.
* If you provide only a start time, the clip will be the entire input from that point to the end. If you
* provide only an end time, it will be the entire input up to that point. When you specify more than one input
* clip, the transcoding service creates the job outputs by stringing the clips together in the order you
* specify them. This is a convenience method that creates an instance of the
* {@link software.amazon.awssdk.services.mediaconvert.model.InputClipping.Builder} avoiding the need to create
* one manually via {@link software.amazon.awssdk.services.mediaconvert.model.InputClipping#builder()}.
*
*
* When the {@link Consumer} completes,
* {@link software.amazon.awssdk.services.mediaconvert.model.InputClipping.Builder#build()} is called
* immediately and its result is passed to {@link #inputClippings(List)}.
*
* @param inputClippings
* a consumer that will call methods on
* {@link software.amazon.awssdk.services.mediaconvert.model.InputClipping.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #inputClippings(java.util.Collection)
*/
Builder inputClippings(Consumer... inputClippings);
/**
* When you have a progressive segmented frame (PsF) input, use this setting to flag the input as PsF.
* MediaConvert doesn't automatically detect PsF. Therefore, flagging your input as PsF results in better
* preservation of video quality when you do deinterlacing and frame rate conversion. If you don't specify, the
* default value is Auto. Auto is the correct setting for all inputs that are not PsF. Don't set this value to
* PsF when your input is interlaced. Doing so creates horizontal interlacing artifacts.
*
* @param inputScanType
* When you have a progressive segmented frame (PsF) input, use this setting to flag the input as PsF.
* MediaConvert doesn't automatically detect PsF. Therefore, flagging your input as PsF results in better
* preservation of video quality when you do deinterlacing and frame rate conversion. If you don't
* specify, the default value is Auto. Auto is the correct setting for all inputs that are not PsF. Don't
* set this value to PsF when your input is interlaced. Doing so creates horizontal interlacing
* artifacts.
* @see InputScanType
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputScanType
*/
Builder inputScanType(String inputScanType);
/**
* When you have a progressive segmented frame (PsF) input, use this setting to flag the input as PsF.
* MediaConvert doesn't automatically detect PsF. Therefore, flagging your input as PsF results in better
* preservation of video quality when you do deinterlacing and frame rate conversion. If you don't specify, the
* default value is Auto. Auto is the correct setting for all inputs that are not PsF. Don't set this value to
* PsF when your input is interlaced. Doing so creates horizontal interlacing artifacts.
*
* @param inputScanType
* When you have a progressive segmented frame (PsF) input, use this setting to flag the input as PsF.
* MediaConvert doesn't automatically detect PsF. Therefore, flagging your input as PsF results in better
* preservation of video quality when you do deinterlacing and frame rate conversion. If you don't
* specify, the default value is Auto. Auto is the correct setting for all inputs that are not PsF. Don't
* set this value to PsF when your input is interlaced. Doing so creates horizontal interlacing
* artifacts.
* @see InputScanType
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputScanType
*/
Builder inputScanType(InputScanType inputScanType);
/**
* Use Selection placement to define the video area in your output frame. The area outside of the rectangle that
* you specify here is black. If you specify a value here, it will override any value that you specify in the
* output setting Selection placement. If you specify a value here, this will override any AFD values in your
* input, even if you set Respond to AFD to Respond. If you specify a value here, this will ignore anything that
* you specify for the setting Scaling Behavior.
*
* @param position
* Use Selection placement to define the video area in your output frame. The area outside of the
* rectangle that you specify here is black. If you specify a value here, it will override any value that
* you specify in the output setting Selection placement. If you specify a value here, this will override
* any AFD values in your input, even if you set Respond to AFD to Respond. If you specify a value here,
* this will ignore anything that you specify for the setting Scaling Behavior.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder position(Rectangle position);
/**
* Use Selection placement to define the video area in your output frame. The area outside of the rectangle that
* you specify here is black. If you specify a value here, it will override any value that you specify in the
* output setting Selection placement. If you specify a value here, this will override any AFD values in your
* input, even if you set Respond to AFD to Respond. If you specify a value here, this will ignore anything that
* you specify for the setting Scaling Behavior. This is a convenience method that creates an instance of the
* {@link Rectangle.Builder} avoiding the need to create one manually via {@link Rectangle#builder()}.
*
*
* When the {@link Consumer} completes, {@link Rectangle.Builder#build()} is called immediately and its result
* is passed to {@link #position(Rectangle)}.
*
* @param position
* a consumer that will call methods on {@link Rectangle.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #position(Rectangle)
*/
default Builder position(Consumer position) {
return position(Rectangle.builder().applyMutation(position).build());
}
/**
* Use Program to select a specific program from within a multi-program transport stream. Note that Quad 4K is
* not currently supported. Default is the first program within the transport stream. If the program you specify
* doesn't exist, the transcoding service will use this default.
*
* @param programNumber
* Use Program to select a specific program from within a multi-program transport stream. Note that Quad
* 4K is not currently supported. Default is the first program within the transport stream. If the
* program you specify doesn't exist, the transcoding service will use this default.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder programNumber(Integer programNumber);
/**
* Set PSI control for transport stream inputs to specify which data the demux process to scans. * Ignore PSI -
* Scan all PIDs for audio and video. * Use PSI - Scan only PSI data.
*
* @param psiControl
* Set PSI control for transport stream inputs to specify which data the demux process to scans. * Ignore
* PSI - Scan all PIDs for audio and video. * Use PSI - Scan only PSI data.
* @see InputPsiControl
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputPsiControl
*/
Builder psiControl(String psiControl);
/**
* Set PSI control for transport stream inputs to specify which data the demux process to scans. * Ignore PSI -
* Scan all PIDs for audio and video. * Use PSI - Scan only PSI data.
*
* @param psiControl
* Set PSI control for transport stream inputs to specify which data the demux process to scans. * Ignore
* PSI - Scan all PIDs for audio and video. * Use PSI - Scan only PSI data.
* @see InputPsiControl
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputPsiControl
*/
Builder psiControl(InputPsiControl psiControl);
/**
* Provide a list of any necessary supplemental IMPs. You need supplemental IMPs if the CPL that you're using
* for your input is in an incomplete IMP. Specify either the supplemental IMP directories with a trailing slash
* or the ASSETMAP.xml files. For example ["s3://bucket/ov/", "s3://bucket/vf2/ASSETMAP.xml"]. You don't need to
* specify the IMP that contains your input CPL, because the service automatically detects it.
*
* @param supplementalImps
* Provide a list of any necessary supplemental IMPs. You need supplemental IMPs if the CPL that you're
* using for your input is in an incomplete IMP. Specify either the supplemental IMP directories with a
* trailing slash or the ASSETMAP.xml files. For example ["s3://bucket/ov/",
* "s3://bucket/vf2/ASSETMAP.xml"]. You don't need to specify the IMP that contains your input CPL,
* because the service automatically detects it.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder supplementalImps(Collection supplementalImps);
/**
* Provide a list of any necessary supplemental IMPs. You need supplemental IMPs if the CPL that you're using
* for your input is in an incomplete IMP. Specify either the supplemental IMP directories with a trailing slash
* or the ASSETMAP.xml files. For example ["s3://bucket/ov/", "s3://bucket/vf2/ASSETMAP.xml"]. You don't need to
* specify the IMP that contains your input CPL, because the service automatically detects it.
*
* @param supplementalImps
* Provide a list of any necessary supplemental IMPs. You need supplemental IMPs if the CPL that you're
* using for your input is in an incomplete IMP. Specify either the supplemental IMP directories with a
* trailing slash or the ASSETMAP.xml files. For example ["s3://bucket/ov/",
* "s3://bucket/vf2/ASSETMAP.xml"]. You don't need to specify the IMP that contains your input CPL,
* because the service automatically detects it.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder supplementalImps(String... supplementalImps);
/**
* Use this Timecode source setting, located under the input settings, to specify how the service counts input
* video frames. This input frame count affects only the behavior of features that apply to a single input at a
* time, such as input clipping and synchronizing some captions formats. Choose Embedded to use the timecodes in
* your input video. Choose Start at zero to start the first frame at zero. Choose Specified start to start the
* first frame at the timecode that you specify in the setting Start timecode. If you don't specify a value for
* Timecode source, the service will use Embedded by default. For more information about timecodes, see
* https://docs.aws.amazon.com/console/mediaconvert/timecode.
*
* @param timecodeSource
* Use this Timecode source setting, located under the input settings, to specify how the service counts
* input video frames. This input frame count affects only the behavior of features that apply to a
* single input at a time, such as input clipping and synchronizing some captions formats. Choose
* Embedded to use the timecodes in your input video. Choose Start at zero to start the first frame at
* zero. Choose Specified start to start the first frame at the timecode that you specify in the setting
* Start timecode. If you don't specify a value for Timecode source, the service will use Embedded by
* default. For more information about timecodes, see
* https://docs.aws.amazon.com/console/mediaconvert/timecode.
* @see InputTimecodeSource
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputTimecodeSource
*/
Builder timecodeSource(String timecodeSource);
/**
* Use this Timecode source setting, located under the input settings, to specify how the service counts input
* video frames. This input frame count affects only the behavior of features that apply to a single input at a
* time, such as input clipping and synchronizing some captions formats. Choose Embedded to use the timecodes in
* your input video. Choose Start at zero to start the first frame at zero. Choose Specified start to start the
* first frame at the timecode that you specify in the setting Start timecode. If you don't specify a value for
* Timecode source, the service will use Embedded by default. For more information about timecodes, see
* https://docs.aws.amazon.com/console/mediaconvert/timecode.
*
* @param timecodeSource
* Use this Timecode source setting, located under the input settings, to specify how the service counts
* input video frames. This input frame count affects only the behavior of features that apply to a
* single input at a time, such as input clipping and synchronizing some captions formats. Choose
* Embedded to use the timecodes in your input video. Choose Start at zero to start the first frame at
* zero. Choose Specified start to start the first frame at the timecode that you specify in the setting
* Start timecode. If you don't specify a value for Timecode source, the service will use Embedded by
* default. For more information about timecodes, see
* https://docs.aws.amazon.com/console/mediaconvert/timecode.
* @see InputTimecodeSource
* @return Returns a reference to this object so that method calls can be chained together.
* @see InputTimecodeSource
*/
Builder timecodeSource(InputTimecodeSource timecodeSource);
/**
* Specify the timecode that you want the service to use for this input's initial frame. To use this setting,
* you must set the Timecode source setting, located under the input settings, to Specified start. For more
* information about timecodes, see https://docs.aws.amazon.com/console/mediaconvert/timecode.
*
* @param timecodeStart
* Specify the timecode that you want the service to use for this input's initial frame. To use this
* setting, you must set the Timecode source setting, located under the input settings, to Specified
* start. For more information about timecodes, see
* https://docs.aws.amazon.com/console/mediaconvert/timecode.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder timecodeStart(String timecodeStart);
/**
* When you include Video generator, MediaConvert creates a video input with black frames. Use this setting if
* you do not have a video input or if you want to add black video frames before, or after, other inputs. You
* can specify Video generator, or you can specify an Input file, but you cannot specify both. For more
* information, see https://docs.aws.amazon.com/mediaconvert/latest/ug/video-generator.html
*
* @param videoGenerator
* When you include Video generator, MediaConvert creates a video input with black frames. Use this
* setting if you do not have a video input or if you want to add black video frames before, or after,
* other inputs. You can specify Video generator, or you can specify an Input file, but you cannot
* specify both. For more information, see
* https://docs.aws.amazon.com/mediaconvert/latest/ug/video-generator.html
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder videoGenerator(InputVideoGenerator videoGenerator);
/**
* When you include Video generator, MediaConvert creates a video input with black frames. Use this setting if
* you do not have a video input or if you want to add black video frames before, or after, other inputs. You
* can specify Video generator, or you can specify an Input file, but you cannot specify both. For more
* information, see https://docs.aws.amazon.com/mediaconvert/latest/ug/video-generator.html This is a
* convenience method that creates an instance of the {@link InputVideoGenerator.Builder} avoiding the need to
* create one manually via {@link InputVideoGenerator#builder()}.
*
*
* When the {@link Consumer} completes, {@link InputVideoGenerator.Builder#build()} is called immediately and
* its result is passed to {@link #videoGenerator(InputVideoGenerator)}.
*
* @param videoGenerator
* a consumer that will call methods on {@link InputVideoGenerator.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #videoGenerator(InputVideoGenerator)
*/
default Builder videoGenerator(Consumer videoGenerator) {
return videoGenerator(InputVideoGenerator.builder().applyMutation(videoGenerator).build());
}
/**
* Contains an array of video overlays.
*
* @param videoOverlays
* Contains an array of video overlays.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder videoOverlays(Collection videoOverlays);
/**
* Contains an array of video overlays.
*
* @param videoOverlays
* Contains an array of video overlays.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder videoOverlays(VideoOverlay... videoOverlays);
/**
* Contains an array of video overlays. This is a convenience method that creates an instance of the
* {@link software.amazon.awssdk.services.mediaconvert.model.VideoOverlay.Builder} avoiding the need to create
* one manually via {@link software.amazon.awssdk.services.mediaconvert.model.VideoOverlay#builder()}.
*
*
* When the {@link Consumer} completes,
* {@link software.amazon.awssdk.services.mediaconvert.model.VideoOverlay.Builder#build()} is called immediately
* and its result is passed to {@link #videoOverlays(List)}.
*
* @param videoOverlays
* a consumer that will call methods on
* {@link software.amazon.awssdk.services.mediaconvert.model.VideoOverlay.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #videoOverlays(java.util.Collection)
*/
Builder videoOverlays(Consumer... videoOverlays);
/**
* Input video selectors contain the video settings for the input. Each of your inputs can have up to one video
* selector.
*
* @param videoSelector
* Input video selectors contain the video settings for the input. Each of your inputs can have up to one
* video selector.
* @return Returns a reference to this object so that method calls can be chained together.
*/
Builder videoSelector(VideoSelector videoSelector);
/**
* Input video selectors contain the video settings for the input. Each of your inputs can have up to one video
* selector. This is a convenience method that creates an instance of the {@link VideoSelector.Builder} avoiding
* the need to create one manually via {@link VideoSelector#builder()}.
*
*
* When the {@link Consumer} completes, {@link VideoSelector.Builder#build()} is called immediately and its
* result is passed to {@link #videoSelector(VideoSelector)}.
*
* @param videoSelector
* a consumer that will call methods on {@link VideoSelector.Builder}
* @return Returns a reference to this object so that method calls can be chained together.
* @see #videoSelector(VideoSelector)
*/
default Builder videoSelector(Consumer videoSelector) {
return videoSelector(VideoSelector.builder().applyMutation(videoSelector).build());
}
}
static final class BuilderImpl implements Builder {
private String advancedInputFilter;
private AdvancedInputFilterSettings advancedInputFilterSettings;
private Map audioSelectorGroups = DefaultSdkAutoConstructMap.getInstance();
private Map audioSelectors = DefaultSdkAutoConstructMap.getInstance();
private Map captionSelectors = DefaultSdkAutoConstructMap.getInstance();
private Rectangle crop;
private String deblockFilter;
private InputDecryptionSettings decryptionSettings;
private String denoiseFilter;
private String dolbyVisionMetadataXml;
private String fileInput;
private String filterEnable;
private Integer filterStrength;
private ImageInserter imageInserter;
private List inputClippings = DefaultSdkAutoConstructList.getInstance();
private String inputScanType;
private Rectangle position;
private Integer programNumber;
private String psiControl;
private List supplementalImps = DefaultSdkAutoConstructList.getInstance();
private String timecodeSource;
private String timecodeStart;
private InputVideoGenerator videoGenerator;
private List videoOverlays = DefaultSdkAutoConstructList.getInstance();
private VideoSelector videoSelector;
private BuilderImpl() {
}
private BuilderImpl(Input model) {
advancedInputFilter(model.advancedInputFilter);
advancedInputFilterSettings(model.advancedInputFilterSettings);
audioSelectorGroups(model.audioSelectorGroups);
audioSelectors(model.audioSelectors);
captionSelectors(model.captionSelectors);
crop(model.crop);
deblockFilter(model.deblockFilter);
decryptionSettings(model.decryptionSettings);
denoiseFilter(model.denoiseFilter);
dolbyVisionMetadataXml(model.dolbyVisionMetadataXml);
fileInput(model.fileInput);
filterEnable(model.filterEnable);
filterStrength(model.filterStrength);
imageInserter(model.imageInserter);
inputClippings(model.inputClippings);
inputScanType(model.inputScanType);
position(model.position);
programNumber(model.programNumber);
psiControl(model.psiControl);
supplementalImps(model.supplementalImps);
timecodeSource(model.timecodeSource);
timecodeStart(model.timecodeStart);
videoGenerator(model.videoGenerator);
videoOverlays(model.videoOverlays);
videoSelector(model.videoSelector);
}
public final String getAdvancedInputFilter() {
return advancedInputFilter;
}
public final void setAdvancedInputFilter(String advancedInputFilter) {
this.advancedInputFilter = advancedInputFilter;
}
@Override
public final Builder advancedInputFilter(String advancedInputFilter) {
this.advancedInputFilter = advancedInputFilter;
return this;
}
@Override
public final Builder advancedInputFilter(AdvancedInputFilter advancedInputFilter) {
this.advancedInputFilter(advancedInputFilter == null ? null : advancedInputFilter.toString());
return this;
}
public final AdvancedInputFilterSettings.Builder getAdvancedInputFilterSettings() {
return advancedInputFilterSettings != null ? advancedInputFilterSettings.toBuilder() : null;
}
public final void setAdvancedInputFilterSettings(AdvancedInputFilterSettings.BuilderImpl advancedInputFilterSettings) {
this.advancedInputFilterSettings = advancedInputFilterSettings != null ? advancedInputFilterSettings.build() : null;
}
@Override
public final Builder advancedInputFilterSettings(AdvancedInputFilterSettings advancedInputFilterSettings) {
this.advancedInputFilterSettings = advancedInputFilterSettings;
return this;
}
public final Map getAudioSelectorGroups() {
Map result = ___mapOfAudioSelectorGroupCopier
.copyToBuilder(this.audioSelectorGroups);
if (result instanceof SdkAutoConstructMap) {
return null;
}
return result;
}
public final void setAudioSelectorGroups(Map audioSelectorGroups) {
this.audioSelectorGroups = ___mapOfAudioSelectorGroupCopier.copyFromBuilder(audioSelectorGroups);
}
@Override
public final Builder audioSelectorGroups(Map audioSelectorGroups) {
this.audioSelectorGroups = ___mapOfAudioSelectorGroupCopier.copy(audioSelectorGroups);
return this;
}
public final Map getAudioSelectors() {
Map result = ___mapOfAudioSelectorCopier.copyToBuilder(this.audioSelectors);
if (result instanceof SdkAutoConstructMap) {
return null;
}
return result;
}
public final void setAudioSelectors(Map audioSelectors) {
this.audioSelectors = ___mapOfAudioSelectorCopier.copyFromBuilder(audioSelectors);
}
@Override
public final Builder audioSelectors(Map audioSelectors) {
this.audioSelectors = ___mapOfAudioSelectorCopier.copy(audioSelectors);
return this;
}
public final Map getCaptionSelectors() {
Map result = ___mapOfCaptionSelectorCopier.copyToBuilder(this.captionSelectors);
if (result instanceof SdkAutoConstructMap) {
return null;
}
return result;
}
public final void setCaptionSelectors(Map captionSelectors) {
this.captionSelectors = ___mapOfCaptionSelectorCopier.copyFromBuilder(captionSelectors);
}
@Override
public final Builder captionSelectors(Map captionSelectors) {
this.captionSelectors = ___mapOfCaptionSelectorCopier.copy(captionSelectors);
return this;
}
public final Rectangle.Builder getCrop() {
return crop != null ? crop.toBuilder() : null;
}
public final void setCrop(Rectangle.BuilderImpl crop) {
this.crop = crop != null ? crop.build() : null;
}
@Override
public final Builder crop(Rectangle crop) {
this.crop = crop;
return this;
}
public final String getDeblockFilter() {
return deblockFilter;
}
public final void setDeblockFilter(String deblockFilter) {
this.deblockFilter = deblockFilter;
}
@Override
public final Builder deblockFilter(String deblockFilter) {
this.deblockFilter = deblockFilter;
return this;
}
@Override
public final Builder deblockFilter(InputDeblockFilter deblockFilter) {
this.deblockFilter(deblockFilter == null ? null : deblockFilter.toString());
return this;
}
public final InputDecryptionSettings.Builder getDecryptionSettings() {
return decryptionSettings != null ? decryptionSettings.toBuilder() : null;
}
public final void setDecryptionSettings(InputDecryptionSettings.BuilderImpl decryptionSettings) {
this.decryptionSettings = decryptionSettings != null ? decryptionSettings.build() : null;
}
@Override
public final Builder decryptionSettings(InputDecryptionSettings decryptionSettings) {
this.decryptionSettings = decryptionSettings;
return this;
}
public final String getDenoiseFilter() {
return denoiseFilter;
}
public final void setDenoiseFilter(String denoiseFilter) {
this.denoiseFilter = denoiseFilter;
}
@Override
public final Builder denoiseFilter(String denoiseFilter) {
this.denoiseFilter = denoiseFilter;
return this;
}
@Override
public final Builder denoiseFilter(InputDenoiseFilter denoiseFilter) {
this.denoiseFilter(denoiseFilter == null ? null : denoiseFilter.toString());
return this;
}
public final String getDolbyVisionMetadataXml() {
return dolbyVisionMetadataXml;
}
public final void setDolbyVisionMetadataXml(String dolbyVisionMetadataXml) {
this.dolbyVisionMetadataXml = dolbyVisionMetadataXml;
}
@Override
public final Builder dolbyVisionMetadataXml(String dolbyVisionMetadataXml) {
this.dolbyVisionMetadataXml = dolbyVisionMetadataXml;
return this;
}
public final String getFileInput() {
return fileInput;
}
public final void setFileInput(String fileInput) {
this.fileInput = fileInput;
}
@Override
public final Builder fileInput(String fileInput) {
this.fileInput = fileInput;
return this;
}
public final String getFilterEnable() {
return filterEnable;
}
public final void setFilterEnable(String filterEnable) {
this.filterEnable = filterEnable;
}
@Override
public final Builder filterEnable(String filterEnable) {
this.filterEnable = filterEnable;
return this;
}
@Override
public final Builder filterEnable(InputFilterEnable filterEnable) {
this.filterEnable(filterEnable == null ? null : filterEnable.toString());
return this;
}
public final Integer getFilterStrength() {
return filterStrength;
}
public final void setFilterStrength(Integer filterStrength) {
this.filterStrength = filterStrength;
}
@Override
public final Builder filterStrength(Integer filterStrength) {
this.filterStrength = filterStrength;
return this;
}
public final ImageInserter.Builder getImageInserter() {
return imageInserter != null ? imageInserter.toBuilder() : null;
}
public final void setImageInserter(ImageInserter.BuilderImpl imageInserter) {
this.imageInserter = imageInserter != null ? imageInserter.build() : null;
}
@Override
public final Builder imageInserter(ImageInserter imageInserter) {
this.imageInserter = imageInserter;
return this;
}
public final List getInputClippings() {
List result = ___listOfInputClippingCopier.copyToBuilder(this.inputClippings);
if (result instanceof SdkAutoConstructList) {
return null;
}
return result;
}
public final void setInputClippings(Collection inputClippings) {
this.inputClippings = ___listOfInputClippingCopier.copyFromBuilder(inputClippings);
}
@Override
public final Builder inputClippings(Collection inputClippings) {
this.inputClippings = ___listOfInputClippingCopier.copy(inputClippings);
return this;
}
@Override
@SafeVarargs
public final Builder inputClippings(InputClipping... inputClippings) {
inputClippings(Arrays.asList(inputClippings));
return this;
}
@Override
@SafeVarargs
public final Builder inputClippings(Consumer... inputClippings) {
inputClippings(Stream.of(inputClippings).map(c -> InputClipping.builder().applyMutation(c).build())
.collect(Collectors.toList()));
return this;
}
public final String getInputScanType() {
return inputScanType;
}
public final void setInputScanType(String inputScanType) {
this.inputScanType = inputScanType;
}
@Override
public final Builder inputScanType(String inputScanType) {
this.inputScanType = inputScanType;
return this;
}
@Override
public final Builder inputScanType(InputScanType inputScanType) {
this.inputScanType(inputScanType == null ? null : inputScanType.toString());
return this;
}
public final Rectangle.Builder getPosition() {
return position != null ? position.toBuilder() : null;
}
public final void setPosition(Rectangle.BuilderImpl position) {
this.position = position != null ? position.build() : null;
}
@Override
public final Builder position(Rectangle position) {
this.position = position;
return this;
}
public final Integer getProgramNumber() {
return programNumber;
}
public final void setProgramNumber(Integer programNumber) {
this.programNumber = programNumber;
}
@Override
public final Builder programNumber(Integer programNumber) {
this.programNumber = programNumber;
return this;
}
public final String getPsiControl() {
return psiControl;
}
public final void setPsiControl(String psiControl) {
this.psiControl = psiControl;
}
@Override
public final Builder psiControl(String psiControl) {
this.psiControl = psiControl;
return this;
}
@Override
public final Builder psiControl(InputPsiControl psiControl) {
this.psiControl(psiControl == null ? null : psiControl.toString());
return this;
}
public final Collection getSupplementalImps() {
if (supplementalImps instanceof SdkAutoConstructList) {
return null;
}
return supplementalImps;
}
public final void setSupplementalImps(Collection supplementalImps) {
this.supplementalImps = ___listOf__stringPatternS3ASSETMAPXmlCopier.copy(supplementalImps);
}
@Override
public final Builder supplementalImps(Collection supplementalImps) {
this.supplementalImps = ___listOf__stringPatternS3ASSETMAPXmlCopier.copy(supplementalImps);
return this;
}
@Override
@SafeVarargs
public final Builder supplementalImps(String... supplementalImps) {
supplementalImps(Arrays.asList(supplementalImps));
return this;
}
public final String getTimecodeSource() {
return timecodeSource;
}
public final void setTimecodeSource(String timecodeSource) {
this.timecodeSource = timecodeSource;
}
@Override
public final Builder timecodeSource(String timecodeSource) {
this.timecodeSource = timecodeSource;
return this;
}
@Override
public final Builder timecodeSource(InputTimecodeSource timecodeSource) {
this.timecodeSource(timecodeSource == null ? null : timecodeSource.toString());
return this;
}
public final String getTimecodeStart() {
return timecodeStart;
}
public final void setTimecodeStart(String timecodeStart) {
this.timecodeStart = timecodeStart;
}
@Override
public final Builder timecodeStart(String timecodeStart) {
this.timecodeStart = timecodeStart;
return this;
}
public final InputVideoGenerator.Builder getVideoGenerator() {
return videoGenerator != null ? videoGenerator.toBuilder() : null;
}
public final void setVideoGenerator(InputVideoGenerator.BuilderImpl videoGenerator) {
this.videoGenerator = videoGenerator != null ? videoGenerator.build() : null;
}
@Override
public final Builder videoGenerator(InputVideoGenerator videoGenerator) {
this.videoGenerator = videoGenerator;
return this;
}
public final List getVideoOverlays() {
List result = ___listOfVideoOverlayCopier.copyToBuilder(this.videoOverlays);
if (result instanceof SdkAutoConstructList) {
return null;
}
return result;
}
public final void setVideoOverlays(Collection videoOverlays) {
this.videoOverlays = ___listOfVideoOverlayCopier.copyFromBuilder(videoOverlays);
}
@Override
public final Builder videoOverlays(Collection videoOverlays) {
this.videoOverlays = ___listOfVideoOverlayCopier.copy(videoOverlays);
return this;
}
@Override
@SafeVarargs
public final Builder videoOverlays(VideoOverlay... videoOverlays) {
videoOverlays(Arrays.asList(videoOverlays));
return this;
}
@Override
@SafeVarargs
public final Builder videoOverlays(Consumer... videoOverlays) {
videoOverlays(Stream.of(videoOverlays).map(c -> VideoOverlay.builder().applyMutation(c).build())
.collect(Collectors.toList()));
return this;
}
public final VideoSelector.Builder getVideoSelector() {
return videoSelector != null ? videoSelector.toBuilder() : null;
}
public final void setVideoSelector(VideoSelector.BuilderImpl videoSelector) {
this.videoSelector = videoSelector != null ? videoSelector.build() : null;
}
@Override
public final Builder videoSelector(VideoSelector videoSelector) {
this.videoSelector = videoSelector;
return this;
}
@Override
public Input build() {
return new Input(this);
}
@Override
public List> sdkFields() {
return SDK_FIELDS;
}
}
}