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

Unified Diff: media/mojo/services/mojo_audio_decoder.cc

Issue 1982883003: Handle unexpected MojoWait() result in MojoAudioDecoderService (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase only Created 4 years, 7 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
« no previous file with comments | « no previous file | media/mojo/services/mojo_audio_decoder_service.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/mojo/services/mojo_audio_decoder.cc
diff --git a/media/mojo/services/mojo_audio_decoder.cc b/media/mojo/services/mojo_audio_decoder.cc
index c80300aef1eb79a827ad47cfdabdf6f9e61e5938..037982e44aaa9424996772edbec99969ea368912 100644
--- a/media/mojo/services/mojo_audio_decoder.cc
+++ b/media/mojo/services/mojo_audio_decoder.cc
@@ -79,7 +79,7 @@ void MojoAudioDecoder::Initialize(const AudioDecoderConfig& config,
base::Bind(&MojoAudioDecoder::OnInitialized, base::Unretained(this)));
}
-void MojoAudioDecoder::Decode(const scoped_refptr<DecoderBuffer>& buffer,
+void MojoAudioDecoder::Decode(const scoped_refptr<DecoderBuffer>& media_buffer,
const DecodeCB& decode_cb) {
DVLOG(3) << __FUNCTION__;
DCHECK(task_runner_->BelongsToCurrentThread());
@@ -90,11 +90,18 @@ void MojoAudioDecoder::Decode(const scoped_refptr<DecoderBuffer>& buffer,
return;
}
+ mojom::DecoderBufferPtr buffer = TransferDecoderBuffer(media_buffer);
+ if (!buffer) {
+ task_runner_->PostTask(FROM_HERE,
+ base::Bind(decode_cb, DecodeStatus::DECODE_ERROR));
+ return;
+ }
+
DCHECK(decode_cb_.is_null());
decode_cb_ = decode_cb;
remote_decoder_->Decode(
- TransferDecoderBuffer(buffer),
+ std::move(buffer),
base::Bind(&MojoAudioDecoder::OnDecodeStatus, base::Unretained(this)));
}
@@ -223,10 +230,14 @@ mojom::DecoderBufferPtr MojoAudioDecoder::TransferDecoderBuffer(
// Serialize the data section of the DecoderBuffer into our pipe.
uint32_t num_bytes = base::checked_cast<uint32_t>(media_buffer->data_size());
DCHECK_GT(num_bytes, 0u);
- CHECK_EQ(WriteDataRaw(producer_handle_.get(), media_buffer->data(),
- &num_bytes, MOJO_READ_DATA_FLAG_ALL_OR_NONE),
- MOJO_RESULT_OK);
- CHECK_EQ(num_bytes, static_cast<uint32_t>(media_buffer->data_size()));
+ MojoResult result =
+ WriteDataRaw(producer_handle_.get(), media_buffer->data(), &num_bytes,
+ MOJO_WRITE_DATA_FLAG_ALL_OR_NONE);
+ if (result != MOJO_RESULT_OK || num_bytes != media_buffer->data_size()) {
+ DVLOG(1) << __FUNCTION__ << ": writing to data pipe failed";
+ return nullptr;
+ }
+
return buffer;
}
« no previous file with comments | « no previous file | media/mojo/services/mojo_audio_decoder_service.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698