OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef REMOTING_CODEC_AUDIO_ENCODER_OPUS_H_ | |
6 #define REMOTING_CODEC_AUDIO_ENCODER_OPUS_H_ | |
7 | |
8 #include "remoting/codec/audio_encoder.h" | |
9 | |
10 #include "remoting/proto/audio.pb.h" | |
11 | |
12 struct OpusEncoder; | |
13 | |
14 namespace media { | |
15 class AudioBus; | |
16 class MultiChannelResampler; | |
17 } // namespace media | |
18 | |
19 namespace remoting { | |
20 | |
21 class AudioPacket; | |
22 | |
23 class AudioEncoderOpus : public AudioEncoder { | |
24 public: | |
25 AudioEncoderOpus(); | |
26 virtual ~AudioEncoderOpus(); | |
27 | |
28 // AudioEncoder interface. | |
29 virtual scoped_ptr<AudioPacket> Encode( | |
30 scoped_ptr<AudioPacket> packet) OVERRIDE; | |
31 | |
32 private: | |
33 void InitEncoder(); | |
34 void DestroyEncoder(); | |
35 bool ResetForPacket(AudioPacket* packet); | |
36 | |
37 void ResamplerRead(media::AudioBus* audio_bus); | |
38 | |
39 int sampling_rate_; | |
40 AudioPacket::Channels channels_; | |
41 OpusEncoder* encoder_; | |
42 | |
43 int frame_size_; | |
44 scoped_ptr<media::MultiChannelResampler> resampler_; | |
45 scoped_array<char> resample_buffer_; | |
46 | |
47 // Used to pass packet to the ResamplerRead() callback. | |
48 const char* resampling_data_; | |
49 int resampling_data_size_; | |
50 int resampling_data_pos_; | |
51 | |
52 // Left-over unencoded samples from the previous AudioPacket. | |
53 scoped_array<int16> leftover_buffer_; | |
Wez
2012/10/19 01:51:32
nit: Rather than a separate |leftover_buffer_|, wh
Sergey Ulanov
2012/10/19 20:54:30
We need to handle the case when we receive a seque
| |
54 int leftover_buffer_size_; | |
55 int leftover_samples_; | |
56 | |
57 DISALLOW_COPY_AND_ASSIGN(AudioEncoderOpus); | |
58 }; | |
59 | |
60 } // namespace remoting | |
61 | |
62 #endif // REMOTING_CODEC_AUDIO_ENCODER_OPUS_H_ | |
OLD | NEW |