Chromium Code Reviews| 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 bd4cf1a02adcf5ee482d2fe9117035aca8e8136c..2e0abc73110de8da65857e6f8acaf03b6e7d4b47 100644 |
| --- a/content/renderer/media/android/media_source_delegate.cc |
| +++ b/content/renderer/media/android/media_source_delegate.cc |
| @@ -58,7 +58,6 @@ MediaSourceDelegate::MediaSourceDelegate( |
| demuxer_client_(demuxer_client), |
| demuxer_client_id_(demuxer_client_id), |
| media_log_(media_log), |
| - demuxer_(NULL), |
| is_demuxer_ready_(false), |
| audio_stream_(NULL), |
| video_stream_(NULL), |
| @@ -66,9 +65,6 @@ MediaSourceDelegate::MediaSourceDelegate( |
| doing_browser_seek_(false), |
| browser_seek_time_(media::kNoTimestamp()), |
| expecting_regular_seek_(false), |
| -#if defined(GOOGLE_TV) |
| - key_added_(false), |
| -#endif |
| access_unit_size_(0) { |
| DCHECK(main_loop_->BelongsToCurrentThread()); |
| } |
| @@ -77,7 +73,6 @@ MediaSourceDelegate::~MediaSourceDelegate() { |
| DCHECK(main_loop_->BelongsToCurrentThread()); |
| DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; |
| DCHECK(!chunk_demuxer_); |
| - DCHECK(!demuxer_); |
| DCHECK(!demuxer_client_); |
| DCHECK(!audio_decrypting_demuxer_stream_); |
| DCHECK(!video_decrypting_demuxer_stream_); |
| @@ -89,7 +84,7 @@ void MediaSourceDelegate::Destroy() { |
| DCHECK(main_loop_->BelongsToCurrentThread()); |
| DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; |
| - if (!demuxer_) { |
| + if (!chunk_demuxer_) { |
| DCHECK(!demuxer_client_); |
| delete this; |
| return; |
| @@ -102,8 +97,7 @@ void MediaSourceDelegate::Destroy() { |
| main_weak_factory_.InvalidateWeakPtrs(); |
| DCHECK(!main_weak_factory_.HasWeakPtrs()); |
| - if (chunk_demuxer_) |
| - chunk_demuxer_->Shutdown(); |
| + chunk_demuxer_->Shutdown(); |
| // |this| will be transferred to the callback StopDemuxer() and |
| // OnDemuxerStopDone(). They own |this| and OnDemuxerStopDone() will delete |
| @@ -115,7 +109,7 @@ void MediaSourceDelegate::Destroy() { |
| void MediaSourceDelegate::StopDemuxer() { |
| DCHECK(media_loop_->BelongsToCurrentThread()); |
| - DCHECK(demuxer_); |
| + DCHECK(chunk_demuxer_); |
| demuxer_client_->RemoveDelegate(demuxer_client_id_); |
| demuxer_client_ = NULL; |
| @@ -132,7 +126,7 @@ void MediaSourceDelegate::StopDemuxer() { |
| // The callback OnDemuxerStopDone() owns |this| and will delete it when |
| // called. Hence using base::Unretained(this) is safe here. |
| - demuxer_->Stop(base::Bind(&MediaSourceDelegate::OnDemuxerStopDone, |
| + chunk_demuxer_->Stop(base::Bind(&MediaSourceDelegate::OnDemuxerStopDone, |
| base::Unretained(this))); |
|
scherkus (not reviewing)
2014/01/14 23:58:37
fix indent
ycheo (away)
2014/01/15 00:11:10
Done.
|
| } |
| @@ -157,7 +151,6 @@ void MediaSourceDelegate::InitializeMediaSource( |
| media::BindToCurrentLoop(base::Bind( |
| &MediaSourceDelegate::OnNeedKey, main_weak_this_)), |
| base::Bind(&LogMediaSourceError, media_log_))); |
| - demuxer_ = chunk_demuxer_.get(); |
| // |this| will be retained until StopDemuxer() is posted, so Unretained() is |
| // safe here. |
| @@ -169,31 +162,12 @@ void MediaSourceDelegate::InitializeMediaSource( |
| void MediaSourceDelegate::InitializeDemuxer() { |
| DCHECK(media_loop_->BelongsToCurrentThread()); |
| demuxer_client_->AddDelegate(demuxer_client_id_, this); |
| - demuxer_->Initialize(this, base::Bind(&MediaSourceDelegate::OnDemuxerInitDone, |
| + chunk_demuxer_->Initialize(this, |
| + base::Bind(&MediaSourceDelegate::OnDemuxerInitDone, |
| media_weak_factory_.GetWeakPtr()), |
| - false); |
| + false); |
| } |
| -#if defined(GOOGLE_TV) |
| -void MediaSourceDelegate::InitializeMediaStream( |
| - media::Demuxer* demuxer, |
| - const UpdateNetworkStateCB& update_network_state_cb) { |
| - DCHECK(main_loop_->BelongsToCurrentThread()); |
| - DCHECK(demuxer); |
| - demuxer_ = demuxer; |
| - update_network_state_cb_ = media::BindToCurrentLoop(update_network_state_cb); |
| - // When playing Media Stream, don't wait to accumulate multiple packets per |
| - // IPC communication. |
| - access_unit_size_ = 1; |
| - |
| - // |this| will be retained until StopDemuxer() is posted, so Unretained() is |
| - // safe here. |
| - media_loop_->PostTask(FROM_HERE, |
| - base::Bind(&MediaSourceDelegate::InitializeDemuxer, |
| - base::Unretained(this))); |
| -} |
| -#endif |
| - |
| const blink::WebTimeRanges& MediaSourceDelegate::Buffered() { |
| buffered_web_time_ranges_ = |
| ConvertToWebTimeRanges(buffered_time_ranges_); |
| @@ -313,7 +287,7 @@ void MediaSourceDelegate::Seek( |
| void MediaSourceDelegate::SeekInternal(const base::TimeDelta& seek_time) { |
| DCHECK(media_loop_->BelongsToCurrentThread()); |
| DCHECK(IsSeeking()); |
| - demuxer_->Seek(seek_time, base::Bind( |
| + chunk_demuxer_->Seek(seek_time, base::Bind( |
| &MediaSourceDelegate::OnDemuxerSeekDone, |
| media_weak_factory_.GetWeakPtr())); |
| } |
| @@ -388,7 +362,7 @@ void MediaSourceDelegate::OnBufferReady( |
| << ((!buffer || buffer->end_of_stream()) ? |
| -1 : buffer->timestamp().InMilliseconds()) |
| << ") : " << demuxer_client_id_; |
| - DCHECK(demuxer_); |
| + DCHECK(chunk_demuxer_); |
| // No new OnReadFromDemuxer() will be called during seeking. So this callback |
| // must be from previous OnReadFromDemuxer() call and should be ignored. |
| @@ -451,7 +425,6 @@ void MediaSourceDelegate::OnBufferReady( |
| data->access_units[index].data.assign( |
| buffer->data(), buffer->data() + buffer->data_size()); |
| -#if !defined(GOOGLE_TV) |
| // Vorbis needs 4 extra bytes padding on Android. Check |
| // NuMediaExtractor.cpp in Android source code. |
| if (is_audio && media::kCodecVorbis == |
| @@ -460,7 +433,6 @@ void MediaSourceDelegate::OnBufferReady( |
| data->access_units[index].data.end(), kVorbisPadding, |
| kVorbisPadding + 4); |
| } |
| -#endif |
| if (buffer->decrypt_config()) { |
| data->access_units[index].key_id = std::vector<char>( |
| buffer->decrypt_config()->key_id().begin(), |
| @@ -508,15 +480,15 @@ void MediaSourceDelegate::RemoveTextStream( |
| void MediaSourceDelegate::OnDemuxerInitDone(media::PipelineStatus status) { |
| DCHECK(media_loop_->BelongsToCurrentThread()); |
| DVLOG(1) << __FUNCTION__ << "(" << status << ") : " << demuxer_client_id_; |
| - DCHECK(demuxer_); |
| + DCHECK(chunk_demuxer_); |
| if (status != media::PIPELINE_OK) { |
| OnDemuxerError(status); |
| return; |
| } |
| - audio_stream_ = demuxer_->GetStream(DemuxerStream::AUDIO); |
| - video_stream_ = demuxer_->GetStream(DemuxerStream::VIDEO); |
| + audio_stream_ = chunk_demuxer_->GetStream(DemuxerStream::AUDIO); |
| + video_stream_ = chunk_demuxer_->GetStream(DemuxerStream::VIDEO); |
| if (audio_stream_ && audio_stream_->audio_decoder_config().is_encrypted() && |
| !set_decryptor_ready_cb_.is_null()) { |
| @@ -568,7 +540,7 @@ void MediaSourceDelegate::OnAudioDecryptingDemuxerStreamInitDone( |
| media::PipelineStatus status) { |
| DCHECK(media_loop_->BelongsToCurrentThread()); |
| DVLOG(1) << __FUNCTION__ << "(" << status << ") : " << demuxer_client_id_; |
| - DCHECK(demuxer_); |
| + DCHECK(chunk_demuxer_); |
| if (status != media::PIPELINE_OK) |
| audio_decrypting_demuxer_stream_.reset(); |
| @@ -591,7 +563,7 @@ void MediaSourceDelegate::OnVideoDecryptingDemuxerStreamInitDone( |
| media::PipelineStatus status) { |
| DCHECK(media_loop_->BelongsToCurrentThread()); |
| DVLOG(1) << __FUNCTION__ << "(" << status << ") : " << demuxer_client_id_; |
| - DCHECK(demuxer_); |
| + DCHECK(chunk_demuxer_); |
| if (status != media::PIPELINE_OK) |
| video_decrypting_demuxer_stream_.reset(); |
| @@ -666,7 +638,6 @@ void MediaSourceDelegate::DeleteSelf() { |
| DCHECK(main_loop_->BelongsToCurrentThread()); |
| DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; |
| chunk_demuxer_.reset(); |
| - demuxer_ = NULL; |
| delete this; |
| } |
| @@ -677,42 +648,9 @@ void MediaSourceDelegate::OnMediaConfigRequest() { |
| NotifyDemuxerReady(); |
| } |
| -#if defined(GOOGLE_TV) |
| -// TODO(kjyoun): Enhance logic to detect when to call NotifyDemuxerReady() |
| -// For now, we call it when the first key is added. See http://crbug.com/255781 |
| -void MediaSourceDelegate::NotifyKeyAdded(const std::string& key_system) { |
| - if (!media_loop_->BelongsToCurrentThread()) { |
| - media_loop_->PostTask(FROM_HERE, |
| - base::Bind(&MediaSourceDelegate::NotifyKeyAdded, |
| - base::Unretained(this), key_system)); |
| - return; |
| - } |
| - DVLOG(1) << __FUNCTION__ << " : " << demuxer_client_id_; |
| - if (key_added_) |
| - return; |
| - key_added_ = true; |
| - key_system_ = key_system; |
| - if (!CanNotifyDemuxerReady()) |
| - return; |
| - if (HasEncryptedStream()) |
| - NotifyDemuxerReady(); |
| -} |
| -#endif // defined(GOOGLE_TV) |
| - |
| bool MediaSourceDelegate::CanNotifyDemuxerReady() { |
| DCHECK(media_loop_->BelongsToCurrentThread()); |
| - // This can happen when a key is added before the demuxer is initialized. |
| - // See NotifyKeyAdded(). |
| - // TODO(kjyoun): Remove NotifyDemxuerReady() call from NotifyKeyAdded() so |
| - // that we can remove all is_demuxer_ready_/key_added_/key_system_ madness. |
| - // See http://crbug.com/255781 |
| - if (!is_demuxer_ready_) |
| - return false; |
| -#if defined(GOOGLE_TV) |
| - if (HasEncryptedStream() && !key_added_) |
| - return false; |
| -#endif // defined(GOOGLE_TV) |
| - return true; |
| + return is_demuxer_ready_; |
| } |
| void MediaSourceDelegate::NotifyDemuxerReady() { |
| @@ -741,10 +679,6 @@ void MediaSourceDelegate::NotifyDemuxerReady() { |
| } |
| configs->duration_ms = GetDurationMs(); |
| -#if defined(GOOGLE_TV) |
| - configs->key_system = HasEncryptedStream() ? key_system_ : ""; |
| -#endif |
| - |
| if (demuxer_client_) |
| demuxer_client_->DemuxerReady(demuxer_client_id_, *configs); |
| } |