Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(394)

Side by Side Diff: media/filters/pipeline_controller.h

Issue 2204673004: WIP - WebMediaPlayer switch media renderer. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Some revision. Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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_FILTERS_PIPELINE_CONTROLLER_H_ 5 #ifndef MEDIA_FILTERS_PIPELINE_CONTROLLER_H_
6 #define MEDIA_FILTERS_PIPELINE_CONTROLLER_H_ 6 #define MEDIA_FILTERS_PIPELINE_CONTROLLER_H_
7 7
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/macros.h" 9 #include "base/macros.h"
10 #include "base/memory/weak_ptr.h" 10 #include "base/memory/weak_ptr.h"
11 #include "base/threading/thread_checker.h" 11 #include "base/threading/thread_checker.h"
12 #include "base/time/time.h" 12 #include "base/time/time.h"
13 #include "media/base/audio_decoder_config.h"
13 #include "media/base/media_export.h" 14 #include "media/base/media_export.h"
14 #include "media/base/pipeline.h" 15 #include "media/base/pipeline.h"
15 #include "media/base/renderer.h" 16 #include "media/base/renderer.h"
17 #include "media/base/video_decoder_config.h"
18 #include "media/filters/remoting_controller.h"
16 19
17 namespace media { 20 namespace media {
18 21
19 class Demuxer; 22 class Demuxer;
20 23
21 // PipelineController wraps a Pipeline to expose the one-at-a-time operations 24 // PipelineController wraps a Pipeline to expose the one-at-a-time operations
22 // (Seek(), Suspend(), and Resume()) with a simpler API. Internally it tracks 25 // (Seek(), Suspend(), and Resume()) with a simpler API. Internally it tracks
23 // pending operations and dispatches them when possible. Duplicate requests 26 // pending operations and dispatches them when possible. Duplicate requests
24 // (such as seeking twice to the same time) may be elided. 27 // (such as seeking twice to the same time) may be elided.
25 // 28 //
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 // - Start() is processed immediately while in the CREATED state. 98 // - Start() is processed immediately while in the CREATED state.
96 // - Resume() is processed immediately while in the SUSPENDED state. 99 // - Resume() is processed immediately while in the SUSPENDED state.
97 bool IsStable(); 100 bool IsStable();
98 101
99 // Returns true if the current target state is suspended. 102 // Returns true if the current target state is suspended.
100 bool IsSuspended(); 103 bool IsSuspended();
101 104
102 // Returns true if |pipeline_| is suspended. 105 // Returns true if |pipeline_| is suspended.
103 bool IsPipelineSuspended(); 106 bool IsPipelineSuspended();
104 107
108 // Switch between the media renderer for local playing back and the remoting
109 // media renderer when pipeline is started.
110 void ToggleRenderer();
111
112 // Set whether any fullscreen button is pressed.
113 void SetFullscreenMode(bool is_fullscreen);
114
115 void SetIsEncryptedContent();
116
117 // Get the current video/audio config.
118 VideoDecoderConfig GetVideoDecoderConfig() const;
119 AudioDecoderConfig GetAudioDecoderConfig() const;
120
121 // This is used to indicate which renderer to be created.
122 bool ShouldUseRemotingRenderer() const;
123
105 private: 124 private:
106 // Attempts to make progress from the current state to the target state. 125 // Attempts to make progress from the current state to the target state.
107 void Dispatch(); 126 void Dispatch();
108 127
109 // PipelineStaus callback that also carries the target state. 128 // PipelineStaus callback that also carries the target state.
110 void OnPipelineStatus(State state, PipelineStatus pipeline_status); 129 void OnPipelineStatus(State state, PipelineStatus pipeline_status);
111 130
112 // The Pipeline we are managing state for. 131 // The Pipeline we are managing state for.
113 Pipeline* pipeline_ = nullptr; 132 Pipeline* pipeline_ = nullptr;
114 133
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
151 // The target time of the active seek; valid while SEEKING or RESUMING. 170 // The target time of the active seek; valid while SEEKING or RESUMING.
152 base::TimeDelta seek_time_; 171 base::TimeDelta seek_time_;
153 172
154 // Target state which we will work to achieve. |pending_seek_time_| is only 173 // Target state which we will work to achieve. |pending_seek_time_| is only
155 // valid when |pending_seek_| is true. 174 // valid when |pending_seek_| is true.
156 bool pending_seek_ = false; 175 bool pending_seek_ = false;
157 base::TimeDelta pending_seek_time_; 176 base::TimeDelta pending_seek_time_;
158 bool pending_suspend_ = false; 177 bool pending_suspend_ = false;
159 bool pending_resume_ = false; 178 bool pending_resume_ = false;
160 179
180 std::unique_ptr<RemotingController> remoting_controller_;
181
161 base::ThreadChecker thread_checker_; 182 base::ThreadChecker thread_checker_;
162 base::WeakPtrFactory<PipelineController> weak_factory_; 183 base::WeakPtrFactory<PipelineController> weak_factory_;
163 184
164 DISALLOW_COPY_AND_ASSIGN(PipelineController); 185 DISALLOW_COPY_AND_ASSIGN(PipelineController);
165 }; 186 };
166 187
167 } // namespace media 188 } // namespace media
168 189
169 #endif // MEDIA_FILTERS_PIPELINE_CONTROLLER_H_ 190 #endif // MEDIA_FILTERS_PIPELINE_CONTROLLER_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698