/* * Copyright (c) 2023, Alliance for Open Media. All rights reserved * * This source code is subject to the terms of the BSD 3-Clause Clear License * and the Alliance for Open Media Patent License 1.0. If the BSD 3-Clause Clear * License was not distributed with this source code in the LICENSE file, you * can obtain it at www.aomedia.org/license/software-license/bsd-3-c-c. If the * Alliance for Open Media Patent License 1.0 was not distributed with this * source code in the PATENTS file, you can obtain it at * www.aomedia.org/license/patent. */ #ifndef CLI_PROTO_CONVERSION_PROTO_UTILS_H_ #define CLI_PROTO_CONVERSION_PROTO_UTILS_H_ #include #include "absl/status/status.h" #include "iamf/cli/proto/obu_header.pb.h" #include "iamf/cli/proto/param_definitions.pb.h" #include "iamf/cli/proto/parameter_data.pb.h" #include "iamf/cli/proto/test_vector_metadata.pb.h" #include "iamf/common/leb_generator.h" #include "iamf/obu/demixing_info_parameter_data.h" #include "iamf/obu/obu_header.h" #include "iamf/obu/param_definitions.h" namespace iamf_tools { /*!\brief Copies param definitions from the corresponding protocol buffer. * * \param input_param_definition Input protocol buffer. * \param param_definition Destination param definition. * \return `absl::OkStatus()` on success. A specific status on failure. */ absl::Status CopyParamDefinition( const iamf_tools_cli_proto::ParamDefinition& input_param_definition, ParamDefinition& param_definition); /*!\brief Returns an `ObuHeader` based on the corresponding protocol buffer. * * \param input_obu_header Input protocol buffer. * \return Result. */ ObuHeader GetHeaderFromMetadata( const iamf_tools_cli_proto::ObuHeaderMetadata& input_obu_header); /*!\brief Copies `DemixingInfoParameterData` from the input protocol buffer. * * \param input_demixing_info_parameter_data Input protocol buffer. * \param obu_demixing_param_data Reference to the result. * \return `absl::OkStatus()` on success. A specific status on failure. */ absl::Status CopyDemixingInfoParameterData( const iamf_tools_cli_proto::DemixingInfoParameterData& input_demixing_info_parameter_data, DemixingInfoParameterData& obu_demixing_param_data); /*!\brief Copies `DMixPMode` to the output protocol buffer. * * \param obu_dmixp_mode Input `DMixPMode`. * \param dmixp_mode Reference to output protocol buffer. * \return `absl::OkStatus()` on success. A specific status on failure. */ absl::Status CopyDMixPMode(DemixingInfoParameterData::DMixPMode obu_dmixp_mode, iamf_tools_cli_proto::DMixPMode& dmixp_mode); /*!\brief Creates a `LebGenerator` based on the input config. * * \param user_config An instance of a `Leb128Generator` proto, from the * `UserMetadata.TestVectorMetadata` proto. * \return `LebGenerator` on success. `nullptr` if the config is invalid. */ std::unique_ptr CreateLebGenerator( const iamf_tools_cli_proto::Leb128Generator& user_config); } // namespace iamf_tools #endif // CLI_PROTO_CONVERSION_PROTO_UTILS_H_