Loading...
Searching...
No Matches
VideoOutputStrategySelect.hpp
Go to the documentation of this file.
1#pragma once
2
18
19#include <functional>
20#include <memory>
21#include <vector>
22
23namespace score::gfx::interop
24{
25
33inline std::unique_ptr<VideoOutputStrategy> selectVideoOutputStrategy(
35 std::vector<std::function<std::unique_ptr<VideoOutputStrategy>()>> candidates,
36 const std::function<void(const char*)>& onEngaged = {},
37 const std::function<void(const char*)>& onFailed = {})
38{
39 for(auto& make : candidates)
40 {
41 if(!make)
42 continue;
43 auto s = make();
44 if(!s)
45 continue;
46 if(s->init(cfg))
47 {
48 if(onEngaged)
49 onEngaged(s->name());
50 return s;
51 }
52 if(onFailed)
53 onFailed(s->name());
54 s->release();
55 }
56 return nullptr;
57}
58
59} // namespace score::gfx::interop
Vendor-neutral interface for GPU-direct video OUTPUT strategies.
std::unique_ptr< VideoOutputStrategy > selectVideoOutputStrategy(const VideoOutputStrategyConfig &cfg, std::vector< std::function< std::unique_ptr< VideoOutputStrategy >()> > candidates, const std::function< void(const char *)> &onEngaged={}, const std::function< void(const char *)> &onFailed={})
Definition VideoOutputStrategySelect.hpp:33
Generic config passed to VideoOutputStrategy::init. Vendor- specific bits (card handle,...
Definition VideoOutputStrategy.hpp:59