diff options
Diffstat (limited to 'chromium/media/remoting/end2end_test_renderer.h')
-rw-r--r-- | chromium/media/remoting/end2end_test_renderer.h | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/chromium/media/remoting/end2end_test_renderer.h b/chromium/media/remoting/end2end_test_renderer.h index 1e8e635f878..905e27f5776 100644 --- a/chromium/media/remoting/end2end_test_renderer.h +++ b/chromium/media/remoting/end2end_test_renderer.h @@ -5,12 +5,14 @@ #ifndef MEDIA_REMOTING_END2END_RENDERER_H_ #define MEDIA_REMOTING_END2END_RENDERER_H_ +#include <memory> #include <vector> #include "base/memory/weak_ptr.h" #include "media/base/demuxer_stream.h" #include "media/base/renderer.h" #include "media/remoting/rpc_broker.h" +#include "media/remoting/stream_provider.h" namespace media { namespace remoting { @@ -18,6 +20,7 @@ namespace remoting { class RendererController; class CourierRenderer; class Receiver; +class ReceiverController; // Simulates the media remoting pipeline. class End2EndTestRenderer final : public Renderer { @@ -29,8 +32,8 @@ class End2EndTestRenderer final : public Renderer { void Initialize(MediaResource* media_resource, RendererClient* client, PipelineStatusCallback init_cb) override; - void SetCdm(CdmContext* cdm_context, CdmAttachedCB cdm_attached_cb) override; void SetLatencyHint(base::Optional<base::TimeDelta> latency_hint) override; + void SetPreservesPitch(bool preserves_pitch) override; void Flush(base::OnceClosure flush_cb) override; void StartPlayingFrom(base::TimeDelta time) override; void SetPlaybackRate(double playback_rate) override; @@ -46,28 +49,55 @@ class End2EndTestRenderer final : public Renderer { base::OnceClosure change_completed_cb) override; private: + class TestRemotee; + + void InitTestApi(); + // Called to send RPC messages to |receiver_|. void SendMessageToSink(const std::vector<uint8_t>& message); // Called to send frame data to |receiver_|. - void SendFrameToSink(const std::vector<uint8_t>& data, + void SendFrameToSink(uint32_t frame_count, + const std::vector<uint8_t>& data, DemuxerStream::Type type); // Called when receives RPC messages from |receiver_|. void OnMessageFromSink(std::unique_ptr<std::vector<uint8_t>> message); + void InitializeReceiverRenderer(PipelineStatus status); + void OnCourierRendererInitialized(PipelineStatus status); + void OnReceiverInitalized(PipelineStatus status); + void CompleteInitialize(); + + // Callback function when RPC message is received. + void OnReceivedRpc(std::unique_ptr<media::remoting::pb::RpcMessage> message); + void OnAcquireRenderer( + std::unique_ptr<media::remoting::pb::RpcMessage> message); + void OnAcquireRendererDone(int receiver_renderer_handle); + + PipelineStatusCallback init_cb_; + + bool courier_renderer_initialized_; + bool receiver_initialized_; + + // Sender components. std::unique_ptr<RendererController> controller_; std::unique_ptr<CourierRenderer> courier_renderer_; - // The RpcBroker to handle the RPC messages to/from |receiver_|. - RpcBroker receiver_rpc_broker_; - - // A receiver that renders media streams. + // Receiver components. + std::unique_ptr<TestRemotee> media_remotee_; + ReceiverController* receiver_controller_; std::unique_ptr<Receiver> receiver_; + std::unique_ptr<StreamProvider> stream_provider_; + RpcBroker* receiver_rpc_broker_; - base::WeakPtrFactory<End2EndTestRenderer> weak_factory_{this}; + // Handle of |receiver_| + int receiver_renderer_handle_ = RpcBroker::kInvalidHandle; + // Handle of |courier_renderer_|, it would be sent with AcquireRenderer + // message. + int sender_renderer_handle_ = RpcBroker::kInvalidHandle; - DISALLOW_COPY_AND_ASSIGN(End2EndTestRenderer); + base::WeakPtrFactory<End2EndTestRenderer> weak_factory_{this}; }; } // namespace remoting |