| Index: media/cast/sender/audio_sender.cc
|
| diff --git a/media/cast/sender/audio_sender.cc b/media/cast/sender/audio_sender.cc
|
| index 262064f88609aafc25ff661b9daf19b4720e074a..261a35ded1641fabbdad09e35d858a8791193fa1 100644
|
| --- a/media/cast/sender/audio_sender.cc
|
| +++ b/media/cast/sender/audio_sender.cc
|
| @@ -16,6 +16,7 @@ namespace cast {
|
|
|
| AudioSender::AudioSender(scoped_refptr<CastEnvironment> cast_environment,
|
| const AudioSenderConfig& audio_config,
|
| + const StatusChangeCallback& status_change_cb,
|
| CastTransportSender* const transport_sender)
|
| : FrameSender(cast_environment,
|
| true,
|
| @@ -29,8 +30,6 @@ AudioSender::AudioSender(scoped_refptr<CastEnvironment> cast_environment,
|
| NewFixedCongestionControl(audio_config.bitrate)),
|
| samples_in_encoder_(0),
|
| weak_factory_(this) {
|
| - cast_initialization_status_ = STATUS_AUDIO_UNINITIALIZED;
|
| -
|
| if (!audio_config.use_external_encoder) {
|
| audio_encoder_.reset(
|
| new AudioEncoder(cast_environment,
|
| @@ -41,12 +40,18 @@ AudioSender::AudioSender(scoped_refptr<CastEnvironment> cast_environment,
|
| base::Bind(&AudioSender::OnEncodedAudioFrame,
|
| weak_factory_.GetWeakPtr(),
|
| audio_config.bitrate)));
|
| - cast_initialization_status_ = audio_encoder_->InitializationResult();
|
| - } else {
|
| - NOTREACHED(); // No support for external audio encoding.
|
| - cast_initialization_status_ = STATUS_AUDIO_UNINITIALIZED;
|
| }
|
|
|
| + // AudioEncoder provides no operational status changes during normal use.
|
| + // Post a task now with its initialization result status to allow the client
|
| + // to start sending frames.
|
| + cast_environment_->PostTask(
|
| + CastEnvironment::MAIN,
|
| + FROM_HERE,
|
| + base::Bind(status_change_cb,
|
| + audio_encoder_ ? audio_encoder_->InitializationResult() :
|
| + STATUS_INVALID_CONFIGURATION));
|
| +
|
| // The number of samples per encoded audio frame depends on the codec and its
|
| // initialization parameters. Now that we have an encoder, we can calculate
|
| // the maximum frame rate.
|
| @@ -73,11 +78,11 @@ AudioSender::~AudioSender() {}
|
| void AudioSender::InsertAudio(scoped_ptr<AudioBus> audio_bus,
|
| const base::TimeTicks& recorded_time) {
|
| DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN));
|
| - if (cast_initialization_status_ != STATUS_AUDIO_INITIALIZED) {
|
| +
|
| + if (!audio_encoder_) {
|
| NOTREACHED();
|
| return;
|
| }
|
| - DCHECK(audio_encoder_.get()) << "Invalid internal state";
|
|
|
| const base::TimeDelta next_frame_duration =
|
| RtpDeltaToTimeDelta(audio_bus->frames(), rtp_timebase());
|
|
|