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

Unified Diff: webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h

Issue 1322973004: Fold AudioEncoderMutable into AudioEncoder (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: review fixes Created 5 years, 3 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
Index: webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h
diff --git a/webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h b/webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h
index a8498fa224b65420d6797324f064a041dcdc7e7c..5484395ad813e92f55384984f12aaca27f64c860 100644
--- a/webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h
+++ b/webrtc/modules/audio_coding/codecs/isac/audio_encoder_isac_t.h
@@ -19,6 +19,8 @@
namespace webrtc {
+struct CodecInst;
+
template <typename T>
class AudioEncoderIsacT final : public AudioEncoder {
public:
@@ -28,33 +30,35 @@ class AudioEncoderIsacT final : public AudioEncoder {
// - 32000 Hz, 30 ms, 10000-56000 bps (if T has super-wideband support)
// - 48000 Hz, 30 ms, 10000-56000 bps (if T has super-wideband support)
struct Config {
- Config();
bool IsOk() const;
- LockedIsacBandwidthInfo* bwinfo;
+ LockedIsacBandwidthInfo* bwinfo = nullptr;
- int payload_type;
- int sample_rate_hz;
- int frame_size_ms;
- int bit_rate; // Limit on the short-term average bit rate, in bits/s.
- int max_payload_size_bytes;
- int max_bit_rate;
+ int payload_type = 103;
+ int sample_rate_hz = 16000;
+ int frame_size_ms = 30;
+ int bit_rate = kDefaultBitRate; // Limit on the short-term average bit
+ // rate, in bits/s.
+ int max_payload_size_bytes = -1;
+ int max_bit_rate = -1;
// If true, the encoder will dynamically adjust frame size and bit rate;
// the configured values are then merely the starting point.
- bool adaptive_mode;
+ bool adaptive_mode = false;
// In adaptive mode, prevent adaptive changes to the frame size. (Not used
// in nonadaptive mode.)
- bool enforce_frame_size;
+ bool enforce_frame_size = false;
};
explicit AudioEncoderIsacT(const Config& config);
+ explicit AudioEncoderIsacT(const CodecInst& codec_inst,
+ LockedIsacBandwidthInfo* bwinfo);
~AudioEncoderIsacT() override;
+ size_t MaxEncodedBytes() const override;
int SampleRateHz() const override;
int NumChannels() const override;
- size_t MaxEncodedBytes() const override;
size_t Num10MsFramesInNextPacket() const override;
size_t Max10MsFramesInAPacket() const override;
int GetTargetBitrate() const override;
@@ -62,18 +66,26 @@ class AudioEncoderIsacT final : public AudioEncoder {
const int16_t* audio,
size_t max_encoded_bytes,
uint8_t* encoded) override;
+ void Reset() override;
+ void SetMaxPayloadSize(int max_payload_size_bytes) override;
+ void SetMaxBitrate(int max_rate_bps) override;
private:
// This value is taken from STREAM_SIZE_MAX_60 for iSAC float (60 ms) and
// STREAM_MAXW16_60MS for iSAC fix (60 ms).
static const size_t kSufficientEncodeBufferSizeBytes = 400;
- const int payload_type_;
- typename T::instance_type* isac_state_;
- LockedIsacBandwidthInfo* bwinfo_;
+ static const int kDefaultBitRate = 32000;
+
+ // Recreate the iSAC encoder instance with the given settings, and save them.
+ void RecreateEncoderInstance(const Config& config);
+
+ Config config_;
+ typename T::instance_type* isac_state_ = nullptr;
+ LockedIsacBandwidthInfo* bwinfo_ = nullptr;
// Have we accepted input but not yet emitted it in a packet?
- bool packet_in_progress_;
+ bool packet_in_progress_ = false;
// Timestamp of the first input of the currently in-progress packet.
uint32_t packet_timestamp_;
@@ -81,8 +93,6 @@ class AudioEncoderIsacT final : public AudioEncoder {
// Timestamp of the previously encoded packet.
uint32_t last_encoded_timestamp_;
- const int target_bitrate_bps_;
-
DISALLOW_COPY_AND_ASSIGN(AudioEncoderIsacT);
};

Powered by Google App Engine
This is Rietveld 408576698