aws-sdk-mediaconvert 1.128.0

AWS SDK for AWS Elemental MediaConvert
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub fn ser_av1_settings(
    object: &mut ::aws_smithy_json::serialize::JsonObjectWriter,
    input: &crate::types::Av1Settings,
) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::SerializationError> {
    if let Some(var_1) = &input.adaptive_quantization {
        object.key("adaptiveQuantization").string(var_1.as_str());
    }
    if let Some(var_2) = &input.bit_depth {
        object.key("bitDepth").string(var_2.as_str());
    }
    if let Some(var_3) = &input.film_grain_synthesis {
        object.key("filmGrainSynthesis").string(var_3.as_str());
    }
    if let Some(var_4) = &input.framerate_control {
        object.key("framerateControl").string(var_4.as_str());
    }
    if let Some(var_5) = &input.framerate_conversion_algorithm {
        object.key("framerateConversionAlgorithm").string(var_5.as_str());
    }
    if let Some(var_6) = &input.framerate_denominator {
        object.key("framerateDenominator").number(
            #[allow(clippy::useless_conversion)]
            ::aws_smithy_types::Number::NegInt((*var_6).into()),
        );
    }
    if let Some(var_7) = &input.framerate_numerator {
        object.key("framerateNumerator").number(
            #[allow(clippy::useless_conversion)]
            ::aws_smithy_types::Number::NegInt((*var_7).into()),
        );
    }
    if let Some(var_8) = &input.gop_size {
        object.key("gopSize").number(
            #[allow(clippy::useless_conversion)]
            ::aws_smithy_types::Number::Float((*var_8).into()),
        );
    }
    if let Some(var_9) = &input.max_bitrate {
        object.key("maxBitrate").number(
            #[allow(clippy::useless_conversion)]
            ::aws_smithy_types::Number::NegInt((*var_9).into()),
        );
    }
    if let Some(var_10) = &input.number_b_frames_between_reference_frames {
        object.key("numberBFramesBetweenReferenceFrames").number(
            #[allow(clippy::useless_conversion)]
            ::aws_smithy_types::Number::NegInt((*var_10).into()),
        );
    }
    if let Some(var_11) = &input.per_frame_metrics {
        let mut array_12 = object.key("perFrameMetrics").start_array();
        for item_13 in var_11 {
            {
                array_12.value().string(item_13.as_str());
            }
        }
        array_12.finish();
    }
    if let Some(var_14) = &input.qvbr_settings {
        #[allow(unused_mut)]
        let mut object_15 = object.key("qvbrSettings").start_object();
        crate::protocol_serde::shape_av1_qvbr_settings::ser_av1_qvbr_settings(&mut object_15, var_14)?;
        object_15.finish();
    }
    if let Some(var_16) = &input.rate_control_mode {
        object.key("rateControlMode").string(var_16.as_str());
    }
    if let Some(var_17) = &input.slices {
        object.key("slices").number(
            #[allow(clippy::useless_conversion)]
            ::aws_smithy_types::Number::NegInt((*var_17).into()),
        );
    }
    if let Some(var_18) = &input.spatial_adaptive_quantization {
        object.key("spatialAdaptiveQuantization").string(var_18.as_str());
    }
    Ok(())
}

