Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(254)

Unified Diff: remoting/codec/audio_encoder_opus.h

Issue 11189047: Add opus audio codec support in remoting (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/codec/audio_decoder_opus.cc ('k') | remoting/codec/audio_encoder_opus.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_
« no previous file with comments | « remoting/codec/audio_decoder_opus.cc ('k') | remoting/codec/audio_encoder_opus.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698