| Index: content/renderer/media/android/media_source_delegate.cc
|
| diff --git a/content/renderer/media/android/media_source_delegate.cc b/content/renderer/media/android/media_source_delegate.cc
|
| index eb4f5c3dcf2779bc2435e996e975094eaa329835..6b6523c060ca085329f42679192385c60585aeef 100644
|
| --- a/content/renderer/media/android/media_source_delegate.cc
|
| +++ b/content/renderer/media/android/media_source_delegate.cc
|
| @@ -398,14 +398,11 @@ void MediaSourceDelegate::OnBufferReady(
|
| break;
|
|
|
| case DemuxerStream::kConfigChanged:
|
| - // In case of kConfigChanged, need to read decoder_config once
|
| - // for the next reads.
|
| - // TODO(kjyoun): Investigate if we need to use this new config. See
|
| - // http://crbug.com/255783
|
| - if (is_audio) {
|
| - audio_stream_->audio_decoder_config();
|
| - } else {
|
| - gfx::Size size = video_stream_->video_decoder_config().coded_size();
|
| + CHECK((is_audio && audio_stream_) || (!is_audio && video_stream_));
|
| + data->demuxer_configs.resize(1);
|
| + CHECK(GetDemuxerConfigFromStream(&data->demuxer_configs[0], is_audio));
|
| + if (!is_audio) {
|
| + gfx::Size size = data->demuxer_configs[0].video_size;
|
| DVLOG(1) << "Video config is changed: " << size.width() << "x"
|
| << size.height();
|
| }
|
| @@ -649,13 +646,6 @@ void MediaSourceDelegate::DeleteSelf() {
|
| delete this;
|
| }
|
|
|
| -void MediaSourceDelegate::OnMediaConfigRequest() {
|
| - DCHECK(media_loop_->BelongsToCurrentThread());
|
| - DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_;
|
| - if (CanNotifyDemuxerReady())
|
| - NotifyDemuxerReady();
|
| -}
|
| -
|
| bool MediaSourceDelegate::CanNotifyDemuxerReady() {
|
| DCHECK(media_loop_->BelongsToCurrentThread());
|
| return is_demuxer_ready_;
|
| @@ -667,24 +657,8 @@ void MediaSourceDelegate::NotifyDemuxerReady() {
|
| DCHECK(CanNotifyDemuxerReady());
|
|
|
| scoped_ptr<DemuxerConfigs> configs(new DemuxerConfigs());
|
| - if (audio_stream_) {
|
| - media::AudioDecoderConfig config = audio_stream_->audio_decoder_config();
|
| - configs->audio_codec = config.codec();
|
| - configs->audio_channels =
|
| - media::ChannelLayoutToChannelCount(config.channel_layout());
|
| - configs->audio_sampling_rate = config.samples_per_second();
|
| - configs->is_audio_encrypted = config.is_encrypted();
|
| - configs->audio_extra_data = std::vector<uint8>(
|
| - config.extra_data(), config.extra_data() + config.extra_data_size());
|
| - }
|
| - if (video_stream_) {
|
| - media::VideoDecoderConfig config = video_stream_->video_decoder_config();
|
| - configs->video_codec = config.codec();
|
| - configs->video_size = config.natural_size();
|
| - configs->is_video_encrypted = config.is_encrypted();
|
| - configs->video_extra_data = std::vector<uint8>(
|
| - config.extra_data(), config.extra_data() + config.extra_data_size());
|
| - }
|
| + GetDemuxerConfigFromStream(configs.get(), true);
|
| + GetDemuxerConfigFromStream(configs.get(), false);
|
| configs->duration = GetDuration();
|
|
|
| if (demuxer_client_)
|
| @@ -770,4 +744,32 @@ base::TimeDelta MediaSourceDelegate::FindBufferedBrowserSeekTime_Locked(
|
| return seek_time;
|
| }
|
|
|
| +bool MediaSourceDelegate::GetDemuxerConfigFromStream(
|
| + media::DemuxerConfigs* configs, bool is_audio) {
|
| + DCHECK(media_loop_->BelongsToCurrentThread());
|
| + if (!CanNotifyDemuxerReady())
|
| + return false;
|
| + if (is_audio && audio_stream_) {
|
| + media::AudioDecoderConfig config = audio_stream_->audio_decoder_config();
|
| + configs->audio_codec = config.codec();
|
| + configs->audio_channels =
|
| + media::ChannelLayoutToChannelCount(config.channel_layout());
|
| + configs->audio_sampling_rate = config.samples_per_second();
|
| + configs->is_audio_encrypted = config.is_encrypted();
|
| + configs->audio_extra_data = std::vector<uint8>(
|
| + config.extra_data(), config.extra_data() + config.extra_data_size());
|
| + return true;
|
| + }
|
| + if (!is_audio && video_stream_) {
|
| + media::VideoDecoderConfig config = video_stream_->video_decoder_config();
|
| + configs->video_codec = config.codec();
|
| + configs->video_size = config.natural_size();
|
| + configs->is_video_encrypted = config.is_encrypted();
|
| + configs->video_extra_data = std::vector<uint8>(
|
| + config.extra_data(), config.extra_data() + config.extra_data_size());
|
| + return true;
|
| + }
|
| + return false;
|
| +}
|
| +
|
| } // namespace content
|
|
|