summaryrefslogtreecommitdiff
path: root/software/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.c
diff options
context:
space:
mode:
Diffstat (limited to 'software/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.c')
-rw-r--r--software/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.c43
1 files changed, 31 insertions, 12 deletions
diff --git a/software/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.c b/software/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.c
index 7710154..53bbd67 100644
--- a/software/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.c
+++ b/software/octdeviceapi/oct6100api/oct6100_api/oct6100_channel.c
@@ -23,9 +23,9 @@ You should have received a copy of the GNU General Public License
along with the OCT6100 GPL API; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
-$Octasic_Release: OCT612xAPI-01.00-PR39 $
+$Octasic_Release: OCT612xAPI-01.00-PR40 $
-$Octasic_Revision: 460 $
+$Octasic_Revision: 464 $
\*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*/
@@ -183,7 +183,7 @@ UINT32 Oct6100ChannelOpenDef(
f_pChannelOpen->CodecConfig.fEnableSilenceSuppression = FALSE;
f_pChannelOpen->CodecConfig.ulPhasingTsstHndl = cOCT6100_INVALID_HANDLE;
- f_pChannelOpen->CodecConfig.ulPhase = 0;
+ f_pChannelOpen->CodecConfig.ulPhase = 1;
f_pChannelOpen->CodecConfig.ulPhasingType = cOCT6100_NO_PHASING;
@@ -1353,6 +1353,15 @@ UINT32 Oct6100ApiCheckChannelParams(
if ( ( f_pChannelOpen->ulEchoOperationMode == cOCT6100_ECHO_OP_MODE_NO_ECHO )
&& ( pVqeConfig->fEnableNlp == FALSE ) )
return cOCT6100_ERR_CHANNEL_ECHO_OP_MODE_NLP_REQUIRED;
+
+ if ( ( f_pChannelOpen->ulEchoOperationMode == cOCT6100_ECHO_OP_MODE_SPEECH_RECOGNITION )
+ && ( pVqeConfig->fEnableNlp == FALSE ) )
+ return cOCT6100_ERR_CHANNEL_ECHO_OP_MODE_NLP_REQUIRED;
+
+ /* Comfort noise must be activated for speech recognition mode to work. */
+ if ( ( f_pChannelOpen->ulEchoOperationMode == cOCT6100_ECHO_OP_MODE_SPEECH_RECOGNITION )
+ && ( pVqeConfig->ulComfortNoiseMode == cOCT6100_COMFORT_NOISE_OFF ) )
+ return cOCT6100_ERR_CHANNEL_COMFORT_NOISE_REQUIRED;
/*==============================================================================*/
@@ -3840,6 +3849,15 @@ UINT32 Oct6100ApiCheckChannelModify(
if ( ( f_pTempChanOpen->ulEchoOperationMode == cOCT6100_ECHO_OP_MODE_NO_ECHO )
&& ( f_pTempChanOpen->VqeConfig.fEnableNlp == FALSE ) )
return cOCT6100_ERR_CHANNEL_ECHO_OP_MODE_NLP_REQUIRED;
+
+ if ( ( f_pTempChanOpen->ulEchoOperationMode == cOCT6100_ECHO_OP_MODE_SPEECH_RECOGNITION )
+ && ( f_pTempChanOpen->VqeConfig.fEnableNlp == FALSE ) )
+ return cOCT6100_ERR_CHANNEL_ECHO_OP_MODE_NLP_REQUIRED;
+
+ /* Comfort noise must be activated for speech recognition mode to work. */
+ if ( ( f_pTempChanOpen->ulEchoOperationMode == cOCT6100_ECHO_OP_MODE_SPEECH_RECOGNITION )
+ && ( f_pTempChanOpen->VqeConfig.ulComfortNoiseMode == cOCT6100_COMFORT_NOISE_OFF ) )
+ return cOCT6100_ERR_CHANNEL_COMFORT_NOISE_REQUIRED;
/* Check the Codec config.*/
if ( f_pChannelModify->fCodecConfigModified == TRUE )
@@ -7937,11 +7955,6 @@ UINT32 Oct6100ApiCheckVqeConfig(
|| ( ( ( f_pVqeConfig->ulToneDisablerVqeActivationDelay - 300 ) % 512 ) != 0 ) )
return cOCT6100_ERR_CHANNEL_TONE_DISABLER_ACTIVATION_DELAY;
- /* Check if the tone disabler is activated when the user requests a different activation delay. */
- if ( ( f_pVqeConfig->ulToneDisablerVqeActivationDelay != 300 )
- && ( f_fEnableToneDisabler == FALSE ) )
- return cOCT6100_ERR_CHANNEL_MUST_ENABLE_TONE_DISABLER;
-
/* Check the enable music protection flag. */
if ( ( f_pVqeConfig->fEnableMusicProtection != TRUE ) && ( f_pVqeConfig->fEnableMusicProtection != FALSE ) )
return cOCT6100_ERR_CHANNEL_ENABLE_MUSIC_PROTECTION;
@@ -8124,7 +8137,8 @@ UINT32 Oct6100ApiCheckCodecConfig(
return cOCT6100_ERR_CHANNEL_INVALID_PHASING_HANDLE;
/* Check the specified phase value against the phasing length of the phasing TSST.*/
- if ( f_pCodecConfig->ulPhase >= pPhasingEntry->usPhasingLength )
+ if ( ( f_pCodecConfig->ulPhase == 0 )
+ || ( f_pCodecConfig->ulPhase >= pPhasingEntry->usPhasingLength ) )
return cOCT6100_ERR_CHANNEL_PHASING_INVALID_PHASE;
}
else
@@ -8848,7 +8862,8 @@ UINT32 Oct6100ApiWriteVqeNlpMemory(
/* Check if the configuration has been changed. */
if ( ( f_fModifyOnly == FALSE )
|| ( ( f_fModifyOnly == TRUE )
- && ( f_pVqeConfig->ulToneDisablerVqeActivationDelay != pChanEntry->VqeConfig.usToneDisablerVqeActivationDelay ) ) )
+ && ( ( f_pVqeConfig->ulToneDisablerVqeActivationDelay != pChanEntry->VqeConfig.usToneDisablerVqeActivationDelay )
+ || ( f_pChannelOpen->fEnableToneDisabler != pChanEntry->fEnableToneDisabler ) ) ) )
{
ulFeatureBytesOffset = pSharedInfo->MemoryMap.ToneDisablerVqeActivationDelayOfst.usDwordOffset * 4;
ulFeatureBitOffset = pSharedInfo->MemoryMap.ToneDisablerVqeActivationDelayOfst.byBitOffset;
@@ -8867,8 +8882,12 @@ UINT32 Oct6100ApiWriteVqeNlpMemory(
ulTempData &= (~ulMask);
- /* Set the tone disabler VQE activation delay. */
- ulTempData |= ( ( (UINT32)( ( f_pVqeConfig->ulToneDisablerVqeActivationDelay - 300 ) / 512 ) ) << ulFeatureBitOffset );
+ /* Set the tone disabler VQE activation delay. The VQE activation delay */
+ /* is only set if the tone disabler is activated. */
+ if ( f_pChannelOpen->fEnableToneDisabler == TRUE )
+ ulTempData |= ( ( (UINT32)( ( f_pVqeConfig->ulToneDisablerVqeActivationDelay - 300 ) / 512 ) ) << ulFeatureBitOffset );
+ else
+ ulTempData |= ( 0 ) << ulFeatureBitOffset;
/* Write the new DWORD where the field is located. */
mOCT6100_SAVE_NLP_CONF_DWORD( f_pApiInstance,