17 #include <pia/transport/transport_definitions.h> 18 #include <pia/chat/chat_definitions.h> 20 #include <pia/transport/transport_Protocol.h> 22 #include <pia/common/common_CriticalSection.h> 24 #pragma diag_suppress 1300 26 #pragma diag_warning 1300 102 static const u32 AUDIO_FRAME_LENGTH_MIN = 64;
103 static const u32 AUDIO_FRAME_LENGTH_MAX = 192;
104 static const u32 AUDIO_FRAME_LENGTH_DEFAULT = 144;
106 static const size_t AUDIO_DATA_SIZE_PER_MILLI_SEC = 16;
107 static const size_t AUDIO_DATA_SIZE_MIN = (AUDIO_FRAME_LENGTH_MIN * AUDIO_DATA_SIZE_PER_MILLI_SEC);
108 static const size_t AUDIO_DATA_SIZE_MAX = (AUDIO_FRAME_LENGTH_MAX * AUDIO_DATA_SIZE_PER_MILLI_SEC);
109 static const size_t AUDIO_DATA_SIZE_DEFAULT = (AUDIO_FRAME_LENGTH_DEFAULT * AUDIO_DATA_SIZE_PER_MILLI_SEC);
111 static const size_t MAX_CONFERENCE_CLIENT = 16;
112 static const size_t MAX_AUDIO_STREAM = MAX_CONFERENCE_CLIENT - 1;
114 static const u32 VAD_CLAMP_GAIN_MAX = 0x3fffffff;
116 #if NN_PIA_HF_LIBRARY 117 static const s32 AGC_LEVEL_MIN = 0;
118 static const s32 AGC_LEVEL_MAX = 4;
119 static const s32 AGC_LEVEL_DEFAULT = 1;
121 static const s32 NOISE_SUPPRESSOR_LEVEL_MIN = 0;
122 static const s32 NOISE_SUPPRESSOR_LEVEL_MAX = 2;
123 static const s32 NOISE_SUPPRESSOR_LEVEL_DEFAULT = 1;
126 #endif // end of NN_PIA_HF_LIBRARY 141 frameLength(AUDIO_FRAME_LENGTH_DEFAULT),
144 maxStationNum(MAX_CONFERENCE_CLIENT)
185 virtual nn::Result Dispatch(
void);
192 virtual nn::Result UpdateProtocolEvent(
const transport::ProtocolEvent& event);
196 PIA_PROTOCOL_TYPE_INFO(transport::PROTOCOL_TYPE_VOICE);
233 virtual nn::Result Startup(
StationIndex myStationIndex);
241 virtual void Cleanup(
void);
252 bool IsInCommunication(
void)
const;
287 nn::Result Send(
const void* pAudioBuf, u32 samples, u32 micOffset);
289 nn::Result Send(
const void* pAudioBuf, u32 samples);
291 #error "Invalid platform." 320 nn::Result Receive(
void* pAudioBuf, u32 frameDataSize,
StationIndex* pStationIndexArray);
340 nn::Result AddConferenceClient(
StationId id);
364 nn::Result RemoveConferenceClient(
StationId id);
382 bool IsClientInConference(
StationId id)
const;
396 void ClearStreaming(
void);
412 nn::Result SetCodec(
enum Codec codec);
420 enum Codec GetCodec(
void)
const;
435 nn::Result SetAudioFrameLength(u32 frameLength);
446 u32 GetAudioFrameLength(
void)
const;
461 size_t GetAudioDataSize(
void)
const;
476 u32 GetAudioScale(
const void* audio, u32 length);
506 void SetNoiseSkipTime(u32 msec);
515 u32 GetNoiseSkipTime(
void)
const;
528 void SignalNoiseSkip(
void);
538 void EnableSparePacket(
bool enable);
550 bool IsEnableSparePacket(
void)
const;
567 nn::Result SetSpareCodec(
enum Codec codec);
580 enum Codec GetSpareCodec(
void)
const;
594 void EnableQualityAlert(
bool enable);
605 bool IsEnableQualityAlert(
void)
const;
636 nn::Result SetQualityAlertThresholdRate(u8 rate);
647 u8 GetQualityAlertThresholdRate(
void)
const;
660 void SetQualityAlertDuration(u32 sec);
673 u32 GetQualityAlertDuration(
void)
const;
687 void SetQualityAlertSamplingPacketNum(u16 num);
698 u16 GetQualityAlertSamplingPacketNum(
void)
const;
713 void EnableDropRecover(
bool enable);
724 bool IsEnableDropRecover(
void)
const;
737 void EnableVAD(
bool enable);
748 bool IsEnableVAD(
void)
const;
761 bool GetVADActivity(
void)
const;
773 u16 GetVADPower(
void)
const;
800 void SetVADActiveGain(u16 value);
809 u16 GetVADActiveGain(
void)
const;
828 void SetVADInactiveGain(u16 value);
837 u16 GetVADInactiveGain(
void)
const;
850 void SetVADReleaseTime(u32 packetNum);
859 u32 GetVADReleaseTime(
void)
const;
884 nn::Result SetVADClampGain(u32 value);
894 u32 GetVADClampGain(
void)
const;
907 void EnableHPF(
bool enable);
918 bool IsEnableHPF(
void)
const;
922 #if NN_PIA_HF_LIBRARY 946 nn::Result Send(
const s16* pAudioBuf,
size_t samples,
const s16* pRefLeftIn,
const s16* pRefRightIn);
959 nn::Result EnableEchoCanceller(
bool bEnable);
968 bool IsEnableEchoCanceller()
const;
979 nn::Result SetEchoCancellerMode(
enum EcMode ecMode);
989 enum EcMode GetEchoCancellerMode()
const;
1002 nn::Result EnableAgc(
bool bEnable);
1011 bool IsEnableAgc()
const;
1026 nn::Result SetAgcLevel(s32 level);
1036 s32 GetAgcLevel()
const;
1048 nn::Result EnableNoiseSuppressor(
bool bEnable);
1057 bool IsEnableNoiseSuppressor()
const;
1069 nn::Result SetNoiseSuppressorLevel(s32 level);
1079 s32 GetNoiseSuppressorLevel()
const;
1080 #endif // end of NN_PIA_HF_LIBRARY 1094 void EnableBPF(
bool enable);
1105 bool IsEnableBPF(
void)
const;
1118 void EnableEchoCancel(
bool enable);
1129 bool IsEnableEchoCancel(
void)
const;
1144 void HandleReference(
const u8* pBuffer, u32 size);
1145 #endif // end of NN_PIA_CTR 1153 virtual void Trace(u64 flag)
const;
1157 static const size_t NET_SEND_BUFF_SIZE = 2048;
1158 static const size_t NET_SEND_DATA_MAX = 80;
1160 struct SendDataStructure
1162 u32 sendBuff[NET_SEND_BUFF_SIZE /
sizeof(u32)];
1163 nn::nex::ConnectionID destCid;
1168 bool allocProc(
size_t maxStationNum);
1169 void freeProc(
void);
1170 size_t calcAudioBufferSize(
size_t maxStationNum)
const;
1172 bool initializeVct(
void);
1173 void finalizeVct(
void);
1175 nn::Result setupProtocols(u16 port,
size_t recvBufNum);
1176 void destroyProtocols(
void);
1178 void updateSessionEndMonitoringData();
1180 static bool SendDataCallback(u16 cid,
const void* buff, u32 size);
1181 bool SendDataCallbackImpl(u32 cid,
const void* pBuff, u32 size);
1183 static bool SendMultiDataCallback(u32 cidBmp,
const void* pBuf,
size_t size);
1184 bool SendMultiDataCallbackImpl(u32 cidBmp,
const void* pBuf,
size_t size);
1186 s32 getPassedTime()
const;
1188 nn::Result receiveCore(
void* pAudioBuf, u32 frameDataSize, u16* pCidList);
1190 u32 m_UnreliableHandle;
1193 VCTSession* m_pSession;
1195 SendDataStructure* m_pSendDataInfo;
1196 u32 m_ReqSendDataIndexR;
1197 u32 m_ReqSendDataIndexW;
1203 common::CriticalSection m_SendCs;
1205 size_t m_DispatchCount;
1207 u64 m_TotalSendDataSize;
1208 u64 m_TotalReceiveDataSize;
1211 #if NN_PIA_HF_LIBRARY 1212 HandsFree* m_pHandsFree;
1213 s16* m_pAudioOutBuf;
size_t recvBufNum
Specifies the number of receive buffers for the UnreliableProtocol object used internally by PiaChat...
Definition: chat_VoiceProtocol.h:151
Class that represents time.
Definition: common_Time.h:39
StationIndex
Enumerates StationIndex values.
Definition: platformCtr.h:44
Definition of the StationId identifying the station within the session.
Definition: types.h:33
size_t frameLength
Specifies the audio frame length. The value is in milliseconds.
Definition: chat_VoiceProtocol.h:149
virtual void Trace(u64 flag) const
Prints information that is useful for debugging.
Specifies 4-bit IMA-ADPCM.
Definition: chat_types.h:35
void Finalize(void)
Initializes the transport module. This function does nothing and returns if it is called before the I...
u16 port
Specifies the port number assigned to the UnreliableProtocol object used internally by PiaChat...
Definition: chat_VoiceProtocol.h:150
Represents the unreliable protocol class, with which data may be lost. UnreliableProtocol does not gu...
Definition: transport_UnreliableProtocol.h:75
Codec codec
Specifies the audio codec.
Definition: chat_VoiceProtocol.h:148
Specifies standard echo cancellation.
Definition: chat_types.h:45
EcMode
Enumerates the modes of echo cancellation.
Definition: chat_types.h:43
Stores parameters used by the Initialize function.
Definition: chat_VoiceProtocol.h:134
Contains audio streaming information.
Definition: chat_types.h:62
Protocol base class.
Definition: transport_Protocol.h:44
Setting(void)
Instantiates the object with default parameters (default constructor). Each member variable is set to...
Definition: chat_VoiceProtocol.h:139
Codec
Enumerates audio codecs.
Definition: chat_types.h:29
size_t maxStationNum
The maximum number of stations that can participate in a conference chat.
Definition: chat_VoiceProtocol.h:152
Contains member functions that provide voice chat functionality.
Definition: chat_VoiceProtocol.h:99
nn::Result Initialize(void)
Initializes the transport module.