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

Side by Side Diff: webrtc/modules/audio_coding/main/acm2/codec_manager.h

Issue 1443653004: Move CNG and RED management into the Rent-A-Codec (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Extract subroutine Created 5 years, 1 month 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #ifndef WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_CODEC_MANAGER_H_ 11 #ifndef WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_CODEC_MANAGER_H_
12 #define WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_CODEC_MANAGER_H_ 12 #define WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_CODEC_MANAGER_H_
13 13
14 #include "webrtc/base/constructormagic.h" 14 #include "webrtc/base/constructormagic.h"
15 #include "webrtc/base/optional.h" 15 #include "webrtc/base/optional.h"
16 #include "webrtc/base/scoped_ptr.h" 16 #include "webrtc/base/scoped_ptr.h"
17 #include "webrtc/base/thread_checker.h" 17 #include "webrtc/base/thread_checker.h"
18 #include "webrtc/modules/audio_coding/main/acm2/codec_owner.h"
19 #include "webrtc/modules/audio_coding/main/acm2/rent_a_codec.h" 18 #include "webrtc/modules/audio_coding/main/acm2/rent_a_codec.h"
20 #include "webrtc/modules/audio_coding/main/include/audio_coding_module_typedefs. h" 19 #include "webrtc/modules/audio_coding/main/include/audio_coding_module_typedefs. h"
21 #include "webrtc/common_types.h" 20 #include "webrtc/common_types.h"
22 21
23 namespace webrtc { 22 namespace webrtc {
24 23
25 class AudioDecoder; 24 class AudioDecoder;
26 class AudioEncoder; 25 class AudioEncoder;
27 26
28 namespace acm2 { 27 namespace acm2 {
(...skipping 21 matching lines...) Expand all
50 // and decoding have to be performed on a shared codec instance. By calling 49 // and decoding have to be performed on a shared codec instance. By calling
51 // this method, we get the codec instance that ACM owns. 50 // this method, we get the codec instance that ACM owns.
52 // If |codec| does not share an instance between encoder and decoder, returns 51 // If |codec| does not share an instance between encoder and decoder, returns
53 // null. 52 // null.
54 AudioDecoder* GetAudioDecoder(const CodecInst& codec); 53 AudioDecoder* GetAudioDecoder(const CodecInst& codec);
55 54
56 bool red_enabled() const { return red_enabled_; } 55 bool red_enabled() const { return red_enabled_; }
57 56
58 bool codec_fec_enabled() const { return codec_fec_enabled_; } 57 bool codec_fec_enabled() const { return codec_fec_enabled_; }
59 58
60 AudioEncoder* CurrentEncoder() { return codec_owner_.Encoder(); } 59 AudioEncoder* CurrentEncoder() { return rent_a_codec_.GetEncoderStack(); }
61 const AudioEncoder* CurrentEncoder() const { return codec_owner_.Encoder(); } 60 const AudioEncoder* CurrentEncoder() const {
61 return rent_a_codec_.GetEncoderStack();
62 }
62 63
63 bool CurrentEncoderIsOpus() const { return encoder_is_opus_; } 64 bool CurrentEncoderIsOpus() const { return encoder_is_opus_; }
64 65
65 private: 66 private:
66 int CngPayloadType(int sample_rate_hz) const; 67 int CngPayloadType(int sample_rate_hz) const;
67
68 int RedPayloadType(int sample_rate_hz) const; 68 int RedPayloadType(int sample_rate_hz) const;
69 void RentEncoderStack(AudioEncoder* speech_encoder, int sample_rate_hz);
69 70
70 rtc::ThreadChecker thread_checker_; 71 rtc::ThreadChecker thread_checker_;
71 uint8_t cng_nb_pltype_; 72 uint8_t cng_nb_pltype_;
72 uint8_t cng_wb_pltype_; 73 uint8_t cng_wb_pltype_;
73 uint8_t cng_swb_pltype_; 74 uint8_t cng_swb_pltype_;
74 uint8_t cng_fb_pltype_; 75 uint8_t cng_fb_pltype_;
75 uint8_t red_nb_pltype_; 76 uint8_t red_nb_pltype_;
76 bool dtx_enabled_; 77 bool dtx_enabled_;
77 ACMVADMode vad_mode_; 78 ACMVADMode vad_mode_;
78 CodecInst send_codec_inst_; 79 CodecInst send_codec_inst_;
79 bool red_enabled_; 80 bool red_enabled_;
80 bool codec_fec_enabled_; 81 bool codec_fec_enabled_;
81 CodecOwner codec_owner_;
82 RentACodec rent_a_codec_; 82 RentACodec rent_a_codec_;
83 bool encoder_is_opus_; 83 bool encoder_is_opus_;
84 84
85 RTC_DISALLOW_COPY_AND_ASSIGN(CodecManager); 85 RTC_DISALLOW_COPY_AND_ASSIGN(CodecManager);
86 }; 86 };
87 87
88 } // namespace acm2 88 } // namespace acm2
89 } // namespace webrtc 89 } // namespace webrtc
90 #endif // WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_CODEC_MANAGER_H_ 90 #endif // WEBRTC_MODULES_AUDIO_CODING_MAIN_ACM2_CODEC_MANAGER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698