in service/medialive/deserializers.go [17498:17973]
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 "afdSignaling":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected AfdSignaling to be of type string, got %T instead", value)
}
sv.AfdSignaling = types.AfdSignaling(jtv)
}
case "bitrate":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin1000 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.Bitrate = int32(i64)
}
case "bufFillPct":
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.BufFillPct = int32(i64)
}
case "bufSize":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin0 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.BufSize = int32(i64)
}
case "colorMetadata":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264ColorMetadata to be of type string, got %T instead", value)
}
sv.ColorMetadata = types.H264ColorMetadata(jtv)
}
case "colorSpaceSettings":
if err := awsRestjson1_deserializeDocumentH264ColorSpaceSettings(&sv.ColorSpaceSettings, value); err != nil {
return err
}
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 "filterSettings":
if err := awsRestjson1_deserializeDocumentH264FilterSettings(&sv.FilterSettings, value); err != nil {
return err
}
case "fixedAfd":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected FixedAfd to be of type string, got %T instead", value)
}
sv.FixedAfd = types.FixedAfd(jtv)
}
case "flickerAq":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264FlickerAq to be of type string, got %T instead", value)
}
sv.FlickerAq = types.H264FlickerAq(jtv)
}
case "forceFieldPictures":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264ForceFieldPictures to be of type string, got %T instead", value)
}
sv.ForceFieldPictures = types.H264ForceFieldPictures(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 "framerateDenominator":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin1 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 __integerMin1 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 __integerMin0 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.GopClosedCadence = int32(i64)
}
case "gopNumBFrames":
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.GopNumBFrames = 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 __double 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 "level":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264Level to be of type string, got %T instead", value)
}
sv.Level = types.H264Level(jtv)
}
case "lookAheadRateControl":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264LookAheadRateControl to be of type string, got %T instead", value)
}
sv.LookAheadRateControl = types.H264LookAheadRateControl(jtv)
}
case "maxBitrate":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin1000 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 "numRefFrames":
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.NumRefFrames = 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 __integerMin1 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 __integerMin1 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.ParNumerator = int32(i64)
}
case "profile":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264Profile to be of type string, got %T instead", value)
}
sv.Profile = types.H264Profile(jtv)
}
case "qualityLevel":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264QualityLevel to be of type string, got %T instead", value)
}
sv.QualityLevel = types.H264QualityLevel(jtv)
}
case "qvbrQualityLevel":
if value != nil {
jtv, ok := value.(json.Number)
if !ok {
return fmt.Errorf("expected __integerMin1Max10 to be json.Number, got %T instead", value)
}
i64, err := jtv.Int64()
if err != nil {
return err
}
sv.QvbrQualityLevel = int32(i64)
}
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 "scanType":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264ScanType to be of type string, got %T instead", value)
}
sv.ScanType = types.H264ScanType(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 "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 "spatialAq":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264SpatialAq to be of type string, got %T instead", value)
}
sv.SpatialAq = types.H264SpatialAq(jtv)
}
case "subgopLength":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264SubGopLength to be of type string, got %T instead", value)
}
sv.SubgopLength = types.H264SubGopLength(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 "temporalAq":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264TemporalAq to be of type string, got %T instead", value)
}
sv.TemporalAq = types.H264TemporalAq(jtv)
}
case "timecodeInsertion":
if value != nil {
jtv, ok := value.(string)
if !ok {
return fmt.Errorf("expected H264TimecodeInsertionBehavior to be of type string, got %T instead", value)
}
sv.TimecodeInsertion = types.H264TimecodeInsertionBehavior(jtv)
}
default:
_, _ = key, value
}
}
*v = sv
return nil
}