| /* |
| * Copyright 2023 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| syntax = "proto3"; |
| |
| package mmc; |
| |
| option optimize_for = LITE_RUNTIME; |
| |
| // union of Lc3 config and codec parameters |
| message Lc3Param { |
| // encoder/decoder config |
| int32 dt_us = 1; |
| int32 sr_hz = 2; |
| int32 sr_pcm_hz = 3; |
| |
| // encode/decode parameter |
| enum PcmFmt { |
| kLc3PcmFormatS16 = 0; |
| kLc3PcmFormatS24 = 1; |
| } |
| |
| PcmFmt fmt = 4; |
| int32 stride = 5; |
| } |
| |
| // corresponding to SBC_ENC_PARAMS |
| message SbcEncoderParam { |
| enum SamplingFreq { |
| kSbcSf16000 = 0; |
| kSbcSf32000 = 1; |
| kSbcSf44100 = 2; |
| kSbcSf48000 = 3; |
| } |
| |
| enum ChannelMode { |
| kSbcMono = 0; |
| kSbcDual = 1; |
| kSbcStereo = 2; |
| kSbcJointStereo = 3; |
| } |
| |
| enum AllocationMethod { |
| kSbcLoudNess = 0; |
| kSbcSnr = 1; |
| } |
| |
| // Default to be kSbcFormatGeneral for SBC if not assigned. |
| // Assigning to kSbcFormatMsbc for MSBC. |
| enum Format { |
| kSbcFormatGeneral = 0; |
| kSbcFormatMsbc = 1; |
| } |
| |
| // encoder config |
| int32 num_of_subbands = 1; |
| int32 num_of_channels = 2; |
| int32 num_of_blocks = 3; |
| int32 bit_pool = 4; |
| int32 bit_rate = 5; |
| SamplingFreq sampling_freq = 6; |
| ChannelMode channel_mode = 7; |
| AllocationMethod allocation_method = 8; |
| Format format = 9; |
| } |
| |
| message SbcDecoderParam { |
| // decoder config |
| int32 max_channels = 1; |
| int32 stride = 2; |
| bool enhanced = 3; |
| } |
| |
| message AacEncoderParam { |
| // encoder config |
| int32 sample_rate = 1; |
| int32 channel_count = 2; |
| int32 bit_rate = 3; |
| |
| // encode parameter |
| int32 bit_depth = 4; |
| int32 effective_frame_size = 5; |
| } |
| |
| // union of different codec parameters |
| message ConfigParam { |
| // This determines the codec type and whether it is an encoder or a decoder. |
| oneof codec_param { |
| // HFP LC3 encoder and decoder have same parameter type. |
| Lc3Param hfp_lc3_encoder_param = 1; |
| Lc3Param hfp_lc3_decoder_param = 2; |
| // HFP MSBC use SBC parameters |
| SbcEncoderParam hfp_msbc_encoder_param = 3; |
| SbcDecoderParam hfp_msbc_decoder_param = 4; |
| AacEncoderParam a2dp_aac_encoder_param = 5; |
| } |
| } |