1 /*
2  *  Copyright (C) 2005-2018 Team Kodi
3  *  This file is part of Kodi - https://kodi.tv
4  *
5  *  SPDX-License-Identifier: GPL-2.0-or-later
6  *  See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "BaseRenderer.h"
12 
13 #include <map>
14 #include <string>
15 #include <vector>
16 
17 namespace VIDEOPLAYER
18 {
19 
20 typedef CBaseRenderer* (*CreateRenderer)(CVideoBuffer *buffer);
21 
22 class CRendererFactory
23 {
24 public:
25   static CBaseRenderer* CreateRenderer(const std::string& id, CVideoBuffer* buffer);
26 
27   static void RegisterRenderer(const std::string& id, VIDEOPLAYER::CreateRenderer createFunc);
28   static std::vector<std::string> GetRenderers();
29   static void ClearRenderer();
30 
31 protected:
32 
33   static std::map<std::string, VIDEOPLAYER::CreateRenderer> m_renderers;
34 };
35 
36 }
37