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

Side by Side Diff: services/media/framework/graph.h

Issue 1822333002: Motown: wholesale clang-format (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: dalesat Created 4 years, 9 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
« no previous file with comments | « services/media/framework/formatting.cc ('k') | services/media/framework/graph.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 SERVICES_MEDIA_FRAMEWORK_GRAPH_H_ 5 #ifndef SERVICES_MEDIA_FRAMEWORK_GRAPH_H_
6 #define SERVICES_MEDIA_FRAMEWORK_GRAPH_H_ 6 #define SERVICES_MEDIA_FRAMEWORK_GRAPH_H_
7 7
8 #include <list> 8 #include <list>
9 9
10 #include "services/media/framework/engine.h" 10 #include "services/media/framework/engine.h"
11 #include "services/media/framework/refs.h" 11 #include "services/media/framework/refs.h"
12 #include "services/media/framework/stages/active_sink_stage.h" 12 #include "services/media/framework/stages/active_sink_stage.h"
13 #include "services/media/framework/stages/active_source_stage.h" 13 #include "services/media/framework/stages/active_source_stage.h"
14 #include "services/media/framework/stages/multistream_source_stage.h" 14 #include "services/media/framework/stages/multistream_source_stage.h"
15 #include "services/media/framework/stages/stage.h" 15 #include "services/media/framework/stages/stage.h"
16 #include "services/media/framework/stages/transform_stage.h" 16 #include "services/media/framework/stages/transform_stage.h"
17 17
18 namespace mojo { 18 namespace mojo {
19 namespace media { 19 namespace media {
20 20
21 namespace { 21 namespace {
22 22
23 // StageCreator::Create creates a stage for a part. DEFINE_STAGE_CREATOR defines 23 // StageCreator::Create creates a stage for a part. DEFINE_STAGE_CREATOR defines
24 // a specialization for a particular model/stage type pair. Every new 24 // a specialization for a particular model/stage type pair. Every new
25 // model/stage type pair that's defined will need an entry here. 25 // model/stage type pair that's defined will need an entry here.
26 template<typename T, typename Enable = void> class StageCreator; 26 template <typename T, typename Enable = void>
27 class StageCreator;
27 28
28 #define DEFINE_STAGE_CREATOR(TModel, TStage) \ 29 #define DEFINE_STAGE_CREATOR(TModel, TStage) \
29 template<typename T> \ 30 template <typename T> \
30 class StageCreator<T, typename std::enable_if< \ 31 class StageCreator< \
31 std::is_base_of<TModel, T>::value>::type> { \ 32 T, typename std::enable_if<std::is_base_of<TModel, T>::value>::type> { \
32 public: \ 33 public: \
33 static inline Stage* Create(std::shared_ptr<T> t_ptr) { \ 34 static inline Stage* Create(std::shared_ptr<T> t_ptr) { \
34 return new TStage(std::shared_ptr<TModel>(t_ptr)); \ 35 return new TStage(std::shared_ptr<TModel>(t_ptr)); \
35 } \ 36 } \
36 }; 37 };
37 38
38 DEFINE_STAGE_CREATOR(MultistreamSource, MultistreamSourceStage); 39 DEFINE_STAGE_CREATOR(MultistreamSource, MultistreamSourceStage);
39 DEFINE_STAGE_CREATOR(Transform, TransformStage); 40 DEFINE_STAGE_CREATOR(Transform, TransformStage);
40 DEFINE_STAGE_CREATOR(ActiveSource, ActiveSourceStage); 41 DEFINE_STAGE_CREATOR(ActiveSource, ActiveSourceStage);
41 DEFINE_STAGE_CREATOR(ActiveSink, ActiveSinkStage); 42 DEFINE_STAGE_CREATOR(ActiveSink, ActiveSinkStage);
42 43
43 #undef DEFINE_STAGE_CREATOR 44 #undef DEFINE_STAGE_CREATOR
44 45
45 } // namespace 46 } // namespace
46 47
47 // 48 //
48 // USAGE 49 // USAGE
49 // 50 //
50 // Graph is a container for sources, sinks and transforms ('parts') connected 51 // Graph is a container for sources, sinks and transforms ('parts') connected
51 // in a graph. PartRef, InputRef and OutputRef are all 52 // in a graph. PartRef, InputRef and OutputRef are all
52 // references to parts and their inputs and outputs. Graph provides a variety 53 // references to parts and their inputs and outputs. Graph provides a variety
53 // of methods for adding and removing parts and for connecting inputs and 54 // of methods for adding and removing parts and for connecting inputs and
54 // outputs to form a graph. 55 // outputs to form a graph.
55 // 56 //
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
112 // 113 //
113 114
114 // Host for a source, sink or transform. 115 // Host for a source, sink or transform.
115 class Graph { 116 class Graph {
116 public: 117 public:
117 Graph(); 118 Graph();
118 119
119 ~Graph(); 120 ~Graph();
120 121
121 // Adds a part to the graph. 122 // Adds a part to the graph.
122 template<typename T> 123 template <typename T>
123 PartRef Add(std::shared_ptr<T> t_ptr) { 124 PartRef Add(std::shared_ptr<T> t_ptr) {
124 DCHECK(t_ptr); 125 DCHECK(t_ptr);
125 return Add(StageCreator<T>::Create(t_ptr)); 126 return Add(StageCreator<T>::Create(t_ptr));
126 } 127 }
127 128
128 // Removes a part from the graph after disconnecting it from other parts. 129 // Removes a part from the graph after disconnecting it from other parts.
129 void RemovePart(PartRef part); 130 void RemovePart(PartRef part);
130 131
131 // Connects an output connector to an input connector. Returns the dowstream 132 // Connects an output connector to an input connector. Returns the dowstream
132 // part. 133 // part.
(...skipping 24 matching lines...) Expand all
157 158
158 // Disconnects and removes everything connected to output. 159 // Disconnects and removes everything connected to output.
159 void RemovePartsConnectedToOutput(const OutputRef& output); 160 void RemovePartsConnectedToOutput(const OutputRef& output);
160 161
161 // Disconnects and removes everything connected to input. 162 // Disconnects and removes everything connected to input.
162 void RemovePartsConnectedToInput(const InputRef& input); 163 void RemovePartsConnectedToInput(const InputRef& input);
163 164
164 // Adds all the parts in t (which must all have one input and one output) and 165 // Adds all the parts in t (which must all have one input and one output) and
165 // connects them in sequence to the output connector. Returns the output 166 // connects them in sequence to the output connector. Returns the output
166 // connector of the last part or the output parameter if it is empty. 167 // connector of the last part or the output parameter if it is empty.
167 template<typename T> 168 template <typename T>
168 OutputRef AddAndConnectAll(OutputRef output, const T& t) { 169 OutputRef AddAndConnectAll(OutputRef output, const T& t) {
169 for (const auto& element : t) { 170 for (const auto& element : t) {
170 PartRef part = Add(StageCreator<T>::Create(element)); 171 PartRef part = Add(StageCreator<T>::Create(element));
171 Connect(output, part.input()); 172 Connect(output, part.input());
172 output = part.output(); 173 output = part.output();
173 } 174 }
174 return output; 175 return output;
175 } 176 }
176 177
177 // Removes all parts from the graph. 178 // Removes all parts from the graph.
(...skipping 21 matching lines...) Expand all
199 std::list<Stage*> sinks_; 200 std::list<Stage*> sinks_;
200 201
201 Engine engine_; 202 Engine engine_;
202 Stage::UpdateCallback update_function_; 203 Stage::UpdateCallback update_function_;
203 }; 204 };
204 205
205 } // namespace media 206 } // namespace media
206 } // namespace mojo 207 } // namespace mojo
207 208
208 #endif // SERVICES_MEDIA_FRAMEWORK_GRAPH_H_ 209 #endif // SERVICES_MEDIA_FRAMEWORK_GRAPH_H_
OLDNEW
« no previous file with comments | « services/media/framework/formatting.cc ('k') | services/media/framework/graph.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698