pub(crate) fn de_av1_settings<'a, I>(
    tokens: &mut ::std::iter::Peekable<I>,
    _value: &'a [u8],
) -> ::std::result::Result<Option<crate::types::Av1Settings>, ::aws_smithy_json::deserialize::error::DeserializeError>
where
    I: Iterator<Item = Result<::aws_smithy_json::deserialize::Token<'a>, ::aws_smithy_json::deserialize::error::DeserializeError>>,
{
    match tokens.next().transpose()? {
        Some(::aws_smithy_json::deserialize::Token::ValueNull { .. }) => Ok(None),
        Some(::aws_smithy_json::deserialize::Token::StartObject { .. }) => {
            #[allow(unused_mut)]
            let mut builder = crate::types::builders::Av1SettingsBuilder::default();
            loop {
                match tokens.next().transpose()? {
                    Some(::aws_smithy_json::deserialize::Token::EndObject { .. }) => break,
                    Some(::aws_smithy_json::deserialize::Token::ObjectKey { key, .. }) => match key.to_unescaped()?.as_ref() {
                        "adaptiveQuantization" => {
                            builder = builder.set_adaptive_quantization(
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
                                    .map(|s| s.to_unescaped().map(|u| crate::types::Av1AdaptiveQuantization::from(u.as_ref())))
                                    .transpose()?,
                            );
                        }
                        "bitDepth" => {
                            builder = builder.set_bit_depth(
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
                                    .map(|s| s.to_unescaped().map(|u| crate::types::Av1BitDepth::from(u.as_ref())))
                                    .transpose()?,
                            );
                        }
                        "filmGrainSynthesis" => {
                            builder = builder.set_film_grain_synthesis(
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
                                    .map(|s| s.to_unescaped().map(|u| crate::types::Av1FilmGrainSynthesis::from(u.as_ref())))
                                    .transpose()?,
                            );
                        }
                        "framerateControl" => {
                            builder = builder.set_framerate_control(
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
                                    .map(|s| s.to_unescaped().map(|u| crate::types::Av1FramerateControl::from(u.as_ref())))
                                    .transpose()?,
                            );
                        }
                        "framerateConversionAlgorithm" => {
                            builder = builder.set_framerate_conversion_algorithm(
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
                                    .map(|s| s.to_unescaped().map(|u| crate::types::Av1FramerateConversionAlgorithm::from(u.as_ref())))
                                    .transpose()?,
                            );
                        }
                        "framerateDenominator" => {
                            builder = builder.set_framerate_denominator(
                                ::aws_smithy_json::deserialize::token::expect_number_or_null(tokens.next())?
                                    .map(i32::try_from)
                                    .transpose()?,
                            );
                        }
                        "framerateNumerator" => {
                            builder = builder.set_framerate_numerator(
                                ::aws_smithy_json::deserialize::token::expect_number_or_null(tokens.next())?
                                    .map(i32::try_from)
                                    .transpose()?,
                            );
                        }
                        "gopSize" => {
                            builder = builder
                                .set_gop_size(::aws_smithy_json::deserialize::token::expect_number_or_null(tokens.next())?.map(|v| v.to_f64_lossy()));
                        }
                        "maxBitrate" => {
                            builder = builder.set_max_bitrate(
                                ::aws_smithy_json::deserialize::token::expect_number_or_null(tokens.next())?
                                    .map(i32::try_from)
                                    .transpose()?,
                            );
                        }
                        "numberBFramesBetweenReferenceFrames" => {
                            builder = builder.set_number_b_frames_between_reference_frames(
                                ::aws_smithy_json::deserialize::token::expect_number_or_null(tokens.next())?
                                    .map(i32::try_from)
                                    .transpose()?,
                            );
                        }
                        "perFrameMetrics" => {
                            builder = builder.set_per_frame_metrics(
                                crate::protocol_serde::shape_list_of_frame_metric_type::de_list_of_frame_metric_type(tokens, _value)?,
                            );
                        }
                        "qvbrSettings" => {
                            builder =
                                builder.set_qvbr_settings(crate::protocol_serde::shape_av1_qvbr_settings::de_av1_qvbr_settings(tokens, _value)?);
                        }
                        "rateControlMode" => {
                            builder = builder.set_rate_control_mode(
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
                                    .map(|s| s.to_unescaped().map(|u| crate::types::Av1RateControlMode::from(u.as_ref())))
                                    .transpose()?,
                            );
                        }
                        "slices" => {
                            builder = builder.set_slices(
                                ::aws_smithy_json::deserialize::token::expect_number_or_null(tokens.next())?
                                    .map(i32::try_from)
                                    .transpose()?,
                            );
                        }
                        "spatialAdaptiveQuantization" => {
                            builder = builder.set_spatial_adaptive_quantization(
                                ::aws_smithy_json::deserialize::token::expect_string_or_null(tokens.next())?
                                    .map(|s| s.to_unescaped().map(|u| crate::types::Av1SpatialAdaptiveQuantization::from(u.as_ref())))
                                    .transpose()?,
                            );
                        }
                        _ => ::aws_smithy_json::deserialize::token::skip_value(tokens)?,
                    },
                    other => {
                        return Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(format!(
                            "expected object key or end object, found: {other:?}"
                        )))
                    }
                }
            }
            Ok(Some(builder.build()))
        }
        _ => Err(::aws_smithy_json::deserialize::error::DeserializeError::custom(
            "expected start object or null",
        )),
    }
}