| Index: media/base/android/media_decoder_job.cc
|
| diff --git a/media/base/android/media_decoder_job.cc b/media/base/android/media_decoder_job.cc
|
| index c57da3af1729fe0df9ba72e8613742dd38d97f68..24a82367c1d07857f343ac4ea96735010849543e 100644
|
| --- a/media/base/android/media_decoder_job.cc
|
| +++ b/media/base/android/media_decoder_job.cc
|
| @@ -102,7 +102,7 @@ void MediaDecoderJob::Prefetch(const base::Closure& prefetch_cb) {
|
| RequestData(prefetch_cb);
|
| }
|
|
|
| -bool MediaDecoderJob::Decode(
|
| +scoped_ptr<DemuxerConfigs> MediaDecoderJob::Decode(
|
| base::TimeTicks start_time_ticks,
|
| base::TimeDelta start_presentation_timestamp,
|
| const DecoderCallback& callback) {
|
| @@ -117,18 +117,19 @@ bool MediaDecoderJob::Decode(
|
| base::Unretained(this),
|
| start_time_ticks,
|
| start_presentation_timestamp));
|
| - return true;
|
| + return scoped_ptr<DemuxerConfigs>();
|
| }
|
|
|
| if (DemuxerStream::kConfigChanged == CurrentAccessUnit().status) {
|
| - // Clear received data because we need to handle a config change.
|
| decode_cb_.Reset();
|
| - ClearData();
|
| - return false;
|
| + size_t index = CurrentReceivedDataChunkIndex();
|
| + CHECK_EQ(1u, received_data_[index].demuxer_configs.size());
|
| + return scoped_ptr<DemuxerConfigs>(new DemuxerConfigs(
|
| + received_data_[index].demuxer_configs[0]));
|
| }
|
|
|
| DecodeCurrentAccessUnit(start_time_ticks, start_presentation_timestamp);
|
| - return true;
|
| + return scoped_ptr<DemuxerConfigs>();
|
| }
|
|
|
| void MediaDecoderJob::StopDecode() {
|
| @@ -462,11 +463,15 @@ void MediaDecoderJob::OnDecodeCompleted(
|
| const AccessUnit& MediaDecoderJob::CurrentAccessUnit() const {
|
| DCHECK(ui_task_runner_->BelongsToCurrentThread());
|
| DCHECK(HasData());
|
| - int index = NoAccessUnitsRemainingInChunk(true) ?
|
| - inactive_demuxer_data_index() : current_demuxer_data_index_;
|
| + size_t index = CurrentReceivedDataChunkIndex();
|
| return received_data_[index].access_units[access_unit_index_[index]];
|
| }
|
|
|
| +size_t MediaDecoderJob::CurrentReceivedDataChunkIndex() const {
|
| + return NoAccessUnitsRemainingInChunk(true) ?
|
| + inactive_demuxer_data_index() : current_demuxer_data_index_;
|
| +}
|
| +
|
| bool MediaDecoderJob::NoAccessUnitsRemainingInChunk(
|
| bool is_active_chunk) const {
|
| DCHECK(ui_task_runner_->BelongsToCurrentThread());
|
|
|