in service/mediaconvert/deserializers.go [11335:11801]
func awsRestjson1_deserializeDocumentH264Settings(v **types.H264Settings, 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.H264Settings
if *v == nil {
sv = &types.H264Settings{}
} else {
sv = *v
}
for key, value := range shape {
switch key {
case "adaptiveQuantization":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264AdaptiveQuantization to be of type string, got %T instead", value)
}
sv.AdaptiveQuantization = types.H264AdaptiveQuantization(jtv)
}
case "bitrate":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin1000Max1152000000 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.Bitrate = int32(i64)
}
case "codecLevel":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264CodecLevel to be of type string, got %T instead", value)
}
sv.CodecLevel = types.H264CodecLevel(jtv)
}
case "codecProfile":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264CodecProfile to be of type string, got %T instead", value)
}
sv.CodecProfile = types.H264CodecProfile(jtv)
}
case "dynamicSubGop":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264DynamicSubGop to be of type string, got %T instead", value)
}
sv.DynamicSubGop = types.H264DynamicSubGop(jtv)
}
case "entropyEncoding":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264EntropyEncoding to be of type string, got %T instead", value)
}
sv.EntropyEncoding = types.H264EntropyEncoding(jtv)
}
case "fieldEncoding":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264FieldEncoding to be of type string, got %T instead", value)
}
sv.FieldEncoding = types.H264FieldEncoding(jtv)
}
case "flickerAdaptiveQuantization":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264FlickerAdaptiveQuantization to be of type string, got %T instead", value)
}
sv.FlickerAdaptiveQuantization = types.H264FlickerAdaptiveQuantization(jtv)
}
case "framerateControl":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264FramerateControl to be of type string, got %T instead", value)
}
sv.FramerateControl = types.H264FramerateControl(jtv)
}
case "framerateConversionAlgorithm":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264FramerateConversionAlgorithm to be of type string, got %T instead", value)
}
sv.FramerateConversionAlgorithm = types.H264FramerateConversionAlgorithm(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 = 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 = int32(i64)
}
case "gopBReference":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264GopBReference to be of type string, got %T instead", value)
}
sv.GopBReference = types.H264GopBReference(jtv)
}
case "gopClosedCadence":
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.GopClosedCadence = int32(i64)
}
case "gopSize":
if value != nil {
switch jtv := value.(type) {
case json.Number:
f64, err := jtv.Float64()
if err != nil {
return err
}
sv.GopSize = f64
case string:
var f64 float64
switch {
case strings.EqualFold(jtv, "NaN"):
f64 = math.NaN()
case strings.EqualFold(jtv, "Infinity"):
f64 = math.Inf(1)
case strings.EqualFold(jtv, "-Infinity"):
f64 = math.Inf(-1)
default:
return fmt.Errorf("unknown JSON number value: %s", jtv)
}
sv.GopSize = f64
default:
return fmt.Errorf("expected __doubleMin0 to be a JSON Number, got %T instead", value)
}
}
case "gopSizeUnits":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264GopSizeUnits to be of type string, got %T instead", value)
}
sv.GopSizeUnits = types.H264GopSizeUnits(jtv)
}
case "hrdBufferInitialFillPercentage":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin0Max100 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.HrdBufferInitialFillPercentage = int32(i64)
}
case "hrdBufferSize":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin0Max1152000000 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.HrdBufferSize = int32(i64)
}
case "interlaceMode":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264InterlaceMode to be of type string, got %T instead", value)
}
sv.InterlaceMode = types.H264InterlaceMode(jtv)
}
case "maxBitrate":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin1000Max1152000000 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.MaxBitrate = int32(i64)
}
case "minIInterval":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin0Max30 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.MinIInterval = int32(i64)
}
case "numberBFramesBetweenReferenceFrames":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin0Max7 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.NumberBFramesBetweenReferenceFrames = int32(i64)
}
case "numberReferenceFrames":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin1Max6 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.NumberReferenceFrames = int32(i64)
}
case "parControl":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264ParControl to be of type string, got %T instead", value)
}
sv.ParControl = types.H264ParControl(jtv)
}
case "parDenominator":
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.ParDenominator = int32(i64)
}
case "parNumerator":
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.ParNumerator = int32(i64)
}
case "qualityTuningLevel":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264QualityTuningLevel to be of type string, got %T instead", value)
}
sv.QualityTuningLevel = types.H264QualityTuningLevel(jtv)
}
case "qvbrSettings":
if err := awsRestjson1_deserializeDocumentH264QvbrSettings(&sv.QvbrSettings, value); err != nil {
return err
}
case "rateControlMode":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264RateControlMode to be of type string, got %T instead", value)
}
sv.RateControlMode = types.H264RateControlMode(jtv)
}
case "repeatPps":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264RepeatPps to be of type string, got %T instead", value)
}
sv.RepeatPps = types.H264RepeatPps(jtv)
}
case "scanTypeConversionMode":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264ScanTypeConversionMode to be of type string, got %T instead", value)
}
sv.ScanTypeConversionMode = types.H264ScanTypeConversionMode(jtv)
}
case "sceneChangeDetect":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264SceneChangeDetect to be of type string, got %T instead", value)
}
sv.SceneChangeDetect = types.H264SceneChangeDetect(jtv)
}
case "slices":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin1Max32 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.Slices = int32(i64)
}
case "slowPal":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264SlowPal to be of type string, got %T instead", value)
}
sv.SlowPal = types.H264SlowPal(jtv)
}
case "softness":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin0Max128 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.Softness = int32(i64)
}
case "spatialAdaptiveQuantization":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264SpatialAdaptiveQuantization to be of type string, got %T instead", value)
}
sv.SpatialAdaptiveQuantization = types.H264SpatialAdaptiveQuantization(jtv)
}
case "syntax":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264Syntax to be of type string, got %T instead", value)
}
sv.Syntax = types.H264Syntax(jtv)
}
case "telecine":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264Telecine to be of type string, got %T instead", value)
}
sv.Telecine = types.H264Telecine(jtv)
}
case "temporalAdaptiveQuantization":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264TemporalAdaptiveQuantization to be of type string, got %T instead", value)
}
sv.TemporalAdaptiveQuantization = types.H264TemporalAdaptiveQuantization(jtv)
}
case "unregisteredSeiTimecode":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264UnregisteredSeiTimecode to be of type string, got %T instead", value)
}
sv.UnregisteredSeiTimecode = types.H264UnregisteredSeiTimecode(jtv)
}
default:
_, _ = key, value
}
}
*v = sv
return nil
}