Index: media/remoting/remote_demuxer_stream_adapter.h |
diff --git a/media/remoting/remote_demuxer_stream_adapter.h b/media/remoting/remote_demuxer_stream_adapter.h |
deleted file mode 100644 |
index 8b46a09b1db98fc70edb1a9c3233779247c9965d..0000000000000000000000000000000000000000 |
--- a/media/remoting/remote_demuxer_stream_adapter.h |
+++ /dev/null |
@@ -1,194 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#ifndef MEDIA_REMOTING_REMOTE_DEMUXER_STREAM_ADAPTER_H_ |
-#define MEDIA_REMOTING_REMOTE_DEMUXER_STREAM_ADAPTER_H_ |
- |
-#include <stdint.h> |
- |
-#include <memory> |
-#include <vector> |
- |
-#include "base/callback_forward.h" |
-#include "base/macros.h" |
-#include "base/memory/weak_ptr.h" |
-#include "base/optional.h" |
-#include "media/base/audio_decoder_config.h" |
-#include "media/base/demuxer_stream.h" |
-#include "media/base/video_decoder_config.h" |
-#include "media/mojo/interfaces/remoting.mojom.h" |
-#include "media/remoting/rpc/rpc_broker.h" |
-#include "media/remoting/triggers.h" |
-#include "mojo/public/cpp/system/data_pipe.h" |
- |
-namespace base { |
-class SingleThreadTaskRunner; |
-} |
- |
-namespace media { |
- |
-class DemuxerStream; |
- |
-namespace remoting { |
- |
-// Class to fetch audio/video buffer from demuxer and send it to browser process |
-// via mojo::Remoting interface. Note the class is created and run on media |
-// thread using |media_task_runner|, Mojo data pipe should run on media thread, |
-// while RPC message should be sent on main thread using |main_task_runner|. |
-class RemoteDemuxerStreamAdapter { |
- public: |
- using ErrorCallback = base::Callback<void(StopTrigger)>; |
- |
- // |main_task_runner|: Task runner to post RPC message on main thread |
- // |media_task_runner|: Task runner to run whole class on media thread. |
- // |name|: Demuxer stream name. For troubleshooting purposes. |
- // |demuxer_stream|: Demuxer component. |
- // |rpc_broker|: Broker class to handle incoming and outgoing RPC message. It |
- // is used only on the main thread. |
- // |rpc_handle|: Unique value that references this RemoteDemuxerStreamAdapter. |
- // |stream_sender_info|: Transfer of pipe binding on the media thread. It is |
- // to access mojo interface for sending data stream. |
- // |producer_handle|: handle to send data using mojo data pipe. |
- // |error_callback|: Run if a fatal runtime error occurs and remoting should |
- // be shut down. |
- RemoteDemuxerStreamAdapter( |
- scoped_refptr<base::SingleThreadTaskRunner> main_task_runner, |
- scoped_refptr<base::SingleThreadTaskRunner> media_task_runner, |
- const std::string& name, |
- ::media::DemuxerStream* demuxer_stream, |
- const base::WeakPtr<RpcBroker>& rpc_broker, |
- int rpc_handle, |
- mojom::RemotingDataStreamSenderPtrInfo stream_sender_info, |
- mojo::ScopedDataPipeProducerHandle producer_handle, |
- const ErrorCallback& error_callback); |
- ~RemoteDemuxerStreamAdapter(); |
- |
- // Rpc handle for this class. This is used for sending/receiving RPC message |
- // with specific hanle using Rpcbroker. |
- int rpc_handle() const { return rpc_handle_; } |
- |
- // Returns the number of bytes that have been written to the data pipe since |
- // the last call to this method. This is polled periodically by |
- // RemoteRendererImpl for metrics purposes. |
- int64_t GetBytesWrittenAndReset(); |
- |
- // Signals if system is in flushing state. The caller uses |flushing| to |
- // signal when flush starts and when is done. During flush operation, all |
- // fetching data actions will be discarded. The return value indicates frame |
- // count in order to signal receiver what frames are in flight before flush, |
- // or base::nullopt if the flushing state was unchanged. |
- base::Optional<uint32_t> SignalFlush(bool flushing); |
- |
- private: |
- friend class MockRemoteDemuxerStreamAdapter; |
- |
- // Receives RPC message from RpcBroker. |
- void OnReceivedRpc(std::unique_ptr<remoting::pb::RpcMessage> message); |
- |
- // RPC message tasks. |
- void Initialize(int remote_callback_handle); |
- void ReadUntil(std::unique_ptr<remoting::pb::RpcMessage> message); |
- void EnableBitstreamConverter(); |
- void RequestBuffer(); |
- void SendReadAck(); |
- |
- // Callback function when retrieving data from demuxer. |
- void OnNewBuffer(::media::DemuxerStream::Status status, |
- const scoped_refptr<::media::DecoderBuffer>& input); |
- void TryWriteData(MojoResult result); |
- void ResetPendingFrame(); |
- bool IsProcessingReadRequest() const { |
- // |read_until_callback_handle_| is set when RPC_DS_READUNTIL message is |
- // received, and will be reset to invalid value after |
- // RPC_DS_READUNTIL_CALLBACK is sent back to receiver. Therefore it can be |
- // used to determine if the class is in the reading state or not. |
- return read_until_callback_handle_ != kInvalidHandle; |
- } |
- |
- // Callback function when a fatal runtime error occurs. |
- void OnFatalError(StopTrigger stop_trigger); |
- |
- const scoped_refptr<base::SingleThreadTaskRunner> main_task_runner_; |
- const scoped_refptr<base::SingleThreadTaskRunner> media_task_runner_; |
- |
- // Name of demuxer stream. Debug only. |
- const std::string name_; |
- |
- // Weak pointer of RpcBroker. It should use |main_task_runner_| to access the |
- // interfaces. |
- const base::WeakPtr<RpcBroker> rpc_broker_; |
- |
- // RPC handle for this demuxer stream service. |
- const int rpc_handle_; |
- |
- // Demuxer stream and stream type. |
- ::media::DemuxerStream* const demuxer_stream_; |
- const ::media::DemuxerStream::Type type_; |
- |
- // Run by OnFatalError to propagate StopTriggers back to the |
- // RemoteRendererImpl that owns this instance. This is not-null at |
- // construction time, and set to null the first time OnFatalError() is called. |
- ErrorCallback error_callback_; |
- |
- // Remote RPC handle for demuxer initialization. The value is provided by |
- // receiver from RPC_DS_INITIALIZE message and will be used as handle in |
- // RPC_DS_INITIALIZE_CALLBACK message. |
- int remote_callback_handle_; |
- |
- // Remote RPC handle for reading data from demuxer. The value is provided by |
- // receiver from RPC_DS_READUNTIL message and will be used as handle in |
- // RPC_DS_READUNTIL_CALLBACK message. The handle can be used to indicate |
- // whether it is in reading state because not only each RPC_DS_READUNTIL |
- // message provides different callback handle, but also it is only set to |
- // valid handle while in reading state. |
- int read_until_callback_handle_; |
- |
- // Current frame count issued by RPC_DS_READUNTIL RPC message. It should send |
- // all frame data with count id smaller than |read_until_count_| before |
- // sending RPC_DS_READUNTIL_CALLBACK back to receiver. |
- uint32_t read_until_count_; |
- |
- // Count id of last frame sent. |
- uint32_t last_count_; |
- |
- // Flag to indicate if it's on flushing operation. All actions should be |
- // aborted and data should be discarded when the value is true. |
- bool pending_flush_; |
- |
- // Frame buffer and its information that is currently in process of writing to |
- // Mojo data pipe. |
- std::vector<uint8_t> pending_frame_; |
- uint32_t current_pending_frame_offset_; |
- bool pending_frame_is_eos_; |
- |
- // Monitor if data pipe is available to write data. |
- mojo::Watcher write_watcher_; |
- |
- // Keeps latest demuxer stream status and audio/video decoder config. |
- ::media::DemuxerStream::Status media_status_; |
- ::media::AudioDecoderConfig audio_config_; |
- ::media::VideoDecoderConfig video_config_; |
- |
- ::media::mojom::RemotingDataStreamSenderPtr stream_sender_; |
- mojo::ScopedDataPipeProducerHandle producer_handle_; |
- |
- // Tracks the number of bytes written to the pipe. |
- int64_t bytes_written_to_pipe_; |
- |
- // WeakPtrFactory only for reading buffer from demuxer stream. This is used |
- // for canceling all read callbacks provided to the |demuxer_stream_| before a |
- // flush. |
- base::WeakPtrFactory<RemoteDemuxerStreamAdapter> request_buffer_weak_factory_; |
- // WeakPtrFactory for normal usage. |
- base::WeakPtrFactory<RemoteDemuxerStreamAdapter> weak_factory_; |
- |
- DISALLOW_COPY_AND_ASSIGN(RemoteDemuxerStreamAdapter); |
-}; |
- |
-mojo::DataPipe* CreateDataPipe(); |
- |
-} // namespace remoting |
-} // namespace media |
- |
-#endif // MEDIA_REMOTING_REMOTE_DEMUXER_STREAM_ADAPTER_H_ |