summaryrefslogtreecommitdiff
path: root/chromium/media/mojo/services/mojo_audio_decoder_service.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/mojo/services/mojo_audio_decoder_service.cc')
-rw-r--r--chromium/media/mojo/services/mojo_audio_decoder_service.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/chromium/media/mojo/services/mojo_audio_decoder_service.cc b/chromium/media/mojo/services/mojo_audio_decoder_service.cc
index eba8b656e92..68ec4f9eb74 100644
--- a/chromium/media/mojo/services/mojo_audio_decoder_service.cc
+++ b/chromium/media/mojo/services/mojo_audio_decoder_service.cc
@@ -41,13 +41,16 @@ void MojoAudioDecoderService::Initialize(const AudioDecoderConfig& config,
// Get CdmContext from cdm_id if the stream is encrypted.
CdmContext* cdm_context = nullptr;
if (config.is_encrypted()) {
- cdm_context_ref_ = mojo_cdm_service_context_->GetCdmContextRef(cdm_id);
- if (!cdm_context_ref_) {
+ auto cdm_context_ref = mojo_cdm_service_context_->GetCdmContextRef(cdm_id);
+ if (!cdm_context_ref) {
DVLOG(1) << "CdmContextRef not found for CDM id: " << cdm_id;
std::move(callback).Run(false, false);
return;
}
+ // |cdm_context_ref_| must be kept as long as |cdm_context| is used by the
+ // |decoder_|.
+ cdm_context_ref_ = std::move(cdm_context_ref);
cdm_context = cdm_context_ref_->GetCdmContext();
DCHECK(cdm_context);
}