Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1763)

Unified Diff: media/filters/decrypting_demuxer_stream.cc

Issue 1666653002: media: Remove SetCdmReadyCB and CdmReadyCB (part 1). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: media/filters/decrypting_demuxer_stream.cc
diff --git a/media/filters/decrypting_demuxer_stream.cc b/media/filters/decrypting_demuxer_stream.cc
index 883d4c1a1b351286902dc31aaf6d3d3e05be6fa5..b19439fdf9deb463e24f1fdc4951245783f42f30 100644
--- a/media/filters/decrypting_demuxer_stream.cc
+++ b/media/filters/decrypting_demuxer_stream.cc
@@ -43,7 +43,7 @@ std::string DecryptingDemuxerStream::GetDisplayName() const {
}
void DecryptingDemuxerStream::Initialize(DemuxerStream* stream,
- const SetCdmReadyCB& set_cdm_ready_cb,
+ CdmContext* cdm_context,
const PipelineStatusCB& status_cb) {
DVLOG(2) << __FUNCTION__;
DCHECK(task_runner_->BelongsToCurrentThread());
@@ -52,14 +52,26 @@ void DecryptingDemuxerStream::Initialize(DemuxerStream* stream,
DCHECK(!demuxer_stream_);
weak_this_ = weak_factory_.GetWeakPtr();
demuxer_stream_ = stream;
- set_cdm_ready_cb_ = set_cdm_ready_cb;
init_cb_ = BindToCurrentLoop(status_cb);
InitializeDecoderConfig();
- state_ = kDecryptorRequested;
- set_cdm_ready_cb_.Run(BindToCurrentLoop(
- base::Bind(&DecryptingDemuxerStream::SetCdm, weak_this_)));
+ DCHECK(cdm_context);
+ if (!cdm_context->GetDecryptor()) {
+ MEDIA_LOG(DEBUG, media_log_) << GetDisplayName() << ": no decryptor";
+ base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED);
+ return;
+ }
+
+ decryptor_ = cdm_context->GetDecryptor();
+
+ decryptor_->RegisterNewKeyCB(
+ GetDecryptorStreamType(),
+ BindToCurrentLoop(
+ base::Bind(&DecryptingDemuxerStream::OnKeyAdded, weak_this_)));
+
+ state_ = kIdle;
+ base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK);
}
void DecryptingDemuxerStream::Read(const ReadCB& read_cb) {
@@ -83,16 +95,6 @@ void DecryptingDemuxerStream::Reset(const base::Closure& closure) {
reset_cb_ = BindToCurrentLoop(closure);
- // TODO(xhwang): This should not happen. Remove it, DCHECK against the
- // condition and clean up related tests.
- if (state_ == kDecryptorRequested) {
- DCHECK(!init_cb_.is_null());
- set_cdm_ready_cb_.Run(CdmReadyCB());
- base::ResetAndReturn(&init_cb_).Run(PIPELINE_ERROR_ABORT);
- DoReset();
- return;
- }
-
decryptor_->CancelDecrypt(GetDecryptorStreamType());
// Reset() cannot complete if the read callback is still pending.
@@ -115,24 +117,24 @@ void DecryptingDemuxerStream::Reset(const base::Closure& closure) {
}
AudioDecoderConfig DecryptingDemuxerStream::audio_decoder_config() {
- DCHECK(state_ != kUninitialized && state_ != kDecryptorRequested) << state_;
+ DCHECK(state_ != kUninitialized) << state_;
CHECK_EQ(demuxer_stream_->type(), AUDIO);
return audio_config_;
}
VideoDecoderConfig DecryptingDemuxerStream::video_decoder_config() {
- DCHECK(state_ != kUninitialized && state_ != kDecryptorRequested) << state_;
+ DCHECK(state_ != kUninitialized) << state_;
CHECK_EQ(demuxer_stream_->type(), VIDEO);
return video_config_;
}
DemuxerStream::Type DecryptingDemuxerStream::type() const {
- DCHECK(state_ != kUninitialized && state_ != kDecryptorRequested) << state_;
+ DCHECK(state_ != kUninitialized) << state_;
return demuxer_stream_->type();
}
DemuxerStream::Liveness DecryptingDemuxerStream::liveness() const {
- DCHECK(state_ != kUninitialized && state_ != kDecryptorRequested) << state_;
+ DCHECK(state_ != kUninitialized) << state_;
return demuxer_stream_->liveness();
}
@@ -159,8 +161,6 @@ DecryptingDemuxerStream::~DecryptingDemuxerStream() {
decryptor_->CancelDecrypt(GetDecryptorStreamType());
decryptor_ = NULL;
}
- if (!set_cdm_ready_cb_.is_null())
- base::ResetAndReturn(&set_cdm_ready_cb_).Run(CdmReadyCB());
if (!init_cb_.is_null())
base::ResetAndReturn(&init_cb_).Run(PIPELINE_ERROR_ABORT);
if (!read_cb_.is_null())
@@ -170,36 +170,6 @@ DecryptingDemuxerStream::~DecryptingDemuxerStream() {
pending_buffer_to_decrypt_ = NULL;
}
-void DecryptingDemuxerStream::SetCdm(CdmContext* cdm_context,
- const CdmAttachedCB& cdm_attached_cb) {
- DVLOG(2) << __FUNCTION__;
- DCHECK(task_runner_->BelongsToCurrentThread());
- DCHECK_EQ(state_, kDecryptorRequested) << state_;
- DCHECK(!init_cb_.is_null());
- DCHECK(!set_cdm_ready_cb_.is_null());
-
- set_cdm_ready_cb_.Reset();
-
- if (!cdm_context || !cdm_context->GetDecryptor()) {
- MEDIA_LOG(DEBUG, media_log_) << GetDisplayName() << ": decryptor not set";
- state_ = kUninitialized;
- base::ResetAndReturn(&init_cb_).Run(DECODER_ERROR_NOT_SUPPORTED);
- cdm_attached_cb.Run(false);
- return;
- }
-
- decryptor_ = cdm_context->GetDecryptor();
-
- decryptor_->RegisterNewKeyCB(
- GetDecryptorStreamType(),
- BindToCurrentLoop(
- base::Bind(&DecryptingDemuxerStream::OnKeyAdded, weak_this_)));
-
- state_ = kIdle;
- base::ResetAndReturn(&init_cb_).Run(PIPELINE_OK);
- cdm_attached_cb.Run(true);
-}
-
void DecryptingDemuxerStream::DecryptBuffer(
DemuxerStream::Status status,
const scoped_refptr<DecoderBuffer>& buffer) {
@@ -353,11 +323,7 @@ void DecryptingDemuxerStream::DoReset() {
DCHECK(init_cb_.is_null());
DCHECK(read_cb_.is_null());
- if (state_ == kDecryptorRequested)
- state_ = kUninitialized;
- else
- state_ = kIdle;
-
+ state_ = kIdle;
base::ResetAndReturn(&reset_cb_).Run();
}

Powered by Google App Engine
This is Rietveld 408576698