OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef MEDIA_MOJO_SERVICES_MOJO_RENDERER_SERVICE_H_ | 5 #ifndef MEDIA_MOJO_SERVICES_MOJO_RENDERER_SERVICE_H_ |
6 #define MEDIA_MOJO_SERVICES_MOJO_RENDERER_SERVICE_H_ | 6 #define MEDIA_MOJO_SERVICES_MOJO_RENDERER_SERVICE_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 22 matching lines...) Expand all Loading... |
33 class VideoRendererSink; | 33 class VideoRendererSink; |
34 | 34 |
35 // A mojom::Renderer implementation that use a media::Renderer to render | 35 // A mojom::Renderer implementation that use a media::Renderer to render |
36 // media streams. | 36 // media streams. |
37 class MEDIA_MOJO_EXPORT MojoRendererService | 37 class MEDIA_MOJO_EXPORT MojoRendererService |
38 : NON_EXPORTED_BASE(public mojom::Renderer), | 38 : NON_EXPORTED_BASE(public mojom::Renderer), |
39 public RendererClient { | 39 public RendererClient { |
40 public: | 40 public: |
41 using InitiateSurfaceRequestCB = base::Callback<base::UnguessableToken()>; | 41 using InitiateSurfaceRequestCB = base::Callback<base::UnguessableToken()>; |
42 | 42 |
43 // |mojo_cdm_service_context| can be used to find the CDM to support | 43 // Helper function to bind MojoRendererService with a StrongBinding, |
44 // encrypted media. If null, encrypted media is not supported. | |
45 // NOTE: The MojoRendererService will be uniquely owned by a StrongBinding, | |
46 // which is safely accessible via the returned StrongBindingPtr. | 44 // which is safely accessible via the returned StrongBindingPtr. |
47 static mojo::StrongBindingPtr<mojom::Renderer> Create( | 45 static mojo::StrongBindingPtr<mojom::Renderer> Create( |
48 base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context, | 46 base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context, |
49 scoped_refptr<AudioRendererSink> audio_sink, | 47 scoped_refptr<AudioRendererSink> audio_sink, |
50 std::unique_ptr<VideoRendererSink> video_sink, | 48 std::unique_ptr<VideoRendererSink> video_sink, |
51 std::unique_ptr<media::Renderer> renderer, | 49 std::unique_ptr<media::Renderer> renderer, |
52 InitiateSurfaceRequestCB initiate_surface_request_cb, | 50 InitiateSurfaceRequestCB initiate_surface_request_cb, |
53 mojo::InterfaceRequest<mojom::Renderer> request); | 51 mojo::InterfaceRequest<mojom::Renderer> request); |
54 | 52 |
| 53 // |mojo_cdm_service_context| can be used to find the CDM to support |
| 54 // encrypted media. If null, encrypted media is not supported. |
| 55 MojoRendererService( |
| 56 base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context, |
| 57 scoped_refptr<AudioRendererSink> audio_sink, |
| 58 std::unique_ptr<VideoRendererSink> video_sink, |
| 59 std::unique_ptr<media::Renderer> renderer, |
| 60 InitiateSurfaceRequestCB initiate_surface_request_cb); |
| 61 |
55 ~MojoRendererService() final; | 62 ~MojoRendererService() final; |
56 | 63 |
57 // mojom::Renderer implementation. | 64 // mojom::Renderer implementation. |
58 void Initialize(mojom::RendererClientAssociatedPtrInfo client, | 65 void Initialize(mojom::RendererClientAssociatedPtrInfo client, |
59 mojom::DemuxerStreamPtr audio, | 66 mojom::DemuxerStreamPtr audio, |
60 mojom::DemuxerStreamPtr video, | 67 mojom::DemuxerStreamPtr video, |
61 const base::Optional<GURL>& media_url, | 68 const base::Optional<GURL>& media_url, |
62 const base::Optional<GURL>& first_party_for_cookies, | 69 const base::Optional<GURL>& first_party_for_cookies, |
63 const InitializeCallback& callback) final; | 70 const InitializeCallback& callback) final; |
64 void Flush(const FlushCallback& callback) final; | 71 void Flush(const FlushCallback& callback) final; |
65 void StartPlayingFrom(base::TimeDelta time_delta) final; | 72 void StartPlayingFrom(base::TimeDelta time_delta) final; |
66 void SetPlaybackRate(double playback_rate) final; | 73 void SetPlaybackRate(double playback_rate) final; |
67 void SetVolume(float volume) final; | 74 void SetVolume(float volume) final; |
68 void SetCdm(int32_t cdm_id, const SetCdmCallback& callback) final; | 75 void SetCdm(int32_t cdm_id, const SetCdmCallback& callback) final; |
69 void InitiateScopedSurfaceRequest( | 76 void InitiateScopedSurfaceRequest( |
70 const InitiateScopedSurfaceRequestCallback& callback) final; | 77 const InitiateScopedSurfaceRequestCallback& callback) final; |
71 | 78 |
| 79 void set_bad_message_cb(base::Closure bad_message_cb) { |
| 80 bad_message_cb_ = bad_message_cb; |
| 81 } |
| 82 |
72 private: | 83 private: |
73 enum State { | 84 enum State { |
74 STATE_UNINITIALIZED, | 85 STATE_UNINITIALIZED, |
75 STATE_INITIALIZING, | 86 STATE_INITIALIZING, |
76 STATE_FLUSHING, | 87 STATE_FLUSHING, |
77 STATE_PLAYING, | 88 STATE_PLAYING, |
78 STATE_ERROR | 89 STATE_ERROR |
79 }; | 90 }; |
80 | 91 |
81 MojoRendererService( | |
82 base::WeakPtr<MojoCdmServiceContext> mojo_cdm_service_context, | |
83 scoped_refptr<AudioRendererSink> audio_sink, | |
84 std::unique_ptr<VideoRendererSink> video_sink, | |
85 std::unique_ptr<media::Renderer> renderer, | |
86 InitiateSurfaceRequestCB initiate_surface_request_cb); | |
87 | |
88 void set_bad_message_cb(base::Closure bad_message_cb) { | |
89 bad_message_cb_ = bad_message_cb; | |
90 } | |
91 | |
92 // RendererClient implementation. | 92 // RendererClient implementation. |
93 void OnError(PipelineStatus status) final; | 93 void OnError(PipelineStatus status) final; |
94 void OnEnded() final; | 94 void OnEnded() final; |
95 void OnStatisticsUpdate(const PipelineStatistics& stats) final; | 95 void OnStatisticsUpdate(const PipelineStatistics& stats) final; |
96 void OnBufferingStateChange(BufferingState state) final; | 96 void OnBufferingStateChange(BufferingState state) final; |
97 void OnWaitingForDecryptionKey() final; | 97 void OnWaitingForDecryptionKey() final; |
98 void OnVideoNaturalSizeChange(const gfx::Size& size) final; | 98 void OnVideoNaturalSizeChange(const gfx::Size& size) final; |
99 void OnVideoOpacityChange(bool opaque) final; | 99 void OnVideoOpacityChange(bool opaque) final; |
100 void OnDurationChange(base::TimeDelta duration) final; | 100 void OnDurationChange(base::TimeDelta duration) final; |
101 | 101 |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
159 | 159 |
160 base::WeakPtr<MojoRendererService> weak_this_; | 160 base::WeakPtr<MojoRendererService> weak_this_; |
161 base::WeakPtrFactory<MojoRendererService> weak_factory_; | 161 base::WeakPtrFactory<MojoRendererService> weak_factory_; |
162 | 162 |
163 DISALLOW_COPY_AND_ASSIGN(MojoRendererService); | 163 DISALLOW_COPY_AND_ASSIGN(MojoRendererService); |
164 }; | 164 }; |
165 | 165 |
166 } // namespace media | 166 } // namespace media |
167 | 167 |
168 #endif // MEDIA_MOJO_SERVICES_MOJO_RENDERER_SERVICE_H_ | 168 #endif // MEDIA_MOJO_SERVICES_MOJO_RENDERER_SERVICE_H_ |
OLD | NEW |