| Index: remoting/codec/audio_encoder_opus.h
|
| diff --git a/remoting/codec/audio_encoder_opus.h b/remoting/codec/audio_encoder_opus.h
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b172de2628b33f65aa2e1e8279e33e472c33600e
|
| --- /dev/null
|
| +++ b/remoting/codec/audio_encoder_opus.h
|
| @@ -0,0 +1,63 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#ifndef REMOTING_CODEC_AUDIO_ENCODER_OPUS_H_
|
| +#define REMOTING_CODEC_AUDIO_ENCODER_OPUS_H_
|
| +
|
| +#include "remoting/codec/audio_encoder.h"
|
| +
|
| +#include "remoting/proto/audio.pb.h"
|
| +
|
| +struct OpusEncoder;
|
| +
|
| +namespace media {
|
| +class AudioBus;
|
| +class MultiChannelResampler;
|
| +} // namespace media
|
| +
|
| +namespace remoting {
|
| +
|
| +class AudioPacket;
|
| +
|
| +class AudioEncoderOpus : public AudioEncoder {
|
| + public:
|
| + AudioEncoderOpus();
|
| + virtual ~AudioEncoderOpus();
|
| +
|
| + // AudioEncoder interface.
|
| + virtual scoped_ptr<AudioPacket> Encode(
|
| + scoped_ptr<AudioPacket> packet) OVERRIDE;
|
| +
|
| + private:
|
| + void InitEncoder();
|
| + void DestroyEncoder();
|
| + bool ResetForPacket(AudioPacket* packet);
|
| +
|
| + void FetchBytesToResample(media::AudioBus* audio_bus);
|
| +
|
| + int sampling_rate_;
|
| + AudioPacket::Channels channels_;
|
| + OpusEncoder* encoder_;
|
| +
|
| + int frame_size_;
|
| + scoped_ptr<media::MultiChannelResampler> resampler_;
|
| + scoped_array<char> resample_buffer_;
|
| + scoped_ptr<media::AudioBus> resampler_bus_;
|
| +
|
| + // Used to pass packet to the FetchBytesToResampler() callback.
|
| + const char* resampling_data_;
|
| + int resampling_data_size_;
|
| + int resampling_data_pos_;
|
| +
|
| + // Left-over unencoded samples from the previous AudioPacket.
|
| + scoped_array<int16> leftover_buffer_;
|
| + int leftover_buffer_size_;
|
| + int leftover_samples_;
|
| +
|
| + DISALLOW_COPY_AND_ASSIGN(AudioEncoderOpus);
|
| +};
|
| +
|
| +} // namespace remoting
|
| +
|
| +#endif // REMOTING_CODEC_AUDIO_ENCODER_OPUS_H_
|
|
|