Chromium Code Reviews| Index: media/mojo/services/mojo_demuxer_stream_adapter.cc |
| diff --git a/media/mojo/services/mojo_demuxer_stream_adapter.cc b/media/mojo/services/mojo_demuxer_stream_adapter.cc |
| index 9d540c60a3e5590c0fcd4afd75edf04f024e45dd..0d234bc3e8afccf11185bf7e2c2f2739c94e0955 100644 |
| --- a/media/mojo/services/mojo_demuxer_stream_adapter.cc |
| +++ b/media/mojo/services/mojo_demuxer_stream_adapter.cc |
| @@ -112,27 +112,35 @@ void MojoDemuxerStreamAdapter::OnBufferReady( |
| scoped_refptr<DecoderBuffer> media_buffer( |
| buffer.To<scoped_refptr<DecoderBuffer>>()); |
| - if (!media_buffer->end_of_stream()) { |
| - DCHECK_GT(media_buffer->data_size(), 0u); |
| + if (media_buffer->end_of_stream()) { |
| + base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kOk, media_buffer); |
| + return; |
| + } |
| - // Wait for the data to become available in the DataPipe. |
| - MojoHandleSignalsState state; |
| - CHECK_EQ(MOJO_RESULT_OK, |
| - MojoWait(stream_pipe_.get().value(), MOJO_HANDLE_SIGNAL_READABLE, |
| - MOJO_DEADLINE_INDEFINITE, &state)); |
| - CHECK_EQ(MOJO_HANDLE_SIGNAL_READABLE, state.satisfied_signals); |
|
alokp
2016/06/20 23:52:14
I started hitting this CHECK after https://coderev
|
| + DCHECK_GT(media_buffer->data_size(), 0u); |
| + |
| + // Wait for the data to become available in the DataPipe. |
|
xhwang
2016/06/21 05:15:21
timav@ has fixed this on MojoAudioDecoder recently
alokp
2016/06/21 17:09:32
OK. I copied the implementation from MojoAudioDeco
|
| + MojoHandleSignalsState state; |
| + CHECK_EQ(MOJO_RESULT_OK, MojoWait(stream_pipe_.get().value(), |
|
Ken Rockot(use gerrit already)
2016/06/21 00:15:50
I don't think a CHECK was ever appropriate here re
alokp
2016/06/21 17:09:32
Thanks Ken. The code in MojoAudioDecoder does exac
|
| + MOJO_HANDLE_SIGNAL_READABLE | |
| + MOJO_HANDLE_SIGNAL_PEER_CLOSED, |
| + MOJO_DEADLINE_INDEFINITE, &state)); |
| + if (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()); |
| uint32_t bytes_read = bytes_to_read; |
| - CHECK_EQ(ReadDataRaw(stream_pipe_.get(), media_buffer->writable_data(), |
| - &bytes_read, MOJO_READ_DATA_FLAG_ALL_OR_NONE), |
| - MOJO_RESULT_OK); |
| + CHECK_EQ(MOJO_RESULT_OK, |
| + ReadDataRaw(stream_pipe_.get(), media_buffer->writable_data(), |
| + &bytes_read, MOJO_READ_DATA_FLAG_ALL_OR_NONE)); |
| CHECK_EQ(bytes_to_read, bytes_read); |
| + base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kOk, media_buffer); |
| + } else { |
| + CHECK_EQ(MOJO_HANDLE_SIGNAL_PEER_CLOSED, state.satisfied_signals); |
| + base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kAborted, nullptr); |
|
alokp
2016/06/20 23:52:14
Should I reset stream_pipe_ here and early return
Ken Rockot(use gerrit already)
2016/06/21 00:15:50
I'll let xhwang comment on this. I don't understan
xhwang
2016/06/21 05:15:21
The Renderer hosted by MojoRendererService will ge
alokp
2016/06/21 17:09:32
Acknowledged.
|
| + return; |
| } |
| - |
| - base::ResetAndReturn(&read_cb_).Run(DemuxerStream::kOk, media_buffer); |
| } |
| void MojoDemuxerStreamAdapter::UpdateConfig( |