17c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* 27c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Copyright (C) 2011 The Android Open Source Project 37c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 47c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Licensed under the Apache License, Version 2.0 (the "License"); 57c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * you may not use this file except in compliance with the License. 67c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * You may obtain a copy of the License at 77c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 87c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * http://www.apache.org/licenses/LICENSE-2.0 97c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * 107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * Unless required by applicable law or agreed to in writing, software 117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * distributed under the License is distributed on an "AS IS" BASIS, 127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * See the License for the specific language governing permissions and 147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi * limitations under the License. 157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi */ 167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Project:: */ 207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* %name: SSRC.h % */ 217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* 257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi The input and output blocks of the SRC are by default blocks of 40 ms. This means that 267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi the following default block sizes are used: 277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi Fs Default Block size 297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi ----- ---------- 307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 8000 320 317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 11025 441 327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 12000 480 337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 16000 640 347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 22050 882 357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 24000 960 367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 32000 1280 377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 44100 1764 387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 48000 1920 397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi An API is provided to change the default block size into any multiple of the minimal 417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi block size. 427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi All the sampling rates above are supported as input and as output sampling rate 447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*/ 457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#ifndef __SSRC_H__ 477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define __SSRC_H__ 487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**************************************************************************************** 507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi INCLUDES 517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*****************************************************************************************/ 527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#include "LVM_Types.h" 547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**************************************************************************************** 567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi DEFINITIONS 577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*****************************************************************************************/ 587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define SSRC_INSTANCE_SIZE 548 607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define SSRC_INSTANCE_ALIGNMENT 4 617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#define SSRC_SCRATCH_ALIGNMENT 4 627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**************************************************************************************** 647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi TYPE DEFINITIONS 657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*****************************************************************************************/ 667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Status return values */ 687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum 697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_OK = 0, /* Successful return from a routine */ 717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_INVALID_FS = 1, /* The input or the output sampling rate is 727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi invalid */ 737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_INVALID_NR_CHANNELS = 2, /* The number of channels is not equal to mono 747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi or stereo */ 757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_NULL_POINTER = 3, /* One of the input pointers is NULL */ 767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_WRONG_NR_SAMPLES = 4, /* Invalid number of samples */ 777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_ALLINGMENT_ERROR = 5, /* The instance memory or the scratch memory 787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi is not alligned */ 797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_INVALID_MODE = 6, /* A wrong value has been used for the mode 807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi parameter */ 817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_INVALID_VALUE = 7, /* An invalid (out of range) value has been 827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi used for one of the parameters */ 837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVXXX_RETURNSTATUS_DUMMY = LVM_MAXENUM 847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} SSRC_ReturnStatus_en; 857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Instance memory */ 877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct 887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_INT32 Storage [ SSRC_INSTANCE_SIZE/4 ]; 907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} SSRC_Instance_t; 917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Scratch memory */ 937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef LVM_INT32 SSRC_Scratch_t; 947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Nuber of samples mode */ 967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef enum 977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_NR_SAMPLES_DEFAULT = 0, 997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_NR_SAMPLES_MIN = 1, 1007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_NR_SAMPLES_DUMMY = LVM_MAXENUM 1017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} SSRC_NR_SAMPLES_MODE_en; 1027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Instance parameters */ 1047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargitypedef struct 1057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi{ 1067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_Fs_en SSRC_Fs_In; 1077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_Fs_en SSRC_Fs_Out; 1087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_Format_en SSRC_NrOfChannels; 1097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_INT16 NrSamplesIn; 1107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_INT16 NrSamplesOut; 1117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi} SSRC_Params_t; 1127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/**************************************************************************************** 1157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi FUNCTION PROTOTYPES 1167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi*****************************************************************************************/ 1177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 1207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* FUNCTION: SSRC_GetNrSamples */ 1227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* DESCRIPTION: */ 1247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* This function retrieves the number of samples (or sample pairs for stereo) to be */ 1257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* used as input and as output of the SSRC module. */ 1267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* PARAMETERS: */ 1287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Mode There are two modes: */ 1297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* - SSRC_NR_SAMPELS_DEFAULT. In this mode, the function */ 1307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* will return the number of samples for 40 ms blocks */ 1317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* - SSRC_NR_SAMPELS_MIN will return the minimal number */ 1327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* of samples that is supported for this conversion */ 1337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* ratio. Each integer multiple of this ratio will */ 1347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* be accepted by the SSRC_Init function */ 1357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* pSSRC_Params pointer to the instance parameters */ 1377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* RETURNS: */ 1397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_OK Succeeded */ 1407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_INVALID_FS When the requested input or output sampling rates */ 1417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* are invalid. */ 1427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_INVALID_NR_CHANNELS When the channel format is not equal to LVM_MONO */ 1437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* or LVM_STEREO */ 1447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_NULL_POINTER When pSSRC_Params is a NULL pointer */ 1457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_INVALID_MODE When Mode is not a valid setting */ 1467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* NOTES: */ 1497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 1517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiSSRC_ReturnStatus_en SSRC_GetNrSamples( SSRC_NR_SAMPLES_MODE_en Mode, 1537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_Params_t* pSSRC_Params ); 1547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 1577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* FUNCTION: SSRC_GetScratchSize */ 1597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* DESCRIPTION: */ 1617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* This function retrieves the scratch size for a given conversion ratio and */ 1627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* for given buffer sizes at the input and at the output */ 1637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* PARAMETERS: */ 1657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* pSSRC_Params pointer to the instance parameters */ 1667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* pScratchSize pointer to the scratch size. The SSRC_GetScratchSize */ 1677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* function will fill in the correct value (in bytes). */ 1687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* RETURNS: */ 1707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_OK when the function call succeeds */ 1717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_INVALID_FS When the requested input or output sampling rates */ 1727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* are invalid. */ 1737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_INVALID_NR_CHANNELS When the channel format is not equal to LVM_MONO */ 1747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* or LVM_STEREO */ 1757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_NULL_POINTER When any of the input pointers is a NULL pointer */ 1767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_WRONG_NR_SAMPLES When the number of samples on the input or on the output */ 1777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* are incorrect */ 1787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* NOTES: */ 1807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 1827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiSSRC_ReturnStatus_en SSRC_GetScratchSize( SSRC_Params_t* pSSRC_Params, 1847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_INT32* pScratchSize ); 1857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 1877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 1887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* FUNCTION: SSRC_Init */ 1907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* DESCRIPTION: */ 1927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* This function is used to initialize the SSRC module instance. */ 1937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* PARAMETERS: */ 1957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* pSSRC_Instance Instance pointer */ 1967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 1977c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* pSSRC_Scratch pointer to the scratch memory */ 1987c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* pSSRC_Params pointer to the instance parameters */ 1997c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* pInputInScratch, pointer to a location in the scratch memory that can be */ 2007c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* used to store the input samples (e.g. to save memory) */ 2017c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* pOutputInScratch pointer to a location in the scratch memory that can be */ 2027c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* used to store the output samples (e.g. to save memory) */ 2037c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2047c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* RETURNS: */ 2057c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_OK Succeeded */ 2067c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_INVALID_FS When the requested input or output sampling rates */ 2077c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* are invalid. */ 2087c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_INVALID_NR_CHANNELS When the channel format is not equal to LVM_MONO */ 2097c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* or LVM_STEREO */ 2107c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_WRONG_NR_SAMPLES When the number of samples on the input or the output */ 2117c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* are incorrect */ 2127c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_NULL_POINTER When any of the input pointers is a NULL pointer */ 2137c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_ALLINGMENT_ERROR When the instance memory or the scratch memory is not */ 2147c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* 4 bytes alligned */ 2157c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2167c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* NOTES: */ 2177c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* 1. The init function will clear the internal state */ 2187c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2197c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 2207c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2217c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiSSRC_ReturnStatus_en SSRC_Init( SSRC_Instance_t* pSSRC_Instance, 2227c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_Scratch_t* pSSRC_Scratch, 2237c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi SSRC_Params_t* pSSRC_Params, 2247c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_INT16** ppInputInScratch, 2257c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_INT16** ppOutputInScratch); 2267c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2277c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2287c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 2297c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2307c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* FUNCTION: SSRC_SetGains */ 2317c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2327c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* DESCRIPTION: */ 2337c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* This function sets headroom gain and the post gain of the SSRC */ 2347c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2357c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* PARAMETERS: */ 2367c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* bHeadroomGainEnabled parameter to enable or disable the headroom gain of the */ 2377c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC. The default value is LVM_MODE_ON. LVM_MODE_OFF */ 2387c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* can be used in case it can be guaranteed that the input */ 2397c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* level is below -6dB in all cases (the default headroom */ 2407c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* is -6 dB) */ 2417c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2427c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* bOutputGainEnabled parameter to enable or disable the output gain. The */ 2437c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* default value is LVM_MODE_ON */ 2447c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2457c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* OutputGain the value of the output gain. The output gain is a linear */ 2467c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* gain value. 0x7FFF is equal to +6 dB and 0x0000 corresponds */ 2477c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* to -inf dB. By default, a 3dB gain is applied, resulting */ 2487c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* in an overall gain of -3dB (-6dB headroom + 3dB output gain)*/ 2497c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2507c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* RETURNS: */ 2517c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_OK Succeeded */ 2527c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_NULL_POINTER When pSSRC_Instance is a NULL pointer */ 2537c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_INVALID_MODE Wrong value used for the bHeadroomGainEnabled or the */ 2547c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* bOutputGainEnabled parameters. */ 2557c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_INVALID_VALUE When OutputGain is out to the range [0;32767] */ 2567c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2577c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* NOTES: */ 2587c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* 1. The SSRC_SetGains function is an optional function that should only be used */ 2597c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* in rare cases. Preferably, use the default settings. */ 2607c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2617c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 2627c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2637c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiSSRC_ReturnStatus_en SSRC_SetGains( SSRC_Instance_t* pSSRC_Instance, 2647c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_Mode_en bHeadroomGainEnabled, 2657c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_Mode_en bOutputGainEnabled, 2667c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_INT16 OutputGain ); 2677c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2687c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2697c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 2707c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2717c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* FUNCTION: SSRC_Process */ 2727c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2737c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* DESCRIPTION: */ 2747c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* Process function for the SSRC module. */ 2757c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2767c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* PARAMETERS: */ 2777c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* pSSRC_Instance Instance pointer */ 2787c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* pSSRC_AudioIn Pointer to the input data */ 2797c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* pSSRC_AudioOut Pointer to the output data */ 2807c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2817c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* RETURNS: */ 2827c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_OK Succeeded */ 2837c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* SSRC_NULL_POINTER When one of pSSRC_Instance, pSSRC_AudioIn or pSSRC_AudioOut */ 2847c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* is NULL */ 2857c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2867c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* NOTES: */ 2877c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/* */ 2887c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 2897c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2907c9d8018755adf1857571125ba1b3598c96ea506Dharmaray KundargiSSRC_ReturnStatus_en SSRC_Process( SSRC_Instance_t* pSSRC_Instance, 2917c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_INT16* pSSRC_AudioIn, 2927c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi LVM_INT16* pSSRC_AudioOut); 2937c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2947c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi/****************************************************************************************/ 2957c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi 2967c9d8018755adf1857571125ba1b3598c96ea506Dharmaray Kundargi#endif /* __SSRC_H__ */ 297