OLD | NEW |
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 #include "services/media/framework/graph.h" | 5 #include "services/media/framework/graph.h" |
6 | 6 |
7 namespace mojo { | 7 namespace mojo { |
8 namespace media { | 8 namespace media { |
9 | 9 |
10 Graph::Graph() { | 10 Graph::Graph() { |
11 update_function_ = [this](Stage* stage) { | 11 update_function_ = [this](Stage* stage) { engine_.RequestUpdate(stage); }; |
12 engine_.RequestUpdate(stage); | |
13 }; | |
14 } | 12 } |
15 | 13 |
16 Graph::~Graph() { | 14 Graph::~Graph() { |
17 Reset(); | 15 Reset(); |
18 } | 16 } |
19 | 17 |
20 void Graph::RemovePart(PartRef part) { | 18 void Graph::RemovePart(PartRef part) { |
21 DCHECK(part.valid()); | 19 DCHECK(part.valid()); |
22 | 20 |
23 Stage* stage = part.stage_; | 21 Stage* stage = part.stage_; |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 if (input.connected()) { | 53 if (input.connected()) { |
56 DisconnectInput(input); | 54 DisconnectInput(input); |
57 } | 55 } |
58 | 56 |
59 output.actual().Connect(input); | 57 output.actual().Connect(input); |
60 input.actual().Connect(output); | 58 input.actual().Connect(output); |
61 | 59 |
62 return input.part(); | 60 return input.part(); |
63 } | 61 } |
64 | 62 |
65 PartRef Graph::ConnectParts( | 63 PartRef Graph::ConnectParts(PartRef upstream_part, PartRef downstream_part) { |
66 PartRef upstream_part, | |
67 PartRef downstream_part) { | |
68 DCHECK(upstream_part.valid()); | 64 DCHECK(upstream_part.valid()); |
69 DCHECK(downstream_part.valid()); | 65 DCHECK(downstream_part.valid()); |
70 Connect(upstream_part.output(), downstream_part.input()); | 66 Connect(upstream_part.output(), downstream_part.input()); |
71 return downstream_part; | 67 return downstream_part; |
72 } | 68 } |
73 | 69 |
74 PartRef Graph::ConnectOutputToPart( | 70 PartRef Graph::ConnectOutputToPart(const OutputRef& output, |
75 const OutputRef& output, | 71 PartRef downstream_part) { |
76 PartRef downstream_part) { | |
77 DCHECK(output.valid()); | 72 DCHECK(output.valid()); |
78 DCHECK(downstream_part.valid()); | 73 DCHECK(downstream_part.valid()); |
79 Connect(output, downstream_part.input()); | 74 Connect(output, downstream_part.input()); |
80 return downstream_part; | 75 return downstream_part; |
81 } | 76 } |
82 | 77 |
83 PartRef Graph::ConnectPartToInput( | 78 PartRef Graph::ConnectPartToInput(PartRef upstream_part, |
84 PartRef upstream_part, | 79 const InputRef& input) { |
85 const InputRef& input) { | |
86 DCHECK(upstream_part.valid()); | 80 DCHECK(upstream_part.valid()); |
87 DCHECK(input.valid()); | 81 DCHECK(input.valid()); |
88 Connect(upstream_part.output(), input); | 82 Connect(upstream_part.output(), input); |
89 return input.part(); | 83 return input.part(); |
90 } | 84 } |
91 | 85 |
92 void Graph::DisconnectOutput(const OutputRef& output) { | 86 void Graph::DisconnectOutput(const OutputRef& output) { |
93 DCHECK(output.valid()); | 87 DCHECK(output.valid()); |
94 | 88 |
95 if (!output.connected()) { | 89 if (!output.connected()) { |
(...skipping 25 matching lines...) Expand all Loading... |
121 return; | 115 return; |
122 } | 116 } |
123 | 117 |
124 mate.Disconnect(); | 118 mate.Disconnect(); |
125 input.actual().Disconnect(); | 119 input.actual().Disconnect(); |
126 } | 120 } |
127 | 121 |
128 void Graph::RemovePartsConnectedToPart(PartRef part) { | 122 void Graph::RemovePartsConnectedToPart(PartRef part) { |
129 DCHECK(part.valid()); | 123 DCHECK(part.valid()); |
130 | 124 |
131 std::deque<PartRef> to_remove { part }; | 125 std::deque<PartRef> to_remove{part}; |
132 | 126 |
133 while (!to_remove.empty()) { | 127 while (!to_remove.empty()) { |
134 PartRef part = to_remove.front(); | 128 PartRef part = to_remove.front(); |
135 to_remove.pop_front(); | 129 to_remove.pop_front(); |
136 | 130 |
137 for (size_t i = 0; i < part.input_count(); ++i) { | 131 for (size_t i = 0; i < part.input_count(); ++i) { |
138 to_remove.push_back(part.input(i).part()); | 132 to_remove.push_back(part.input(i).part()); |
139 } | 133 } |
140 | 134 |
141 for (size_t i = 0; i < part.output_count(); ++i) { | 135 for (size_t i = 0; i < part.output_count(); ++i) { |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 sinks_.push_back(stage); | 211 sinks_.push_back(stage); |
218 } | 212 } |
219 | 213 |
220 stage->SetUpdateCallback(update_function_); | 214 stage->SetUpdateCallback(update_function_); |
221 | 215 |
222 return PartRef(stage); | 216 return PartRef(stage); |
223 } | 217 } |
224 | 218 |
225 } // namespace media | 219 } // namespace media |
226 } // namespace mojo | 220 } // namespace mojo |
OLD | NEW |