source-engine/engine/audio/voice_sound_engine_interface.h

103 lines
2.9 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//
// $NoKeywords: $
//=============================================================================//
#ifndef VOICE_SOUND_ENGINE_INTERFACE_H
#define VOICE_SOUND_ENGINE_INTERFACE_H
#pragma once
/*! @defgroup VoiceSoundEngineInterface VoiceSoundEngineInterface
Abstracts out the sound engine for the voice code.
GoldSrc and Src each have a different implementation of this.
@{
*/
//! Max number of receiving voice channels.
#define VOICE_NUM_CHANNELS 5
// ----------------------------------------------------------------------------- //
// Functions for voice.cpp.
// ----------------------------------------------------------------------------- //
//! Initialize the sound engine interface.
bool VoiceSE_Init();
//! Shutdown the sound engine interface.
void VoiceSE_Term();
//! Called each frame.
void VoiceSE_Idle(float frametime);
//! Start audio playback on the specified voice channel.
//! Voice_GetChannelAudio is called by the mixer for each active channel.
int VoiceSE_StartChannel(
//! Which channel to start.
int iChannel,
int iEntity,
bool bProximity,
int nViewEntityIndex
);
//! Stop audio playback on the specified voice channel.
void VoiceSE_EndChannel(
//! Which channel to stop.
int iChannel,
int iEntity
);
//! Starts the voice overdrive (lowers volume of all sounds other than voice).
void VoiceSE_StartOverdrive();
void VoiceSE_EndOverdrive();
//! Control mouth movement for an entity.
void VoiceSE_InitMouth(int entnum);
void VoiceSE_CloseMouth(int entnum);
void VoiceSE_MoveMouth(int entnum, short *pSamples, int nSamples);
// ----------------------------------------------------------------------------- //
// Functions for voice.cpp to implement.
// ----------------------------------------------------------------------------- //
//! This function is implemented in voice.cpp. Gives 16-bit signed mono samples to the mixer.
//! \return Number of samples actually gotten.
int Voice_GetOutputData(
//! The voice channel it wants samples from.
const int iChannel,
//! The buffer to copy the samples into.
char *copyBuf,
//! Maximum size of copyBuf.
const int copyBufSize,
//! Which sample to start at.
const int samplePosition,
//! How many samples to get.
const int sampleCount
);
// This is called when an audio source is deleted by the sound engine. The voice could
// should detach whatever it needs to in order to free up the specified channel.
void Voice_OnAudioSourceShutdown( int iChannel );
// ----------------------------------------------------------------------------- //
// Functions for the sound engine.
// ----------------------------------------------------------------------------- //
class CAudioSource;
CAudioSource* Voice_SetupAudioSource( int soundsource, int entchannel );
/*! @} End VoiceSoundEngineInterface group */
#endif // VOICE_SOUND_ENGINE_INTERFACE_H