| 191 | } |
| 192 | |
| 193 | bool VideoFilterChain::init(int type) |
| 194 | { |
| 195 | auto iter = mVideoFiltersMap.begin(); |
| 196 | while (iter != mVideoFiltersMap.end()) { |
| 197 | std::unique_ptr<IVideoFilter> &filter = iter->second; |
| 198 | bool ret = filter->init(type); |
| 199 | if (!ret) { |
| 200 | //remove init failed filter |
| 201 | iter = mVideoFiltersMap.erase(iter); |
| 202 | } else { |
| 203 | ++iter; |
| 204 | } |
| 205 | } |
| 206 | |
| 207 | return !mVideoFiltersMap.empty(); |
| 208 | } |
| 209 | |
| 210 | bool VideoFilterChain::removeFilter(const std::string &target) |
| 211 | { |