| 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 3de0b40b6e1cf02bcaaf5af1b61a61aa04c67463..9b7a6f1bac008e4af8f16cb6832e28f5755b6dc9 100644
|
| --- a/media/mojo/services/mojo_audio_decoder_service.cc
|
| +++ b/media/mojo/services/mojo_audio_decoder_service.cc
|
| @@ -10,6 +10,7 @@
|
| #include "media/base/cdm_context.h"
|
| #include "media/base/media_keys.h"
|
| #include "media/mojo/common/media_type_converters.h"
|
| +#include "media/mojo/common/mojo_decoder_buffer_converter.h"
|
| #include "media/mojo/services/mojo_cdm_service_context.h"
|
|
|
| namespace media {
|
| @@ -71,7 +72,9 @@ void MojoAudioDecoderService::Initialize(mojom::AudioDecoderClientPtr client,
|
| void MojoAudioDecoderService::SetDataSource(
|
| mojo::ScopedDataPipeConsumerHandle receive_pipe) {
|
| DVLOG(1) << __FUNCTION__;
|
| - consumer_handle_ = std::move(receive_pipe);
|
| +
|
| + mojo_decoder_buffer_reader_.reset(
|
| + new MojoDecoderBufferReader(std::move(receive_pipe)));
|
| }
|
|
|
| void MojoAudioDecoderService::Decode(mojom::DecoderBufferPtr buffer,
|
| @@ -79,7 +82,7 @@ void MojoAudioDecoderService::Decode(mojom::DecoderBufferPtr buffer,
|
| DVLOG(3) << __FUNCTION__;
|
|
|
| scoped_refptr<DecoderBuffer> media_buffer =
|
| - ReadDecoderBuffer(std::move(buffer));
|
| + mojo_decoder_buffer_reader_->ReadDecoderBuffer(buffer);
|
| if (!media_buffer) {
|
| callback.Run(mojom::DecodeStatus::DECODE_ERROR);
|
| return;
|
| @@ -129,39 +132,4 @@ void MojoAudioDecoderService::OnAudioBufferReady(
|
| client_->OnBufferDecoded(mojom::AudioBuffer::From(audio_buffer));
|
| }
|
|
|
| -scoped_refptr<DecoderBuffer> MojoAudioDecoderService::ReadDecoderBuffer(
|
| - mojom::DecoderBufferPtr buffer) {
|
| - scoped_refptr<DecoderBuffer> media_buffer(
|
| - buffer.To<scoped_refptr<DecoderBuffer>>());
|
| -
|
| - if (media_buffer->end_of_stream())
|
| - return media_buffer;
|
| -
|
| - // Wait for the data to become available in the DataPipe.
|
| - MojoHandleSignalsState state;
|
| - MojoResult result =
|
| - MojoWait(consumer_handle_.get().value(), MOJO_HANDLE_SIGNAL_READABLE,
|
| - MOJO_DEADLINE_INDEFINITE, &state);
|
| -
|
| - if (result != MOJO_RESULT_OK) {
|
| - DVLOG(1) << __FUNCTION__ << ": Peer closed the data pipe";
|
| - return nullptr;
|
| - }
|
| -
|
| - // Read the inner data for the DecoderBuffer from our DataPipe.
|
| - uint32_t data_size = static_cast<uint32_t>(media_buffer->data_size());
|
| - DCHECK_EQ(data_size, buffer->data_size);
|
| - DCHECK_GT(data_size, 0u);
|
| -
|
| - 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) {
|
| - DVLOG(1) << __FUNCTION__ << ": reading from pipe failed";
|
| - return nullptr;
|
| - }
|
| -
|
| - return media_buffer;
|
| -}
|
| -
|
| } // namespace media
|
|
|