| Index: webrtc/modules/audio_mixer/audio_mixer.h
|
| diff --git a/webrtc/modules/audio_mixer/audio_mixer.h b/webrtc/modules/audio_mixer/audio_mixer.h
|
| index f84fe8cfc75006e69cc9d2ace52481974728862e..f7b88bf55868f71f3cff78ab28fb8fa06ef40665 100644
|
| --- a/webrtc/modules/audio_mixer/audio_mixer.h
|
| +++ b/webrtc/modules/audio_mixer/audio_mixer.h
|
| @@ -19,9 +19,16 @@
|
|
|
| namespace webrtc {
|
|
|
| +// !!!: Inherit from public rtc::RefCountInterface (see e.g. AudioDecoderFactory)
|
| +// !!!: Document threading assumptions.
|
| +// so life time of the mixer is less ambiguous when implemented externally.
|
| class AudioMixer {
|
| public:
|
| + // !!!: This is an implementation detail of the particular mixer we typically have (top 3).
|
| + // Move to audio_mixer_impl.h
|
| static const int kMaximumAmountOfMixedAudioSources = 3;
|
| + // !!!: Can we remove this and use an int instead? Just giving the rate in hz,
|
| + // rather than an enum?
|
| enum Frequency {
|
| kNbInHz = 8000,
|
| kWbInHz = 16000,
|
| @@ -31,15 +38,26 @@ class AudioMixer {
|
| };
|
|
|
| // Factory method. Constructor disabled.
|
| + // !!!: Move out from class and rename to CreateTopThreeMixer()
|
| static std::unique_ptr<AudioMixer> Create(int id);
|
| virtual ~AudioMixer() {}
|
|
|
| + // !!!: Cut in two functions: AddSource(), RemoveSource(). What is mixability
|
| + // status and what does it do with ownership of the objects? Is the return
|
| + // value necessary?
|
| +
|
| // Add/remove audio sources as candidates for mixing.
|
| virtual int32_t SetMixabilityStatus(MixerAudioSource* audio_source,
|
| bool mixable) = 0;
|
| + // !!!: Only used by unit test - remove from interface.
|
| // Returns true if an audio source is a candidate for mixing.
|
| virtual bool MixabilityStatus(const MixerAudioSource& audio_source) const = 0;
|
|
|
| +
|
| + // !!!: Name this something more sensible and add a todo that it should be
|
| + // deprecated. It is only here to support the VoEFile API, which is legacy.
|
| + // Also, what is the return value?
|
| +
|
| // Inform the mixer that the audio source should always be mixed and not
|
| // count toward the number of mixed audio sources. Note that an audio source
|
| // must have been added to the mixer (by calling SetMixabilityStatus())
|
| @@ -52,13 +70,15 @@ class AudioMixer {
|
| // called from a single thread. The rate and channels arguments
|
| // specify the rate and number of channels of the mix result.
|
| virtual void Mix(int sample_rate,
|
| - size_t number_of_channels,
|
| + size_t number_of_channels, // !!!: There's a num_channels in AudioFrame. Either use that or get rid of AudioFrame.
|
| AudioFrame* audio_frame_for_mixing) = 0;
|
|
|
| + // !!!: Remove from public interface.
|
| // Returns true if the audio source is mixed anonymously.
|
| virtual bool AnonymousMixabilityStatus(
|
| const MixerAudioSource& audio_source) const = 0;
|
|
|
| + // !!!: Can we instead return a float on [0.0, 1.0] and do any legacy adaptations in the legacy code?
|
| // Output level functions for VoEVolumeControl. Return value
|
| // between 0 and 9 is returned by voe::AudioLevel.
|
| virtual int GetOutputAudioLevel() = 0;
|
| @@ -66,6 +86,7 @@ class AudioMixer {
|
| // Return value between 0 and 0x7fff is returned by voe::AudioLevel.
|
| virtual int GetOutputAudioLevelFullRange() = 0;
|
|
|
| + // !!!: Remove below this point.
|
| protected:
|
| AudioMixer() {}
|
|
|
|
|