#ifndef QDSP5AUDRECCMDI_H #define QDSP5AUDRECCMDI_H /*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====* * * A U D I O R E C O R D I N T E R N A L C O M M A N D S * * GENERAL DESCRIPTION * This file contains defintions of format blocks of commands * that are accepted by AUDREC Task * * REFERENCES * None * * EXTERNALIZED FUNCTIONS * None * * Copyright (c) 1992-2009, 2011 The Linux Foundation. All rights reserved. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and * may be copied, distributed, and modified under those terms. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * *====*====*====*====*====*====*====*====*====*====*====*====*====*====*====*/ /*=========================================================================== EDIT HISTORY FOR FILE This section contains comments describing changes made to this file. Notice that changes are listed in reverse chronological order. $Header: //source/qcom/qct/multimedia2/Audio/drivers/QDSP5Driver/QDSP5Interface/main/latest/qdsp5audreccmdi.h#3 $ ============================================================================*/ /* * AUDRECTASK COMMANDS * ARM uses 2 queues to communicate with the AUDRECTASK * 1.uPAudRecCmdQueue * Location :MEMC * Buffer Size : 8 * No of Buffers in a queue : 3 * 2.audRecUpBitStreamQueue * Location : MEMC * Buffer Size : 4 * No of buffers in a queue : 2 */ /* * Commands on uPAudRecCmdQueue */ /* * Command to initiate and terminate the audio recording section */ #define AUDREC_CMD_CFG 0x0000 #define AUDREC_CMD_CFG_LEN sizeof(audrec_cmd_cfg) #define AUDREC_CMD_TYPE_0_INDEX_WAV 0x0000 #define AUDREC_CMD_TYPE_0_INDEX_AAC 0x0001 #define AUDREC_CMD_TYPE_0_INDEX_AMRNB 0x000A #define AUDREC_CMD_TYPE_0_INDEX_EVRC 0x000B #define AUDREC_CMD_TYPE_0_INDEX_QCELP 0x000C #define AUDREC_CMD_TYPE_0_ENA 0x4000 #define AUDREC_CMD_TYPE_0_DIS 0x0000 #define AUDREC_CMD_TYPE_0_NOUPDATE 0x0000 #define AUDREC_CMD_TYPE_0_UPDATE 0x8000 #define AUDREC_CMD_TYPE_1_INDEX_SBC 0x0002 #define AUDREC_CMD_TYPE_1_ENA 0x4000 #define AUDREC_CMD_TYPE_1_DIS 0x0000 #define AUDREC_CMD_TYPE_1_NOUPDATE 0x0000 #define AUDREC_CMD_TYPE_1_UPDATE 0x8000 typedef struct { unsigned short cmd_id; unsigned short type_0; unsigned short type_1; } __attribute__((packed)) audrec_cmd_cfg; /* * Command to configure the recording parameters for RecType0(AAC/WAV) encoder */ #define AUDREC_CMD_AREC0PARAM_CFG 0x0001 #define AUDREC_CMD_AREC0PARAM_CFG_LEN \ sizeof(audrec_cmd_arec0param_cfg) #define AUDREC_CMD_SAMP_RATE_INDX_8000 0x000B #define AUDREC_CMD_SAMP_RATE_INDX_11025 0x000A #define AUDREC_CMD_SAMP_RATE_INDX_12000 0x0009 #define AUDREC_CMD_SAMP_RATE_INDX_16000 0x0008 #define AUDREC_CMD_SAMP_RATE_INDX_22050 0x0007 #define AUDREC_CMD_SAMP_RATE_INDX_24000 0x0006 #define AUDREC_CMD_SAMP_RATE_INDX_32000 0x0005 #define AUDREC_CMD_SAMP_RATE_INDX_44100 0x0004 #define AUDREC_CMD_SAMP_RATE_INDX_48000 0x0003 #define AUDREC_CMD_STEREO_MODE_MONO 0x0000 #define AUDREC_CMD_STEREO_MODE_STEREO 0x0001 typedef struct { unsigned short cmd_id; unsigned short ptr_to_extpkt_buffer_msw; unsigned short ptr_to_extpkt_buffer_lsw; unsigned short buf_len; unsigned short samp_rate_index; unsigned short stereo_mode; unsigned short rec_quality; } __attribute__((packed)) audrec_cmd_arec0param_cfg; /* * Command to configure the recording parameters for RecType1(SBC) encoder */ #define AUDREC_CMD_AREC1PARAM_CFG 0x0002 #define AUDREC_CMD_AREC1PARAM_CFG_LEN \ sizeof(audrec_cmd_arec1param_cfg) #define AUDREC_CMD_PARAM_BUF_BLOCKS_4 0x0000 #define AUDREC_CMD_PARAM_BUF_BLOCKS_8 0x0001 #define AUDREC_CMD_PARAM_BUF_BLOCKS_12 0x0002 #define AUDREC_CMD_PARAM_BUF_BLOCKS_16 0x0003 #define AUDREC_CMD_PARAM_BUF_SUB_BANDS_8 0x0010 #define AUDREC_CMD_PARAM_BUF_MODE_MONO 0x0000 #define AUDREC_CMD_PARAM_BUF_MODE_DUAL 0x0040 #define AUDREC_CMD_PARAM_BUF_MODE_STEREO 0x0050 #define AUDREC_CMD_PARAM_BUF_MODE_JSTEREO 0x0060 #define AUDREC_CMD_PARAM_BUF_LOUDNESS 0x0000 #define AUDREC_CMD_PARAM_BUF_SNR 0x0100 #define AUDREC_CMD_PARAM_BUF_BASIC_VER 0x0000 typedef struct { unsigned short cmd_id; unsigned short ptr_to_extpkt_buffer_msw; unsigned short ptr_to_extpkt_buffer_lsw; unsigned short buf_len; unsigned short param_buf; unsigned short bit_rate_0; unsigned short bit_rate_1; } __attribute__((packed)) audrec_cmd_arec1param_cfg; /* * Command to enable encoder for the recording */ #define AUDREC_CMD_ENC_CFG 0x0003 #define AUDREC_CMD_ENC_CFG_LEN \ sizeof(struct audrec_cmd_enc_cfg) #define AUDREC_CMD_ENC_ENA 0x8000 #define AUDREC_CMD_ENC_DIS 0x0000 #define AUDREC_CMD_ENC_TYPE_MASK 0x001F struct audrec_cmd_enc_cfg { unsigned short cmd_id; unsigned short audrec_enc_type; unsigned short audrec_obj_idx; } __attribute__((packed)); /* * Command to set external memory config for the selected encoder */ #define AUDREC_CMD_ARECMEM_CFG 0x0004 #define AUDREC_CMD_ARECMEM_CFG_LEN \ sizeof(struct audrec_cmd_arecmem_cfg) struct audrec_cmd_arecmem_cfg { unsigned short cmd_id; unsigned short audrec_obj_idx; unsigned short audrec_up_pkt_intm_cnt; unsigned short audrec_extpkt_buffer_msw; unsigned short audrec_extpkt_buffer_lsw; unsigned short audrec_extpkt_buffer_num; } __attribute__((packed)); /* * Command to configure the recording parameters for selected encoder */ #define AUDREC_CMD_ARECPARAM_CFG 0x0005 #define AUDREC_CMD_ARECPARAM_COMMON_CFG_LEN \ sizeof(struct audrec_cmd_arecparam_common_cfg) struct audrec_cmd_arecparam_common_cfg { unsigned short cmd_id; unsigned short audrec_obj_idx; } __attribute__((packed)); #define AUDREC_CMD_ARECPARAM_WAV_CFG_LEN \ sizeof(struct audrec_cmd_arecparam_wav_cfg) struct audrec_cmd_arecparam_wav_cfg { struct audrec_cmd_arecparam_common_cfg common; unsigned short samp_rate_idx; unsigned short stereo_mode; } __attribute__((packed)); #define AUDREC_CMD_ARECPARAM_AAC_CFG_LEN \ sizeof(struct audrec_cmd_arecparam_aac_cfg) struct audrec_cmd_arecparam_aac_cfg { struct audrec_cmd_arecparam_common_cfg common; unsigned short samp_rate_idx; unsigned short stereo_mode; unsigned short rec_quality; } __attribute__((packed)); #define AUDREC_CMD_ARECPARAM_SBC_CFG_LEN \ sizeof(struct audrec_cmd_arecparam_sbc_cfg) struct audrec_cmd_arecparam_sbc_cfg { struct audrec_cmd_arecparam_common_cfg common; unsigned short param_buf; unsigned short bit_rate_0; unsigned short bit_rate_1; } __attribute__((packed)); #define AUDREC_CMD_ARECPARAM_AMRNB_CFG_LEN \ sizeof(struct audrec_cmd_arecparam_amrnb_cfg) struct audrec_cmd_arecparam_amrnb_cfg { struct audrec_cmd_arecparam_common_cfg common; unsigned short samp_rate_idx; unsigned short voicememoencweight1; unsigned short voicememoencweight2; unsigned short voicememoencweight3; unsigned short voicememoencweight4; unsigned short update_mode; unsigned short dtx_mode; unsigned short test_mode; unsigned short used_mode; } __attribute__((packed)); #define AUDREC_CMD_ARECPARAM_EVRC_CFG_LEN \ sizeof(struct audrec_cmd_arecparam_evrc_cfg) struct audrec_cmd_arecparam_evrc_cfg { struct audrec_cmd_arecparam_common_cfg common; unsigned short samp_rate_idx; unsigned short voicememoencweight1; unsigned short voicememoencweight2; unsigned short voicememoencweight3; unsigned short voicememoencweight4; unsigned short update_mode; unsigned short enc_min_rate; unsigned short enc_max_rate; unsigned short rate_modulation_cmd; } __attribute__((packed)); #define AUDREC_CMD_ARECPARAM_QCELP_CFG_LEN \ sizeof(struct audrec_cmd_arecparam_qcelp_cfg) struct audrec_cmd_arecparam_qcelp_cfg { struct audrec_cmd_arecparam_common_cfg common; unsigned short samp_rate_idx; unsigned short voicememoencweight1; unsigned short voicememoencweight2; unsigned short voicememoencweight3; unsigned short voicememoencweight4; unsigned short update_mode; unsigned short enc_min_rate; unsigned short enc_max_rate; unsigned short rate_modulation_cmd; unsigned short reduced_rate_level; } __attribute__((packed)); #define AUDREC_CMD_ARECPARAM_FGVNB_CFG_LEN \ sizeof(struct audrec_cmd_arecparam_fgvnb_cfg) struct audrec_cmd_arecparam_fgvnb_cfg { struct audrec_cmd_arecparam_common_cfg common; unsigned short samp_rate_idx; unsigned short voicememoencweight1; unsigned short voicememoencweight2; unsigned short voicememoencweight3; unsigned short voicememoencweight4; unsigned short update_mode; unsigned short fgv_min_rate; unsigned short fgv_max_rate; unsigned short reduced_rate_level; } __attribute__((packed)); /* * Command to configure Tunnel(RT) or Non-Tunnel(FTRT) mode */ #define AUDREC_CMD_ROUTING_MODE 0x0006 #define AUDREC_CMD_ROUTING_MODE_LEN \ sizeof(struct audpreproc_audrec_cmd_routing_mode) #define AUDIO_ROUTING_MODE_FTRT 0x0001 #define AUDIO_ROUTING_MODE_RT 0x0002 struct audrec_cmd_routing_mode { unsigned short cmd_id; unsigned short routing_mode; } __packed; /* * Command to configure pcm input memory */ #define AUDREC_CMD_PCM_CFG_ARM_TO_ENC 0x0007 #define AUDREC_CMD_PCM_CFG_ARM_TO_ENC_LEN \ sizeof(struct audrec_cmd_pcm_cfg_arm_to_enc) struct audrec_cmd_pcm_cfg_arm_to_enc { unsigned short cmd_id; unsigned short config_update_flag; unsigned short enable_flag; unsigned short sampling_freq; unsigned short channels; unsigned short frequency_of_intimation; unsigned short max_number_of_buffers; } __packed; #define AUDREC_PCM_CONFIG_UPDATE_FLAG_ENABLE -1 #define AUDREC_PCM_CONFIG_UPDATE_FLAG_DISABLE 0 #define AUDREC_ENABLE_FLAG_VALUE -1 #define AUDREC_DISABLE_FLAG_VALUE 0 /* * Command to intimate available pcm buffer */ #define AUDREC_CMD_PCM_BUFFER_PTR_REFRESH_ARM_TO_ENC 0x0008 #define AUDREC_CMD_PCM_BUFFER_PTR_REFRESH_ARM_TO_ENC_LEN \ sizeof(struct audrec_cmd_pcm_buffer_ptr_refresh_arm_enc) struct audrec_cmd_pcm_buffer_ptr_refresh_arm_enc { unsigned short cmd_id; unsigned short num_buffers; unsigned short buffer_write_cnt_msw; unsigned short buffer_write_cnt_lsw; unsigned short buf_address_length[8];/*this array holds address and length details of two buffers*/ } __packed; /* * Command to flush */ #define AUDREC_CMD_FLUSH 0x009 #define AUDREC_CMD_FLUSH_LEN \ sizeof(struct audrec_cmd_flush) struct audrec_cmd_flush { unsigned short cmd_id; } __packed; /* * Commands on audRecUpBitStreamQueue */ /* * Command to indicate the current packet read count */ #define AUDREC_CMD_PACKET_EXT_PTR 0x0000 #define AUDREC_CMD_PACKET_EXT_PTR_LEN \ sizeof(audrec_cmd_packet_ext_ptr) #define AUDREC_CMD_TYPE_0 0x0000 #define AUDREC_CMD_TYPE_1 0x0001 typedef struct { unsigned short cmd_id; unsigned short type; /* audrec_obj_idx */ unsigned short curr_rec_count_msw; unsigned short curr_rec_count_lsw; } __attribute__((packed)) audrec_cmd_packet_ext_ptr; #endif