Dual-stream implementation, not including VoE APIs.

Review URL: https://webrtc-codereview.appspot.com/933015

git-svn-id: http://webrtc.googlecode.com/svn/trunk@3230 4adac7df-926f-26a2-2b94-8c16560cd09d
This commit is contained in:
turaj@webrtc.org
2012-12-03 22:13:31 +00:00
parent 277ec8e3f5
commit 226db898f7
7 changed files with 1305 additions and 235 deletions

View File

@@ -13,8 +13,10 @@
#include "audio_coding_module_typedefs.h"
#include "module.h"
// TODO(turajs): If possible, forward declare and remove the following include.
#include "module_common_types.h"
namespace webrtc {
// forward declarations
@@ -204,6 +206,10 @@ class AudioCodingModule: public Module {
// Note: If a stereo codec is registered as send codec, VAD/DTX will
// automatically be turned off, since it is not supported for stereo sending.
//
// Note: If a secondary encoder is already registered, and the new send-codec
// has a sampling rate that does not match the secondary encoder, the
// secondary encoder will be unregistered.
//
// Input:
// -sendCodec : Parameters of the codec to be registered, c.f.
// common_types.h for the definition of
@@ -215,6 +221,33 @@ class AudioCodingModule: public Module {
//
virtual WebRtc_Word32 RegisterSendCodec(const CodecInst& sendCodec) = 0;
///////////////////////////////////////////////////////////////////////////
// int RegisterSecondarySendCodec()
// Register a secondary encoder to enable dual-streaming. If a secondary
// codec is already registered, it will be removed before the new one is
// registered.
//
// Note: The secondary encoder will be unregistered if a primary codec
// is set with a sampling rate which does not match that of the existing
// secondary codec.
//
// Input:
// -send_codec : Parameters of the codec to be registered, c.f.
// common_types.h for the definition of
// CodecInst.
//
// Return value:
// -1 if failed to register,
// 0 if succeeded.
//
virtual int RegisterSecondarySendCodec(const CodecInst& send_codec) = 0;
///////////////////////////////////////////////////////////////////////////
// void UnregisterSecondarySendCodec()
// Unregister the secondary encoder to disable dual-streaming.
//
virtual void UnregisterSecondarySendCodec() = 0;
///////////////////////////////////////////////////////////////////////////
// WebRtc_Word32 SendCodec()
// Get parameters for the codec currently registered as send codec.
@@ -228,6 +261,19 @@ class AudioCodingModule: public Module {
//
virtual WebRtc_Word32 SendCodec(CodecInst& currentSendCodec) const = 0;
///////////////////////////////////////////////////////////////////////////
// int SecondarySendCodec()
// Get the codec parameters for the current secondary send codec.
//
// Output:
// -secondary_codec : parameters of the secondary send codec.
//
// Return value:
// -1 if failed to get send codec,
// 0 if succeeded.
//
virtual int SecondarySendCodec(CodecInst* secondary_codec) const = 0;
///////////////////////////////////////////////////////////////////////////
// WebRtc_Word32 SendFrequency()
// Get the sampling frequency of the current encoder in Hertz.