// 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. syntax = "proto2"; package iamf_tools_cli_proto; enum AnimationType { ANIMATE_INVALID = 0; ANIMATE_STEP = 1; ANIMATE_LINEAR = 2; ANIMATE_BEZIER = 3; } // Values are represented to align with the IAMF spec. // // See https://aomediacodec.github.io/iamf/v1.1.0.html#syntax-mix-gain-param for // further details. // // See detailed examples on Q7.8 format below in `AnimationLinearInt16`. message AnimationStepInt16 { optional int32 start_point_value = 1; // Q7.8. } // Values are represented to align with the IAMF spec. // // See https://aomediacodec.github.io/iamf/v1.1.0.html#syntax-mix-gain-param for // further details. // // See detailed examples on Q7.8 format below in `AnimationLinearInt16`. message AnimationLinearInt16 { optional int32 start_point_value = 1; // Q7.8. optional int32 end_point_value = 2; // Q7.8. } // Values are represented to align with the IAMF spec. // // See https://aomediacodec.github.io/iamf/v1.1.0.html#syntax-mix-gain-param for // further details. // // To convert from dB to Q7.8, multiply by 256. Example: // - For -3 dB, set the proto value to 256 * -3 = -768. // - For +6 dB, set the proto value to 256 * 6 = 1536. // // To convert from a float in the range [0.0, 1.0] to Q0.8. Multiply by 256 and // clamp to the range [0, 255]. Examples: // - For a control point relative time of 0.5, set the proto value to // clam(0.5 * 256, 0, 255) = 128. // - For a control point relative time of 1.0, set the proto value to // clamp(1.0 * 256, 0, 255) = 255. message AnimationBezierInt16 { optional int32 start_point_value = 1; // Q7.8. optional int32 end_point_value = 2; // Q7.8. optional int32 control_point_value = 3; // Q7.8. optional uint32 control_point_relative_time = 4; // Q0.8. } message AnimatedParameterDataInt16 { oneof parameter_data { AnimationStepInt16 step = 1; AnimationLinearInt16 linear = 2; AnimationBezierInt16 bezier = 3; } } message MixGainParameterData { optional AnimationType animation_type = 1; optional AnimatedParameterDataInt16 param_data = 2; } enum DMixPMode { DMIXP_MODE_INVALID = 0; // (alpha, beta, gamma, delta, w_idx_offset) DMIXP_MODE_1 = 1; // ( 1, 1, 0.707, 0.707, -1) DMIXP_MODE_2 = 2; // (0.707, 0.707, 0.707, 0.707, -1) DMIXP_MODE_3 = 3; // ( 1, 0.866, 0.866, 0.866, -1) DMIXP_MODE_RESERVED_A = 4; DMIXP_MODE_1_N = 5; // ( 1, 1, 0.707, 0.707, 1) DMIXP_MODE_2_N = 6; // (0.707, 0.707, 0.707, 0.707, 1) DMIXP_MODE_3_N = 7; // ( 1, 0.866, 0.866, 0.866, 1) DMIXP_MODE_RESERVED_B = 8; } message DemixingInfoParameterData { optional DMixPMode dmixp_mode = 1; optional uint32 reserved = 2; } message ReconGains { reserved 1; // Mapping from a bit position to a recon gain value. // If recon_gain[j] is defined, then the j-th bit of recon_gain_flags[i] // (for the i-th layer) will be set. map recon_gain = 2; } message ReconGainInfoParameterData { reserved 1; // Length = `num_layers`. repeated ReconGains recon_gains_for_layer = 2; }