/** * Copyright 1998-2013 Epic Games, Inc. All Rights Reserved. */ /** * This interface deals with voice over IP. It is responsible for registering, * unregistering, and filtering talkers. It also handles special voice effects. * This interface also provides hooks for accessing the raw data to perform * operations on it, such as speech recognition, lip sync, etc. */ interface OnlineVoiceInterface dependson(OnlineSubsystem); /** * Registers the user as a talker * * @param LocalUserNum the local player index that is a talker * * @return TRUE if the call succeeded, FALSE otherwise */ //@HSL_BEGIN_XBOX function bool RegisterLocalTalker(byte LocalUserNum, optional byte ChannelIndex); //@HSL_END_XBOX /** * Unregisters the user as a talker * * @param LocalUserNum the local player index to be removed * * @return TRUE if the call succeeded, FALSE otherwise */ //@HSL_BEGIN_XBOX function bool UnregisterLocalTalker(byte LocalUserNum, optional byte ChannelIndex); /** * Determines if there are any local talkers that are currently registered */ function bool AreAnyLocalTalkersRegistered(); /** * Recieves a reliable voice packet from server * * @param MessageType the type of message sent * @param Sender the Unique Net Id for the sender who sent the packet * @param InData the reliable voice data * */ function ReceiveReliableVoicePacket( byte MessageType, UniqueNetId Sender, int Length, byte InData[60]); //@HSL_END_XBOX /** * Registers a remote player as a talker * * @param PlayerId the unique id of the remote player that is a talker * * @return TRUE if the call succeeded, FALSE otherwise */ function bool RegisterRemoteTalker(UniqueNetId PlayerId); /** * Unregisters a remote player as a talker * * @param PlayerId the unique id of the remote player to be removed * * @return TRUE if the call succeeded, FALSE otherwise */ function bool UnregisterRemoteTalker(UniqueNetId PlayerId); /** * Determines if the specified player is actively talking into the mic * * @param LocalUserNum the local player index being queried * * @return TRUE if the player is talking, FALSE otherwise */ function bool IsLocalPlayerTalking(byte LocalUserNum); /** * Determines if the specified remote player is actively talking into the mic * NOTE: Network latencies will make this not 100% accurate * * @param PlayerId the unique id of the remote player being queried * * @return TRUE if the player is talking, FALSE otherwise */ function bool IsRemotePlayerTalking(UniqueNetId PlayerId); /** * Determines if the specified player has a headset connected * * @param LocalUserNum the local player index being queried * * @return TRUE if the player has a headset plugged in, FALSE otherwise */ function bool IsHeadsetPresent(byte LocalUserNum); /** * Sets the relative priority for a remote talker. 0 is highest * * @param LocalUserNum the user that controls the relative priority * @param PlayerId the remote talker that is having their priority changed for * @param Priority the relative priority to use (0 highest, < 0 is muted) * * @return TRUE if the function succeeds, FALSE otherwise */ function bool SetRemoteTalkerPriority(byte LocalUserNum,UniqueNetId PlayerId,int Priority); //@HSL_BEGIN_XBOX /** * Mutes all the players (including self) * * @param PlayerMuteSetting whether to mute all or mute just bad rep players * * @return TRUE if the function succeeds, FALSE otherwise */ function bool UpdatePlayerMuteSetting(bool PlayerMuteSetting); //@HSL_END_XBOX /** * Mutes a remote talker for the specified local player. NOTE: This only mutes them in the * game unless the bIsSystemWide flag is true, which attempts to mute them globally * * @param LocalUserNum the user that is muting the remote talker * @param PlayerId the remote talker that is being muted * @param bIsSystemWide whether to try to mute them globally or not * * @return TRUE if the function succeeds, FALSE otherwise */ function bool MuteRemoteTalker(byte LocalUserNum,UniqueNetId PlayerId,optional bool bIsSystemWide); /** * Allows a remote talker to talk to the specified local player. NOTE: This only unmutes them in the * game unless the bIsSystemWide flag is true, which attempts to unmute them globally * * @param LocalUserNum the user that is allowing the remote talker to talk * @param PlayerId the remote talker that is being restored to talking * @param bIsSystemWide whether to try to unmute them globally or not * * @return TRUE if the function succeeds, FALSE otherwise */ function bool UnmuteRemoteTalker(byte LocalUserNum,UniqueNetId PlayerId,optional bool bIsSystemWide); //@HSL_BEGIN_XBOX /** * Checks if a user is muted or not * * @param ConsoleId the remote talker that is being restored to talking * * @return TRUE if the player is muted, FALSE otherwise */ function bool IsTalkerMuted(UniqueNetId ConsoleId); //@HSL_END_XBOX /** * Called when a player is talking either locally or remote. This will be called * once for each active talker each frame. * * @param Player the player that is talking * @param bIsTalking if true, the player is now talking, if false they are no longer talking */ delegate OnPlayerTalkingStateChange(UniqueNetId Player,bool bIsTalking); /** * Adds a talker delegate to the list of notifications * * @param TalkerDelegate the delegate to call when a player is talking */ function AddPlayerTalkingDelegate(delegate TalkerDelegate); /** * Removes a talker delegate to the list of notifications * * @param TalkerDelegate the delegate to remove from the notification list */ function ClearPlayerTalkingDelegate(delegate TalkerDelegate); /** * Tells the voice layer that networked processing of the voice data is allowed * for the specified player. This allows for push-to-talk style voice communication * * @param LocalUserNum the local user to allow network transimission for */ function StartNetworkedVoice(byte LocalUserNum); /** * Tells the voice layer to stop processing networked voice support for the * specified player. This allows for push-to-talk style voice communication * * @param LocalUserNum the local user to disallow network transimission for */ function StopNetworkedVoice(byte LocalUserNum); /** * Tells the voice system to start tracking voice data for speech recognition * * @param LocalUserNum the local user to recognize voice data for * * @return true upon success, false otherwise */ function bool StartSpeechRecognition(byte LocalUserNum); /** * Tells the voice system to stop tracking voice data for speech recognition * * @param LocalUserNum the local user to recognize voice data for * * @return true upon success, false otherwise */ function bool StopSpeechRecognition(byte LocalUserNum); /** * Gets the results of the voice recognition * Will not return results that were below the SpeechRecognition's ConfidenceThreshold, * so you may get an empty array back * * @param LocalUserNum the local user to read the results of * @param Words the set of words that were recognized by the voice analyzer * * @return true upon success, false otherwise */ function bool GetRecognitionResults(byte LocalUserNum,out array Words); /** * Called when speech recognition for a given player has completed. The * consumer of the notification can call GetRecognitionResults() to get the * words that were recognized */ delegate OnRecognitionComplete(); /** * Adds the speech recognition notification callback to list of callbacks for the specified user * * @param LocalUserNum the local user to receive notifications for * @param RecognitionDelegate the delegate to call when recognition is complete */ function AddRecognitionCompleteDelegate(byte LocalUserNum,delegate RecognitionDelegate); /** * Clears the speech recognition notification callback to use for the specified user * * @param LocalUserNum the local user to receive notifications for * @param RecognitionDelegate the delegate to call when recognition is complete */ function ClearRecognitionCompleteDelegate(byte LocalUserNum,delegate RecognitionDelegate); /** * Changes the vocabulary id that is currently being used * * @param LocalUserNum the local user that is making the change * @param VocabularyId the new id to use * * @return true if successful, false otherwise */ function bool SelectVocabulary(byte LocalUserNum,int VocabularyId); /** * Changes the object that is in use to the one specified * * @param LocalUserNum the local user that is making the change * @param SpeechRecogObj the new object use * * @param true if successful, false otherwise */ function bool SetSpeechRecognitionObject(byte LocalUserNum,SpeechRecognition SpeechRecogObj); /** * Mutes all voice or all but friends * * @param LocalUserNum the local user that is making the change * @param bAllowFriends whether to mute everyone or allow friends */ function bool MuteAll(byte LocalUserNum,bool bAllowFriends); /** * Allows all speakers to send voice * * @param LocalUserNum the local user that is making the change */ function bool UnmuteAll(byte LocalUserNum);