Lumiera  0.pre.03
»edit your freedom«
libgavl.hpp
Go to the documentation of this file.
1 /*
2  LILBGAVL.hpp - facade for integrating the GAVL media handling library
3 
4  Copyright (C) Lumiera.org
5  2008, Hermann Vosseler <Ichthyostega@web.de>
6 
7  This program is free software; you can redistribute it and/or
8  modify it under the terms of the GNU General Public License as
9  published by the Free Software Foundation; either version 2 of
10  the License, or (at your option) any later version.
11 
12  This program is distributed in the hope that it will be useful,
13  but WITHOUT ANY WARRANTY; without even the implied warranty of
14  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  GNU General Public License for more details.
16 
17  You should have received a copy of the GNU General Public License
18  along with this program; if not, write to the Free Software
19  Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
20 
21 */
22 
23 
33 #ifndef STEAM_EXTERNAL_LIBGAVL_H
34 #define STEAM_EXTERNAL_LIBGAVL_H
35 
36 
38 
39 
40 
41 namespace steam {
42 namespace external {
43 
44 
45  using lib::Symbol;
46 
47  typedef StreamType::ImplFacade ImplFacade;
48  typedef StreamType::ImplFacade::TypeTag TypeTag;
49 
50 
51  class LibGavl;
52 
62  : public ImplFacade
63  {
64  protected:
66  : ImplFacade("GAVL")
67  { }
68 
69  friend class LibGavl;
70 
71  public:
72  virtual bool operator== (ImplFacade const& other) const;
73  virtual bool operator== (StreamType const& other) const;
74 
75  virtual bool canConvert (ImplFacade const& other) const;
76  virtual bool canConvert (StreamType const& other) const;
77 
78  virtual StreamType::MediaKind getKind() const;
79  virtual DataBuffer* createFrame () const;
80  };
81 
82 
83  class LibGavl
84  : public control::MediaImplLib
85  {
86  protected:
87 
88  public:
89  virtual Symbol getLibID() const { return "GAVL"; }
90 
91  virtual ImplFacadeGAVL const& getImplFacade (TypeTag&);
92  };
93 
94 
95 
96 }} // namespace steam::external
97 #endif
Abstraction to represent (metadata) of an external library to handle media data Lumiera delegates mos...
Concrete media lib implementation facade allowing to work with GAVL data frames and types in an imple...
Definition: libgavl.hpp:61
Steam-Layer implementation namespace root.
Token or Atom with distinct identity.
Definition: symbol.hpp:126
placeholder type for the contents of a data buffer.
Definition: streamtype.hpp:121