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

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

Issue 1899363002: Finish plumbing MojoVideoDecoder. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Remove CHECKs on GPU side. 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
Index: media/mojo/services/mojo_audio_decoder_service.cc
diff --git a/media/mojo/services/mojo_audio_decoder_service.cc b/media/mojo/services/mojo_audio_decoder_service.cc
index 91d0b9bf8b479dff3c424076f24f208fd43ff4a1..f2724aab9680e0feb9d4eacd3f4fd5137b043dec 100644
--- a/media/mojo/services/mojo_audio_decoder_service.cc
+++ b/media/mojo/services/mojo_audio_decoder_service.cc
@@ -14,20 +14,6 @@
namespace media {
-static mojom::AudioDecoder::DecodeStatus ConvertDecodeStatus(
- media::DecodeStatus status) {
- switch (status) {
- case media::DecodeStatus::OK:
- return mojom::AudioDecoder::DecodeStatus::OK;
- case media::DecodeStatus::ABORTED:
- return mojom::AudioDecoder::DecodeStatus::ABORTED;
- case media::DecodeStatus::DECODE_ERROR:
- return mojom::AudioDecoder::DecodeStatus::DECODE_ERROR;
- }
- NOTREACHED();
- return mojom::AudioDecoder::DecodeStatus::DECODE_ERROR;
-}
-
MojoAudioDecoderService::MojoAudioDecoderService(
base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context,
std::unique_ptr<media::AudioDecoder> decoder,
@@ -95,7 +81,7 @@ void MojoAudioDecoderService::Decode(mojom::DecoderBufferPtr buffer,
scoped_refptr<DecoderBuffer> media_buffer =
ReadDecoderBuffer(std::move(buffer));
if (!media_buffer) {
- callback.Run(ConvertDecodeStatus(media::DecodeStatus::DECODE_ERROR));
+ callback.Run(mojom::DecodeStatus::DECODE_ERROR);
return;
}
@@ -127,7 +113,7 @@ void MojoAudioDecoderService::OnInitialized(const InitializeCallback& callback,
void MojoAudioDecoderService::OnDecodeStatus(const DecodeCallback& callback,
media::DecodeStatus status) {
DVLOG(3) << __FUNCTION__ << " status:" << status;
- callback.Run(ConvertDecodeStatus(status));
+ callback.Run(static_cast<mojom::DecodeStatus>(status));
}
void MojoAudioDecoderService::OnResetDone(const ResetCallback& callback) {
@@ -152,28 +138,29 @@ scoped_refptr<DecoderBuffer> MojoAudioDecoderService::ReadDecoderBuffer(
return media_buffer;
// Wait for the data to become available in the DataPipe.
+ MojoResult result;
MojoHandleSignalsState state;
- CHECK_EQ(MOJO_RESULT_OK,
- MojoWait(consumer_handle_.get().value(), MOJO_HANDLE_SIGNAL_READABLE,
- MOJO_DEADLINE_INDEFINITE, &state));
-
+ result = MojoWait(consumer_handle_.get().value(), MOJO_HANDLE_SIGNAL_READABLE,
+ MOJO_DEADLINE_INDEFINITE, &state);
+ if (result != MOJO_RESULT_OK ||
+ !(state.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE)) {
+ return nullptr;
+ }
if (state.satisfied_signals & MOJO_HANDLE_SIGNAL_PEER_CLOSED) {
DVLOG(1) << __FUNCTION__ << ": Peer closed the data pipe";
- return scoped_refptr<DecoderBuffer>();
+ return nullptr;
}
- CHECK_EQ(MOJO_HANDLE_SIGNAL_READABLE,
- state.satisfied_signals & MOJO_HANDLE_SIGNAL_READABLE);
-
// Read the inner data for the DecoderBuffer from our DataPipe.
- uint32_t bytes_to_read =
- base::checked_cast<uint32_t>(media_buffer->data_size());
- DCHECK_GT(bytes_to_read, 0u);
- uint32_t bytes_read = bytes_to_read;
- CHECK_EQ(ReadDataRaw(consumer_handle_.get(), media_buffer->writable_data(),
- &bytes_read, MOJO_READ_DATA_FLAG_ALL_OR_NONE),
- MOJO_RESULT_OK);
- CHECK_EQ(bytes_to_read, bytes_read);
+ uint32_t data_size = buffer->data_size;
+ if (data_size != media_buffer->data_size())
Tima Vaisburd 2016/05/18 00:32:16 Drive-by: how can they be different?
sandersd (OOO until July 31) 2016/05/18 00:49:29 They can't (assuming size_t is of higher integer r
sandersd (OOO until July 31) 2016/05/18 00:50:42 *same or higher
dcheng 2016/05/20 21:18:22 I'd suggest DCHECK() or static_assert in the TypeC
sandersd (OOO until July 31) 2016/05/20 22:27:14 Converted to a CHECK() (in MojoVideoDecoderService
+ return nullptr;
+
+ uint32_t bytes_read = data_size;
+ result = ReadDataRaw(consumer_handle_.get(), media_buffer->writable_data(),
+ &bytes_read, MOJO_READ_DATA_FLAG_ALL_OR_NONE);
+ if (result != MOJO_RESULT_OK || bytes_read != data_size)
+ return nullptr;
return media_buffer;
}

Powered by Google App Engine
This is Rietveld 408576698