diff --git a/.changelog/2e6364e6bd74439eb1a563036dd3d1a4.json b/.changelog/2e6364e6bd74439eb1a563036dd3d1a4.json new file mode 100644 index 00000000000..db2257af4be --- /dev/null +++ b/.changelog/2e6364e6bd74439eb1a563036dd3d1a4.json @@ -0,0 +1,8 @@ +{ + "id": "2e6364e6-bd74-439e-b1a5-63036dd3d1a4", + "type": "feature", + "description": "This release includes video engine updates including HEVC improvements, support for ingesting VP9 encoded video in MP4 containers, and support for user-specified 3D LUTs.", + "modules": [ + "service/mediaconvert" + ] +} \ No newline at end of file diff --git a/.changelog/72eebf86b36a483086715dbb4b688826.json b/.changelog/72eebf86b36a483086715dbb4b688826.json new file mode 100644 index 00000000000..4a4b34e5af9 --- /dev/null +++ b/.changelog/72eebf86b36a483086715dbb4b688826.json @@ -0,0 +1,8 @@ +{ + "id": "72eebf86-b36a-4830-8671-5dbb4b688826", + "type": "feature", + "description": "Amazon Connect, Contact Lens Evaluation API increase evaluation notes max length to 3072.", + "modules": [ + "service/connect" + ] +} \ No newline at end of file diff --git a/service/connect/api_op_SearchContacts.go b/service/connect/api_op_SearchContacts.go index 5225b90404d..d46851f068a 100644 --- a/service/connect/api_op_SearchContacts.go +++ b/service/connect/api_op_SearchContacts.go @@ -31,12 +31,12 @@ func (c *Client) SearchContacts(ctx context.Context, params *SearchContactsInput type SearchContactsInput struct { // The identifier of Amazon Connect instance. You can find the instance ID in the - // Amazon Resource Name (ARN) of the instance + // Amazon Resource Name (ARN) of the instance. // // This member is required. InstanceId *string - // Time range that you want to search results + // Time range that you want to search results. // // This member is required. TimeRange *types.SearchContactsTimeRange @@ -51,7 +51,7 @@ type SearchContactsInput struct { // The search criteria to be used to return contacts. SearchCriteria *types.SearchCriteria - // Specifies a field to sort by and a sort order + // Specifies a field to sort by and a sort order. Sort *types.Sort noSmithyDocumentSerde diff --git a/service/connect/types/types.go b/service/connect/types/types.go index f824b9e5b11..fb9c54aab10 100644 --- a/service/connect/types/types.go +++ b/service/connect/types/types.go @@ -58,10 +58,10 @@ type AgentContactReference struct { noSmithyDocumentSerde } -// A structure that defines agent hierarchy group levels which can be used to -// filter search results. Important: Agent hierarchy group level information in -// search result is a snapshot, it does not represent current agent hierarchy who -// handled the contact. +// A structure that defines search criteria for contacts using agent hierarchy +// group levels. For more information about agent hierarchies, see Set Up Agent +// Hierarchies (https://docs.aws.amazon.com/connect/latest/adminguide/agent-hierarchy.html) +// in the Amazon Connect Administrator Guide. type AgentHierarchyGroups struct { // The identifiers for level 1 hierarchy groups. @@ -565,12 +565,11 @@ type Contact struct { noSmithyDocumentSerde } -// A structure that defines filters can be used to search within outputs analyzed -// by Amazon Connect Contact Lens in a contact. +// A structure that defines search criteria for contacts using analysis outputs +// from Amazon Connect Contact Lens. type ContactAnalysis struct { - // A structure that defines filters can be used to search with text within an - // Amazon Connect Contact Lens analyzed transcript. + // Search criteria based on transcript analyzed by Amazon Connect Contact Lens. Transcript *Transcript noSmithyDocumentSerde @@ -729,7 +728,7 @@ type ContactSearchSummary struct { // Information about the agent who accepted the contact. AgentInfo *ContactSearchSummaryAgentInfo - // The Amazon Resource Name (ARN) of the contact + // The Amazon Resource Name (ARN) of the contact. Arn *string // How the contact reached your contact center. @@ -748,12 +747,12 @@ type ContactSearchSummary struct { // Indicates how the contact was initiated. InitiationMethod ContactInitiationMethod - // The date and time this contact was initiated, in UTC time. For INBOUND, this is - // when the contact arrived. For OUTBOUND, this is when the agent began dialing. - // For CALLBACK, this is when the callback contact was created. For TRANSFER and - // QUEUE_TRANSFER, this is when the transfer was initiated. For API, this is when - // the request arrived. For EXTERNAL_OUTBOUND, this is when the agent started - // dialing the external participant. For MONITOR, this is when the supervisor + // The date and time this contact was initiated, in UTC time. For INBOUND , this is + // when the contact arrived. For OUTBOUND , this is when the agent began dialing. + // For CALLBACK , this is when the callback contact was created. For TRANSFER and + // QUEUE_TRANSFER , this is when the transfer was initiated. For API, this is when + // the request arrived. For EXTERNAL_OUTBOUND , this is when the agent started + // dialing the external participant. For MONITOR , this is when the supervisor // started listening to a contact. InitiationTimestamp *time.Time @@ -4267,30 +4266,33 @@ type S3Config struct { noSmithyDocumentSerde } -// A structure that defines searchable contact attributes which can be used to -// filter search results. +// A structure that defines search criteria based on user-defined contact +// attributes that are configured for contact search. type SearchableContactAttributes struct { - // The array of searhale contact attribute criteria + // The list of criteria based on user-defined contact attributes that are + // configured for contact search. // // This member is required. Criteria []SearchableContactAttributesCriteria - // The match type of multiple searchable contact attributes criteria. + // The match type combining search criteria using multiple searchable contact + // attributes. MatchType SearchContactsMatchType noSmithyDocumentSerde } -// The criteria of searchable contact attributes. +// The search criteria based on user-defned contact attribute key and values to +// search on. type SearchableContactAttributesCriteria struct { - // The searchable contact attribute key + // The key containing a searchable user-defined contact attribute. // // This member is required. Key *string - // The array of contact attribute values used to filter search results. + // The list of values to search for within a user-defined contact attribute. // // This member is required. Values []string @@ -4298,7 +4300,7 @@ type SearchableContactAttributesCriteria struct { noSmithyDocumentSerde } -// A structure of time range that you want to search results +// A structure of time range that you want to search results. type SearchContactsTimeRange struct { // The end time of the time range. @@ -4311,7 +4313,7 @@ type SearchContactsTimeRange struct { // This member is required. StartTime *time.Time - // The type of timestamp to search + // The type of timestamp to search. // // This member is required. Type SearchContactsTimeRangeType @@ -4319,28 +4321,35 @@ type SearchContactsTimeRange struct { noSmithyDocumentSerde } -// A structure of search criteria to be used to return contacts +// A structure of search criteria to be used to return contacts. type SearchCriteria struct { - // The agent hierarchy groups + // The agent hierarchy groups of the agent at the time of handling the contact. AgentHierarchyGroups *AgentHierarchyGroups - // The array of agent ids + // The identifiers of agents who handled the contacts. AgentIds []string - // The array of channels + // The list of channels associated with contacts. Channels []Channel - // The ContactAnalysis object used in search criteria + // Search criteria based on analysis outputs from Amazon Connect Contact Lens. ContactAnalysis *ContactAnalysis - // The array of initiaton methods + // The list of initiation methods associated with contacts. InitiationMethods []ContactInitiationMethod - // The array of queue ids. + // The list of queue IDs associated with contacts. QueueIds []string - // The SearchableContactAttributes object used in search criteria + // The search criteria based on user-defined contact attributes that have been + // configured for contact search. For more information, see Search by customer + // contact attributes (https://docs.aws.amazon.com/connect/latest/adminguide/search-custom-attributes.html) + // in the Amazon Connect Administrator Guide. To use SearchableContactAttributes + // in a search request, the GetContactAttributes action is required to perform an + // API request. For more information, see + // https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonconnect.html#amazonconnect-actions-as-permissions (https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonconnect.html#amazonconnect-actions-as-permissions) + // Actions defined by Amazon Connect. SearchableContactAttributes *SearchableContactAttributes noSmithyDocumentSerde @@ -4574,7 +4583,7 @@ type SingleSelectQuestionRuleCategoryAutomation struct { noSmithyDocumentSerde } -// A structure that defines the sort by and a sort order +// A structure that defineds the field name to sort by and a sort order. type Sort struct { // The name of the field on which to sort. @@ -4935,24 +4944,29 @@ type TrafficDistributionGroupUserSummary struct { noSmithyDocumentSerde } -// The transcript object used to search results. +// A structure that defines search criteria and matching logic to search for +// contacts by matching text with transcripts analyzed by Amazon Connect Contact +// Lens. type Transcript struct { - // The array of transcript search criteria + // The list of search criteria based on Contact Lens conversational analytics + // transcript. // // This member is required. Criteria []TranscriptCriteria - // The match type of multiple transcript criteira + // The match type combining search criteria using multiple transcript criteria. MatchType SearchContactsMatchType noSmithyDocumentSerde } -// The transcript criteria used to search +// A structure that defines search criteria base on words or phrases, participants +// in the Contact Lens conversational analytics transcript. type TranscriptCriteria struct { - // The match type of search texts in a transcript criteria. + // The match type combining search criteria using multiple search texts in a + // transcript criteria. // // This member is required. MatchType SearchContactsMatchType @@ -5275,8 +5289,9 @@ type UserSearchCriteria struct { OrConditions []UserSearchCriteria // A leaf node condition which can be used to specify a string condition. The - // currently supported values for FieldName are name , description , and resourceID - // . + // currently supported values for FieldName are username , firstname , lastname , + // resourceId , routingProfileId , securityProfileId , agentGroupId , and + // agentGroupPathIds . StringCondition *StringCondition noSmithyDocumentSerde diff --git a/service/m2/internal/endpoints/endpoints.go b/service/m2/internal/endpoints/endpoints.go index 3c77b065acc..d82097536d2 100644 --- a/service/m2/internal/endpoints/endpoints.go +++ b/service/m2/internal/endpoints/endpoints.go @@ -139,12 +139,18 @@ var defaultPartitions = endpoints.Partitions{ RegionRegex: partitionRegexp.Aws, IsRegionalized: true, Endpoints: endpoints.Endpoints{ + endpoints.EndpointKey{ + Region: "af-south-1", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "ap-northeast-1", }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "ap-northeast-2", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "ap-northeast-3", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "ap-south-1", }: endpoints.Endpoint{}, @@ -164,6 +170,12 @@ var defaultPartitions = endpoints.Partitions{ endpoints.EndpointKey{ Region: "eu-central-1", }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-north-1", + }: endpoints.Endpoint{}, + endpoints.EndpointKey{ + Region: "eu-south-1", + }: endpoints.Endpoint{}, endpoints.EndpointKey{ Region: "eu-west-1", }: endpoints.Endpoint{}, diff --git a/service/mediaconvert/deserializers.go b/service/mediaconvert/deserializers.go index fdfc69fe523..f31108bf993 100644 --- a/service/mediaconvert/deserializers.go +++ b/service/mediaconvert/deserializers.go @@ -9244,6 +9244,124 @@ func awsRestjson1_deserializeDocumentCmfcSettings(v **types.CmfcSettings, value return nil } +func awsRestjson1_deserializeDocumentColorConversion3DLUTSetting(v **types.ColorConversion3DLUTSetting, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.ColorConversion3DLUTSetting + if *v == nil { + sv = &types.ColorConversion3DLUTSetting{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "fileInput": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected __stringMin14PatternS3CubeCUBEHttpsCubeCUBE to be of type string, got %T instead", value) + } + sv.FileInput = ptr.String(jtv) + } + + case "inputColorSpace": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ColorSpace to be of type string, got %T instead", value) + } + sv.InputColorSpace = types.ColorSpace(jtv) + } + + case "inputMasteringLuminance": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected __integerMin0Max2147483647 to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.InputMasteringLuminance = ptr.Int32(int32(i64)) + } + + case "outputColorSpace": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected ColorSpace to be of type string, got %T instead", value) + } + sv.OutputColorSpace = types.ColorSpace(jtv) + } + + case "outputMasteringLuminance": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected __integerMin0Max2147483647 to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.OutputMasteringLuminance = ptr.Int32(int32(i64)) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + +func awsRestjson1_deserializeDocumentColorConversion3DLUTSettings(v *[]types.ColorConversion3DLUTSetting, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.([]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var cv []types.ColorConversion3DLUTSetting + if *v == nil { + cv = []types.ColorConversion3DLUTSetting{} + } else { + cv = *v + } + + for _, value := range shape { + var col types.ColorConversion3DLUTSetting + destAddr := &col + if err := awsRestjson1_deserializeDocumentColorConversion3DLUTSetting(&destAddr, value); err != nil { + return err + } + col = *destAddr + cv = append(cv, col) + + } + *v = cv + return nil +} + func awsRestjson1_deserializeDocumentColorCorrector(v **types.ColorCorrector, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -9333,6 +9451,19 @@ func awsRestjson1_deserializeDocumentColorCorrector(v **types.ColorCorrector, va sv.Hue = ptr.Int32(int32(i64)) } + case "maxLuminance": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected __integerMin0Max2147483647 to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.MaxLuminance = ptr.Int32(int32(i64)) + } + case "sampleRangeConversion": if value != nil { jtv, ok := value.(string) @@ -15683,6 +15814,11 @@ func awsRestjson1_deserializeDocumentJobSettings(v **types.JobSettings, value in return err } + case "colorConversion3DLUTSettings": + if err := awsRestjson1_deserializeDocumentColorConversion3DLUTSettings(&sv.ColorConversion3DLUTSettings, value); err != nil { + return err + } + case "esam": if err := awsRestjson1_deserializeDocumentEsamSettings(&sv.Esam, value); err != nil { return err @@ -15949,6 +16085,11 @@ func awsRestjson1_deserializeDocumentJobTemplateSettings(v **types.JobTemplateSe return err } + case "colorConversion3DLUTSettings": + if err := awsRestjson1_deserializeDocumentColorConversion3DLUTSettings(&sv.ColorConversion3DLUTSettings, value); err != nil { + return err + } + case "esam": if err := awsRestjson1_deserializeDocumentEsamSettings(&sv.Esam, value); err != nil { return err @@ -21281,6 +21422,126 @@ func awsRestjson1_deserializeDocumentTtmlDestinationSettings(v **types.TtmlDesti return nil } +func awsRestjson1_deserializeDocumentUncompressedSettings(v **types.UncompressedSettings, value interface{}) error { + if v == nil { + return fmt.Errorf("unexpected nil of type %T", v) + } + if value == nil { + return nil + } + + shape, ok := value.(map[string]interface{}) + if !ok { + return fmt.Errorf("unexpected JSON type %v", value) + } + + var sv *types.UncompressedSettings + if *v == nil { + sv = &types.UncompressedSettings{} + } else { + sv = *v + } + + for key, value := range shape { + switch key { + case "fourcc": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected UncompressedFourcc to be of type string, got %T instead", value) + } + sv.Fourcc = types.UncompressedFourcc(jtv) + } + + case "framerateControl": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected UncompressedFramerateControl to be of type string, got %T instead", value) + } + sv.FramerateControl = types.UncompressedFramerateControl(jtv) + } + + case "framerateConversionAlgorithm": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected UncompressedFramerateConversionAlgorithm to be of type string, got %T instead", value) + } + sv.FramerateConversionAlgorithm = types.UncompressedFramerateConversionAlgorithm(jtv) + } + + case "framerateDenominator": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected __integerMin1Max2147483647 to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.FramerateDenominator = ptr.Int32(int32(i64)) + } + + case "framerateNumerator": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected __integerMin1Max2147483647 to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.FramerateNumerator = ptr.Int32(int32(i64)) + } + + case "interlaceMode": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected UncompressedInterlaceMode to be of type string, got %T instead", value) + } + sv.InterlaceMode = types.UncompressedInterlaceMode(jtv) + } + + case "scanTypeConversionMode": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected UncompressedScanTypeConversionMode to be of type string, got %T instead", value) + } + sv.ScanTypeConversionMode = types.UncompressedScanTypeConversionMode(jtv) + } + + case "slowPal": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected UncompressedSlowPal to be of type string, got %T instead", value) + } + sv.SlowPal = types.UncompressedSlowPal(jtv) + } + + case "telecine": + if value != nil { + jtv, ok := value.(string) + if !ok { + return fmt.Errorf("expected UncompressedTelecine to be of type string, got %T instead", value) + } + sv.Telecine = types.UncompressedTelecine(jtv) + } + + default: + _, _ = key, value + + } + } + *v = sv + return nil +} + func awsRestjson1_deserializeDocumentVc3Settings(v **types.Vc3Settings, value interface{}) error { if v == nil { return fmt.Errorf("unexpected nil of type %T", v) @@ -21467,6 +21728,11 @@ func awsRestjson1_deserializeDocumentVideoCodecSettings(v **types.VideoCodecSett return err } + case "uncompressedSettings": + if err := awsRestjson1_deserializeDocumentUncompressedSettings(&sv.UncompressedSettings, value); err != nil { + return err + } + case "vc3Settings": if err := awsRestjson1_deserializeDocumentVc3Settings(&sv.Vc3Settings, value); err != nil { return err @@ -22019,6 +22285,19 @@ func awsRestjson1_deserializeDocumentVideoSelector(v **types.VideoSelector, valu return err } + case "maxLuminance": + if value != nil { + jtv, ok := value.(json.Number) + if !ok { + return fmt.Errorf("expected __integerMin0Max2147483647 to be json.Number, got %T instead", value) + } + i64, err := jtv.Int64() + if err != nil { + return err + } + sv.MaxLuminance = ptr.Int32(int32(i64)) + } + case "padVideo": if value != nil { jtv, ok := value.(string) diff --git a/service/mediaconvert/serializers.go b/service/mediaconvert/serializers.go index 8c7705923e8..a029803ecbd 100644 --- a/service/mediaconvert/serializers.go +++ b/service/mediaconvert/serializers.go @@ -4354,6 +4354,51 @@ func awsRestjson1_serializeDocumentCmfcSettings(v *types.CmfcSettings, value smi return nil } +func awsRestjson1_serializeDocumentColorConversion3DLUTSetting(v *types.ColorConversion3DLUTSetting, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if v.FileInput != nil { + ok := object.Key("fileInput") + ok.String(*v.FileInput) + } + + if len(v.InputColorSpace) > 0 { + ok := object.Key("inputColorSpace") + ok.String(string(v.InputColorSpace)) + } + + if v.InputMasteringLuminance != nil { + ok := object.Key("inputMasteringLuminance") + ok.Integer(*v.InputMasteringLuminance) + } + + if len(v.OutputColorSpace) > 0 { + ok := object.Key("outputColorSpace") + ok.String(string(v.OutputColorSpace)) + } + + if v.OutputMasteringLuminance != nil { + ok := object.Key("outputMasteringLuminance") + ok.Integer(*v.OutputMasteringLuminance) + } + + return nil +} + +func awsRestjson1_serializeDocumentColorConversion3DLUTSettings(v []types.ColorConversion3DLUTSetting, value smithyjson.Value) error { + array := value.Array() + defer array.Close() + + for i := range v { + av := array.Value() + if err := awsRestjson1_serializeDocumentColorConversion3DLUTSetting(&v[i], av); err != nil { + return err + } + } + return nil +} + func awsRestjson1_serializeDocumentColorCorrector(v *types.ColorCorrector, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -4397,6 +4442,11 @@ func awsRestjson1_serializeDocumentColorCorrector(v *types.ColorCorrector, value ok.Integer(*v.Hue) } + if v.MaxLuminance != nil { + ok := object.Key("maxLuminance") + ok.Integer(*v.MaxLuminance) + } + if len(v.SampleRangeConversion) > 0 { ok := object.Key("sampleRangeConversion") ok.String(string(v.SampleRangeConversion)) @@ -7085,6 +7135,13 @@ func awsRestjson1_serializeDocumentJobSettings(v *types.JobSettings, value smith } } + if v.ColorConversion3DLUTSettings != nil { + ok := object.Key("colorConversion3DLUTSettings") + if err := awsRestjson1_serializeDocumentColorConversion3DLUTSettings(v.ColorConversion3DLUTSettings, ok); err != nil { + return err + } + } + if v.Esam != nil { ok := object.Key("esam") if err := awsRestjson1_serializeDocumentEsamSettings(v.Esam, ok); err != nil { @@ -7179,6 +7236,13 @@ func awsRestjson1_serializeDocumentJobTemplateSettings(v *types.JobTemplateSetti } } + if v.ColorConversion3DLUTSettings != nil { + ok := object.Key("colorConversion3DLUTSettings") + if err := awsRestjson1_serializeDocumentColorConversion3DLUTSettings(v.ColorConversion3DLUTSettings, ok); err != nil { + return err + } + } + if v.Esam != nil { ok := object.Key("esam") if err := awsRestjson1_serializeDocumentEsamSettings(v.Esam, ok); err != nil { @@ -9251,6 +9315,58 @@ func awsRestjson1_serializeDocumentTtmlDestinationSettings(v *types.TtmlDestinat return nil } +func awsRestjson1_serializeDocumentUncompressedSettings(v *types.UncompressedSettings, value smithyjson.Value) error { + object := value.Object() + defer object.Close() + + if len(v.Fourcc) > 0 { + ok := object.Key("fourcc") + ok.String(string(v.Fourcc)) + } + + if len(v.FramerateControl) > 0 { + ok := object.Key("framerateControl") + ok.String(string(v.FramerateControl)) + } + + if len(v.FramerateConversionAlgorithm) > 0 { + ok := object.Key("framerateConversionAlgorithm") + ok.String(string(v.FramerateConversionAlgorithm)) + } + + if v.FramerateDenominator != nil { + ok := object.Key("framerateDenominator") + ok.Integer(*v.FramerateDenominator) + } + + if v.FramerateNumerator != nil { + ok := object.Key("framerateNumerator") + ok.Integer(*v.FramerateNumerator) + } + + if len(v.InterlaceMode) > 0 { + ok := object.Key("interlaceMode") + ok.String(string(v.InterlaceMode)) + } + + if len(v.ScanTypeConversionMode) > 0 { + ok := object.Key("scanTypeConversionMode") + ok.String(string(v.ScanTypeConversionMode)) + } + + if len(v.SlowPal) > 0 { + ok := object.Key("slowPal") + ok.String(string(v.SlowPal)) + } + + if len(v.Telecine) > 0 { + ok := object.Key("telecine") + ok.String(string(v.Telecine)) + } + + return nil +} + func awsRestjson1_serializeDocumentVc3Settings(v *types.Vc3Settings, value smithyjson.Value) error { object := value.Object() defer object.Close() @@ -9361,6 +9477,13 @@ func awsRestjson1_serializeDocumentVideoCodecSettings(v *types.VideoCodecSetting } } + if v.UncompressedSettings != nil { + ok := object.Key("uncompressedSettings") + if err := awsRestjson1_serializeDocumentUncompressedSettings(v.UncompressedSettings, ok); err != nil { + return err + } + } + if v.Vc3Settings != nil { ok := object.Key("vc3Settings") if err := awsRestjson1_serializeDocumentVc3Settings(v.Vc3Settings, ok); err != nil { @@ -9646,6 +9769,11 @@ func awsRestjson1_serializeDocumentVideoSelector(v *types.VideoSelector, value s } } + if v.MaxLuminance != nil { + ok := object.Key("maxLuminance") + ok.Integer(*v.MaxLuminance) + } + if len(v.PadVideo) > 0 { ok := object.Key("padVideo") ok.String(string(v.PadVideo)) diff --git a/service/mediaconvert/types/enums.go b/service/mediaconvert/types/enums.go index bb9278cc599..c0fab480e2c 100644 --- a/service/mediaconvert/types/enums.go +++ b/service/mediaconvert/types/enums.go @@ -2130,6 +2130,7 @@ const ( ContainerTypeMxf ContainerType = "MXF" ContainerTypeWebm ContainerType = "WEBM" ContainerTypeRaw ContainerType = "RAW" + ContainerTypeY4m ContainerType = "Y4M" ) // Values returns all known values for ContainerType. Note that this can be @@ -2148,6 +2149,7 @@ func (ContainerType) Values() []ContainerType { "MXF", "WEBM", "RAW", + "Y4M", } } @@ -7855,6 +7857,139 @@ func (Type) Values() []Type { } } +type UncompressedFourcc string + +// Enum values for UncompressedFourcc +const ( + UncompressedFourccI420 UncompressedFourcc = "I420" + UncompressedFourccI422 UncompressedFourcc = "I422" + UncompressedFourccI444 UncompressedFourcc = "I444" +) + +// Values returns all known values for UncompressedFourcc. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (UncompressedFourcc) Values() []UncompressedFourcc { + return []UncompressedFourcc{ + "I420", + "I422", + "I444", + } +} + +type UncompressedFramerateControl string + +// Enum values for UncompressedFramerateControl +const ( + UncompressedFramerateControlInitializeFromSource UncompressedFramerateControl = "INITIALIZE_FROM_SOURCE" + UncompressedFramerateControlSpecified UncompressedFramerateControl = "SPECIFIED" +) + +// Values returns all known values for UncompressedFramerateControl. Note that +// this can be expanded in the future, and so it is only as up to date as the +// client. The ordering of this slice is not guaranteed to be stable across +// updates. +func (UncompressedFramerateControl) Values() []UncompressedFramerateControl { + return []UncompressedFramerateControl{ + "INITIALIZE_FROM_SOURCE", + "SPECIFIED", + } +} + +type UncompressedFramerateConversionAlgorithm string + +// Enum values for UncompressedFramerateConversionAlgorithm +const ( + UncompressedFramerateConversionAlgorithmDuplicateDrop UncompressedFramerateConversionAlgorithm = "DUPLICATE_DROP" + UncompressedFramerateConversionAlgorithmInterpolate UncompressedFramerateConversionAlgorithm = "INTERPOLATE" + UncompressedFramerateConversionAlgorithmFrameformer UncompressedFramerateConversionAlgorithm = "FRAMEFORMER" +) + +// Values returns all known values for UncompressedFramerateConversionAlgorithm. +// Note that this can be expanded in the future, and so it is only as up to date as +// the client. The ordering of this slice is not guaranteed to be stable across +// updates. +func (UncompressedFramerateConversionAlgorithm) Values() []UncompressedFramerateConversionAlgorithm { + return []UncompressedFramerateConversionAlgorithm{ + "DUPLICATE_DROP", + "INTERPOLATE", + "FRAMEFORMER", + } +} + +type UncompressedInterlaceMode string + +// Enum values for UncompressedInterlaceMode +const ( + UncompressedInterlaceModeInterlaced UncompressedInterlaceMode = "INTERLACED" + UncompressedInterlaceModeProgressive UncompressedInterlaceMode = "PROGRESSIVE" +) + +// Values returns all known values for UncompressedInterlaceMode. Note that this +// can be expanded in the future, and so it is only as up to date as the client. +// The ordering of this slice is not guaranteed to be stable across updates. +func (UncompressedInterlaceMode) Values() []UncompressedInterlaceMode { + return []UncompressedInterlaceMode{ + "INTERLACED", + "PROGRESSIVE", + } +} + +type UncompressedScanTypeConversionMode string + +// Enum values for UncompressedScanTypeConversionMode +const ( + UncompressedScanTypeConversionModeInterlaced UncompressedScanTypeConversionMode = "INTERLACED" + UncompressedScanTypeConversionModeInterlacedOptimize UncompressedScanTypeConversionMode = "INTERLACED_OPTIMIZE" +) + +// Values returns all known values for UncompressedScanTypeConversionMode. Note +// that this can be expanded in the future, and so it is only as up to date as the +// client. The ordering of this slice is not guaranteed to be stable across +// updates. +func (UncompressedScanTypeConversionMode) Values() []UncompressedScanTypeConversionMode { + return []UncompressedScanTypeConversionMode{ + "INTERLACED", + "INTERLACED_OPTIMIZE", + } +} + +type UncompressedSlowPal string + +// Enum values for UncompressedSlowPal +const ( + UncompressedSlowPalDisabled UncompressedSlowPal = "DISABLED" + UncompressedSlowPalEnabled UncompressedSlowPal = "ENABLED" +) + +// Values returns all known values for UncompressedSlowPal. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (UncompressedSlowPal) Values() []UncompressedSlowPal { + return []UncompressedSlowPal{ + "DISABLED", + "ENABLED", + } +} + +type UncompressedTelecine string + +// Enum values for UncompressedTelecine +const ( + UncompressedTelecineNone UncompressedTelecine = "NONE" + UncompressedTelecineHard UncompressedTelecine = "HARD" +) + +// Values returns all known values for UncompressedTelecine. Note that this can be +// expanded in the future, and so it is only as up to date as the client. The +// ordering of this slice is not guaranteed to be stable across updates. +func (UncompressedTelecine) Values() []UncompressedTelecine { + return []UncompressedTelecine{ + "NONE", + "HARD", + } +} + type Vc3Class string // Enum values for Vc3Class @@ -8016,6 +8151,7 @@ const ( VideoCodecMpeg2 VideoCodec = "MPEG2" VideoCodecPassthrough VideoCodec = "PASSTHROUGH" VideoCodecProres VideoCodec = "PRORES" + VideoCodecUncompressed VideoCodec = "UNCOMPRESSED" VideoCodecVc3 VideoCodec = "VC3" VideoCodecVp8 VideoCodec = "VP8" VideoCodecVp9 VideoCodec = "VP9" @@ -8035,6 +8171,7 @@ func (VideoCodec) Values() []VideoCodec { "MPEG2", "PASSTHROUGH", "PRORES", + "UNCOMPRESSED", "VC3", "VP8", "VP9", diff --git a/service/mediaconvert/types/types.go b/service/mediaconvert/types/types.go index 2843779a915..f409c0955e3 100644 --- a/service/mediaconvert/types/types.go +++ b/service/mediaconvert/types/types.go @@ -34,7 +34,12 @@ type AacSettings struct { // on Bitrate control mode and Profile. Bitrate *int32 - // AAC Profile. + // Specify the AAC profile. For the widest player compatibility and where higher + // bitrates are acceptable: Keep the default profile, LC (AAC-LC) For improved + // audio performance at lower bitrates: Choose HEV1 or HEV2. HEV1 (AAC-HE v1) adds + // spectral band replication to improve speech audio at low bitrates. HEV2 (AAC-HE + // v2) adds parametric stereo, which optimizes for encoding stereo audio at very + // low bitrates. CodecProfile AacCodecProfile // The Coding mode that you specify determines the number of audio channels and @@ -47,28 +52,29 @@ type AacSettings struct { // channels, C, L, R, Ls, Rs, LFE. CodingMode AacCodingMode - // Rate Control Mode. + // Specify the AAC rate control mode. For a constant bitrate: Choose CBR. Your AAC + // output bitrate will be equal to the value that you choose for Bitrate. For a + // variable bitrate: Choose VBR. Your AAC output bitrate will vary according to + // your audio content and the value that you choose for Bitrate quality. RateControlMode AacRateControlMode // Enables LATM/LOAS AAC output. Note that if you use LATM/LOAS AAC in an output, // you must choose "No container" for the output container. RawFormat AacRawFormat - // Specify the Sample rate in Hz. Valid sample rates depend on the Profile and - // Coding mode that you select. The following list shows valid sample rates for - // each Profile and Coding mode. * LC Profile, Coding mode 1.0, 2.0, and Receiver - // Mix: 8000, 12000, 16000, 22050, 24000, 32000, 44100, 48000, 88200, 96000. * LC - // Profile, Coding mode 5.1: 32000, 44100, 48000, 96000. * HEV1 Profile, Coding - // mode 1.0 and Receiver Mix: 22050, 24000, 32000, 44100, 48000. * HEV1 Profile, - // Coding mode 2.0 and 5.1: 32000, 44100, 48000, 96000. * HEV2 Profile, Coding mode - // 2.0: 22050, 24000, 32000, 44100, 48000. + // Specify the AAC sample rate in samples per second (Hz). Valid sample rates + // depend on the AAC profile and Coding mode that you select. For a list of + // supported sample rates, see: + // https://docs.aws.amazon.com/mediaconvert/latest/ug/aac-support.html SampleRate *int32 // Use MPEG-2 AAC instead of MPEG-4 AAC audio for raw or MPEG-2 Transport Stream // containers. Specification AacSpecification - // VBR Quality Level - Only used if rate_control_mode is VBR. + // Specify the quality of your variable bitrate (VBR) AAC audio. For a list of + // approximate VBR bitrates, see: + // https://docs.aws.amazon.com/mediaconvert/latest/ug/aac-support.html#aac_vbr VbrQuality AacVbrQuality noSmithyDocumentSerde @@ -1808,6 +1814,35 @@ type CmfcSettings struct { noSmithyDocumentSerde } +// Custom 3D lut settings +type ColorConversion3DLUTSetting struct { + + // Specify the input file S3, HTTP, or HTTPS URL for your 3D LUT .cube file. Note + // that MediaConvert accepts 3D LUT files up to 8MB in size. + FileInput *string + + // Specify which inputs use this 3D LUT, according to their color space. + InputColorSpace ColorSpace + + // Specify which inputs use this 3D LUT, according to their luminance. To apply + // this 3D LUT to HDR10 or P3D65 (HDR) inputs with a specific mastering luminance: + // Enter an integer from 0 to 2147483647, corresponding to the input's Maximum + // luminance value. To apply this 3D LUT to any input regardless of its luminance: + // Leave blank, or enter 0. + InputMasteringLuminance *int32 + + // Specify which outputs use this 3D LUT, according to their color space. + OutputColorSpace ColorSpace + + // Specify which outputs use this 3D LUT, according to their luminance. To apply + // this 3D LUT to HDR10 or P3D65 (HDR) outputs with a specific luminance: Enter an + // integer from 0 to 2147483647, corresponding to the output's luminance. To apply + // this 3D LUT to any output regardless of its luminance: Leave blank, or enter 0. + OutputMasteringLuminance *int32 + + noSmithyDocumentSerde +} + // Settings for color correction. type ColorCorrector struct { @@ -1865,6 +1900,10 @@ type ColorCorrector struct { // Hue in degrees. Hue *int32 + // Specify the maximum mastering display luminance. Enter an integer from 0 to + // 2147483647, in units of 0.0001 nits. For example, enter 10000000 for 1000 nits. + MaxLuminance *int32 + // Specify how MediaConvert limits the color sample range for this output. To // create a limited range output from a full range input: Choose Limited range // squeeze. For full range inputs, MediaConvert performs a linear offset to color @@ -4995,6 +5034,10 @@ type JobSettings struct { // and audio muted during SCTE-35 triggered ad avails. AvailBlanking *AvailBlanking + // Use 3D LUTs to specify custom color mapping behavior when you convert from one + // color space into another. You can include up to 8 different 3D LUTs. + ColorConversion3DLUTSettings []ColorConversion3DLUTSetting + // Settings for Event Signaling And Messaging (ESAM). If you don't do ad // insertion, you can ignore these settings. Esam *EsamSettings @@ -5141,6 +5184,10 @@ type JobTemplateSettings struct { // and audio muted during SCTE-35 triggered ad avails. AvailBlanking *AvailBlanking + // Use 3D LUTs to specify custom color mapping behavior when you convert from one + // color space into another. You can include up to 8 different 3D LUTs. + ColorConversion3DLUTSettings []ColorConversion3DLUTSetting + // Settings for Event Signaling And Messaging (ESAM). If you don't do ad // insertion, you can ignore these settings. Esam *EsamSettings @@ -7500,6 +7547,85 @@ type TtmlDestinationSettings struct { noSmithyDocumentSerde } +// Required when you set Codec, under VideoDescription>CodecSettings to the value +// UNCOMPRESSED. +type UncompressedSettings struct { + + // The four character code for the uncompressed video. + Fourcc UncompressedFourcc + + // Use the Framerate setting to specify the frame rate for this output. If you + // want to keep the same frame rate as the input video, choose Follow source. If + // you want to do frame rate conversion, choose a frame rate from the dropdown list + // or choose Custom. The framerates shown in the dropdown list are decimal + // approximations of fractions. If you choose Custom, specify your frame rate as a + // fraction. + FramerateControl UncompressedFramerateControl + + // Choose the method that you want MediaConvert to use when increasing or + // decreasing the frame rate. For numerically simple conversions, such as 60 fps to + // 30 fps: We recommend that you keep the default value, Drop duplicate. For + // numerically complex conversions, to avoid stutter: Choose Interpolate. This + // results in a smooth picture, but might introduce undesirable video artifacts. + // For complex frame rate conversions, especially if your source video has already + // been converted from its original cadence: Choose FrameFormer to do + // motion-compensated interpolation. FrameFormer uses the best conversion method + // frame by frame. Note that using FrameFormer increases the transcoding time and + // incurs a significant add-on cost. When you choose FrameFormer, your input video + // resolution must be at least 128x96. + FramerateConversionAlgorithm UncompressedFramerateConversionAlgorithm + + // When you use the API for transcode jobs that use frame rate conversion, specify + // the frame rate as a fraction. For example, 24000 / 1001 = 23.976 fps. Use + // FramerateDenominator to specify the denominator of this fraction. In this + // example, use 1001 for the value of FramerateDenominator. When you use the + // console for transcode jobs that use frame rate conversion, provide the value as + // a decimal number for Framerate. In this example, specify 23.976. + FramerateDenominator *int32 + + // When you use the API for transcode jobs that use frame rate conversion, specify + // the frame rate as a fraction. For example, 24000 / 1001 = 23.976 fps. Use + // FramerateNumerator to specify the numerator of this fraction. In this example, + // use 24000 for the value of FramerateNumerator. When you use the console for + // transcode jobs that use frame rate conversion, provide the value as a decimal + // number for Framerate. In this example, specify 23.976. + FramerateNumerator *int32 + + // Optional. Choose the scan line type for this output. If you don't specify a + // value, MediaConvert will create a progressive output. + InterlaceMode UncompressedInterlaceMode + + // Use this setting for interlaced outputs, when your output frame rate is half of + // your input frame rate. In this situation, choose Optimized interlacing to create + // a better quality interlaced output. In this case, each progressive frame from + // the input corresponds to an interlaced field in the output. Keep the default + // value, Basic interlacing, for all other output frame rates. With basic + // interlacing, MediaConvert performs any frame rate conversion first and then + // interlaces the frames. When you choose Optimized interlacing and you set your + // output frame rate to a value that isn't suitable for optimized interlacing, + // MediaConvert automatically falls back to basic interlacing. Required settings: + // To use optimized interlacing, you must set Telecine to None or Soft. You can't + // use optimized interlacing for hard telecine outputs. You must also set Interlace + // mode to a value other than Progressive. + ScanTypeConversionMode UncompressedScanTypeConversionMode + + // Ignore this setting unless your input frame rate is 23.976 or 24 frames per + // second (fps). Enable slow PAL to create a 25 fps output by relabeling the video + // frames and resampling your audio. Note that enabling this setting will slightly + // reduce the duration of your video. Related settings: You must also set Framerate + // to 25. + SlowPal UncompressedSlowPal + + // When you do frame rate conversion from 23.976 frames per second (fps) to 29.97 + // fps, and your output scan type is interlaced, you can optionally enable hard + // telecine to create a smoother picture. When you keep the default value, None, + // MediaConvert does a standard frame rate conversion to 29.97 without doing + // anything with the field polarity to create a smoother picture. + Telecine UncompressedTelecine + + noSmithyDocumentSerde +} + // Required when you set Codec to the value VC3 type Vc3Settings struct { @@ -7591,8 +7717,8 @@ type Vc3Settings struct { // object. The following lists the codec enum, settings object pairs. * AV1, // Av1Settings * AVC_INTRA, AvcIntraSettings * FRAME_CAPTURE, FrameCaptureSettings // * H_264, H264Settings * H_265, H265Settings * MPEG2, Mpeg2Settings * PRORES, -// ProresSettings * VC3, Vc3Settings * VP8, Vp8Settings * VP9, Vp9Settings * XAVC, -// XavcSettings +// ProresSettings * UNCOMPRESSED, UncompressedSettings * VC3, Vc3Settings * VP8, +// Vp8Settings * VP9, Vp9Settings * XAVC, XavcSettings type VideoCodecSettings struct { // Required when you set Codec, under VideoDescription>CodecSettings to the value @@ -7629,6 +7755,10 @@ type VideoCodecSettings struct { // Required when you set Codec to the value PRORES. ProresSettings *ProresSettings + // Required when you set Codec, under VideoDescription>CodecSettings to the value + // UNCOMPRESSED. + UncompressedSettings *UncompressedSettings + // Required when you set Codec to the value VC3 Vc3Settings *Vc3Settings @@ -7667,8 +7797,8 @@ type VideoDescription struct { // object. The following lists the codec enum, settings object pairs. * AV1, // Av1Settings * AVC_INTRA, AvcIntraSettings * FRAME_CAPTURE, FrameCaptureSettings // * H_264, H264Settings * H_265, H265Settings * MPEG2, Mpeg2Settings * PRORES, - // ProresSettings * VC3, Vc3Settings * VP8, Vp8Settings * VP9, Vp9Settings * XAVC, - // XavcSettings + // ProresSettings * UNCOMPRESSED, UncompressedSettings * VC3, Vc3Settings * VP8, + // Vp8Settings * VP9, Vp9Settings * XAVC, XavcSettings CodecSettings *VideoCodecSettings // Choose Insert for this setting to include color metadata in this output. Choose @@ -7942,6 +8072,10 @@ type VideoSelector struct { // https://docs.aws.amazon.com/console/mediaconvert/hdr. Hdr10Metadata *Hdr10Metadata + // Specify the maximum mastering display luminance. Enter an integer from 0 to + // 2147483647, in units of 0.0001 nits. For example, enter 10000000 for 1000 nits. + MaxLuminance *int32 + // Use this setting if your input has video and audio durations that don't align, // and your output or player has strict alignment requirements. Examples: Input // audio track has a delayed start. Input video track ends before audio ends. When