diff -r 000000000000 -r 6474c204b198 content/media/webrtc/AudioOutputObserver.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/content/media/webrtc/AudioOutputObserver.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,55 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this file, + * You can obtain one at http://mozilla.org/MPL/2.0/. */ + +#ifndef AUDIOOUTPUTOBSERVER_H_ +#define AUDIOOUTPUTOBSERVER_H_ + +#include "mozilla/StaticPtr.h" + +namespace webrtc { +class SingleRwFifo; +} + +namespace mozilla { + +typedef struct FarEndAudioChunk_ { + uint16_t mSamples; + bool mOverrun; + int16_t mData[1]; // variable-length +} FarEndAudioChunk; + +// XXX Really a singleton currently +class AudioOutputObserver // : public MSGOutputObserver +{ +public: + AudioOutputObserver(); + virtual ~AudioOutputObserver(); + + void Clear(); + void InsertFarEnd(const AudioDataValue *aBuffer, uint32_t aSamples, bool aOverran, + int aFreq, int aChannels, AudioSampleFormat aFormat); + uint32_t PlayoutFrequency() { return mPlayoutFreq; } + uint32_t PlayoutChannels() { return mPlayoutChannels; } + + FarEndAudioChunk *Pop(); + uint32_t Size(); + +private: + uint32_t mPlayoutFreq; + uint32_t mPlayoutChannels; + + nsAutoPtr mPlayoutFifo; + uint32_t mChunkSize; + + // chunking to 10ms support + nsAutoPtr mSaved; + uint32_t mSamplesSaved; +}; + +// XXX until there's a registration API in MSG +extern StaticAutoPtr gFarendObserver; + +} + +#endif