| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "content/renderer/media/android/media_source_delegate.h" | 5 #include "content/renderer/media/android/media_source_delegate.h" |
| 6 | 6 |
| 7 #include <limits> | 7 #include <limits> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <vector> | 9 #include <vector> |
| 10 | 10 |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 132 audio_stream_ = NULL; | 132 audio_stream_ = NULL; |
| 133 video_stream_ = NULL; | 133 video_stream_ = NULL; |
| 134 // TODO(xhwang): Figure out if we need to Reset the DDSs after Seeking or | 134 // TODO(xhwang): Figure out if we need to Reset the DDSs after Seeking or |
| 135 // before destroying them. | 135 // before destroying them. |
| 136 audio_decrypting_demuxer_stream_.reset(); | 136 audio_decrypting_demuxer_stream_.reset(); |
| 137 video_decrypting_demuxer_stream_.reset(); | 137 video_decrypting_demuxer_stream_.reset(); |
| 138 | 138 |
| 139 media_weak_factory_.InvalidateWeakPtrs(); | 139 media_weak_factory_.InvalidateWeakPtrs(); |
| 140 DCHECK(!media_weak_factory_.HasWeakPtrs()); | 140 DCHECK(!media_weak_factory_.HasWeakPtrs()); |
| 141 | 141 |
| 142 // The callback OnDemuxerStopDone() owns |this| and will delete it when | 142 chunk_demuxer_->Stop(); |
| 143 // called. Hence using base::Unretained(this) is safe here. | 143 chunk_demuxer_.reset(); |
| 144 chunk_demuxer_->Stop(base::Bind(&MediaSourceDelegate::OnDemuxerStopDone, | 144 |
| 145 base::Unretained(this))); | 145 // The callback DeleteSelf() owns |this| and will delete it when called. |
| 146 // Hence using base::Unretained(this) is safe here. |
| 147 media_task_runner_->PostTask( |
| 148 FROM_HERE, |
| 149 base::Bind(&MediaSourceDelegate::DeleteSelf, base::Unretained(this))); |
| 146 } | 150 } |
| 147 | 151 |
| 148 void MediaSourceDelegate::InitializeMediaSource( | 152 void MediaSourceDelegate::InitializeMediaSource( |
| 149 const MediaSourceOpenedCB& media_source_opened_cb, | 153 const MediaSourceOpenedCB& media_source_opened_cb, |
| 150 const media::Demuxer::NeedKeyCB& need_key_cb, | 154 const media::Demuxer::NeedKeyCB& need_key_cb, |
| 151 const media::SetDecryptorReadyCB& set_decryptor_ready_cb, | 155 const media::SetDecryptorReadyCB& set_decryptor_ready_cb, |
| 152 const UpdateNetworkStateCB& update_network_state_cb, | 156 const UpdateNetworkStateCB& update_network_state_cb, |
| 153 const DurationChangeCB& duration_change_cb) { | 157 const DurationChangeCB& duration_change_cb) { |
| 154 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 158 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 155 DCHECK(!media_source_opened_cb.is_null()); | 159 DCHECK(!media_source_opened_cb.is_null()); |
| (...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 619 DCHECK(media_task_runner_->BelongsToCurrentThread()); | 623 DCHECK(media_task_runner_->BelongsToCurrentThread()); |
| 620 DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; | 624 DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; |
| 621 | 625 |
| 622 base::AutoLock auto_lock(seeking_lock_); | 626 base::AutoLock auto_lock(seeking_lock_); |
| 623 DCHECK(seeking_); | 627 DCHECK(seeking_); |
| 624 seeking_ = false; | 628 seeking_ = false; |
| 625 doing_browser_seek_ = false; | 629 doing_browser_seek_ = false; |
| 626 demuxer_client_->DemuxerSeekDone(demuxer_client_id_, browser_seek_time_); | 630 demuxer_client_->DemuxerSeekDone(demuxer_client_id_, browser_seek_time_); |
| 627 } | 631 } |
| 628 | 632 |
| 629 void MediaSourceDelegate::OnDemuxerStopDone() { | |
| 630 DCHECK(media_task_runner_->BelongsToCurrentThread()); | |
| 631 DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; | |
| 632 main_task_runner_->PostTask( | |
| 633 FROM_HERE, | |
| 634 base::Bind(&MediaSourceDelegate::DeleteSelf, base::Unretained(this))); | |
| 635 } | |
| 636 | |
| 637 void MediaSourceDelegate::DeleteSelf() { | 633 void MediaSourceDelegate::DeleteSelf() { |
| 638 DCHECK(main_task_runner_->BelongsToCurrentThread()); | 634 DCHECK(main_task_runner_->BelongsToCurrentThread()); |
| 639 DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; | 635 DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; |
| 640 chunk_demuxer_.reset(); | |
| 641 delete this; | 636 delete this; |
| 642 } | 637 } |
| 643 | 638 |
| 644 void MediaSourceDelegate::NotifyDemuxerReady() { | 639 void MediaSourceDelegate::NotifyDemuxerReady() { |
| 645 DCHECK(media_task_runner_->BelongsToCurrentThread()); | 640 DCHECK(media_task_runner_->BelongsToCurrentThread()); |
| 646 DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; | 641 DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; |
| 647 DCHECK(is_demuxer_ready_); | 642 DCHECK(is_demuxer_ready_); |
| 648 | 643 |
| 649 scoped_ptr<DemuxerConfigs> configs(new DemuxerConfigs()); | 644 scoped_ptr<DemuxerConfigs> configs(new DemuxerConfigs()); |
| 650 GetDemuxerConfigFromStream(configs.get(), true); | 645 GetDemuxerConfigFromStream(configs.get(), true); |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 756 configs->video_size = config.natural_size(); | 751 configs->video_size = config.natural_size(); |
| 757 configs->is_video_encrypted = config.is_encrypted(); | 752 configs->is_video_encrypted = config.is_encrypted(); |
| 758 configs->video_extra_data = std::vector<uint8>( | 753 configs->video_extra_data = std::vector<uint8>( |
| 759 config.extra_data(), config.extra_data() + config.extra_data_size()); | 754 config.extra_data(), config.extra_data() + config.extra_data_size()); |
| 760 return true; | 755 return true; |
| 761 } | 756 } |
| 762 return false; | 757 return false; |
| 763 } | 758 } |
| 764 | 759 |
| 765 } // namespace content | 760 } // namespace content |
| OLD | NEW |