PTLib  Version 2.14.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
vsdl.h
Go to the documentation of this file.
1 /*
2  * vsdl.h
3  *
4  * Classes to support video output via SDL
5  *
6  * Copyright (c) 1999-2000 Equivalence Pty. Ltd.
7  *
8  * The contents of this file are subject to the Mozilla Public License
9  * Version 1.0 (the "License"); you may not use this file except in
10  * compliance with the License. You may obtain a copy of the License at
11  * http://www.mozilla.org/MPL/
12  *
13  * Software distributed under the License is distributed on an "AS IS"
14  * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
15  * the License for the specific language governing rights and limitations
16  * under the License.
17  *
18  * The Original Code is Open H323 Library.
19  *
20  * The Initial Developer of the Original Code is Equivalence Pty. Ltd.
21  *
22  * Contributor(s): Derek J Smithies (derek@indranet.co.nz)
23  *
24  * $Revision: 30779 $
25  * $Author: rjongbloed $
26  * $Date: 2013-10-29 18:10:28 +1100 (Tue, 29 Oct 2013) $
27  */
28 
29 #ifndef PTLIB_VSDL_H
30 #define PTLIB_VSDL_H
31 
32 #if P_SDL
33 
34 #include <ptlib.h>
35 
36 #include <ptlib/videoio.h>
37 
38 
41 class PVideoOutputDevice_SDL : public PVideoOutputDevice
42 {
43  PCLASSINFO(PVideoOutputDevice_SDL, PVideoOutputDevice);
44 
45  public:
48  PVideoOutputDevice_SDL();
49 
52  ~PVideoOutputDevice_SDL();
53 
56  virtual PStringArray GetDeviceNames() const;
57  static PStringArray GetOutputDeviceNames();
58 
61  virtual PBoolean Open(
62  const PString & /*deviceName*/,
63  PBoolean /*startImmediate*/ = true
64  );
65 
68  virtual PBoolean Close();
69 
72  virtual PBoolean IsOpen();
73 
84  virtual PBoolean SetColourFormat(
85  const PString & colourFormat
86  );
87 
96  virtual PBoolean SetFrameSize(
97  unsigned width,
98  unsigned height
99  );
100 
106  virtual PINDEX GetMaxFrameBytes();
107 
110  virtual PBoolean SetFrameData(
111  unsigned x,
112  unsigned y,
113  unsigned width,
114  unsigned height,
115  const BYTE * data,
116  PBoolean endFrame = true
117  );
118 
119  protected:
120  struct SDL_Overlay * m_overlay;
121  PSyncPoint m_operationComplete;
122  unsigned m_x, m_y;
123 
124  private:
125  PString GetTitle() const;
126  void UpdateContent();
127  void CreateOverlay(struct SDL_Surface * surface);
128  void FreeOverlay();
129  void PostEvent(unsigned codei, bool wait);
130 
131  friend class PSDL_Window;
132 };
133 
134 
135 typedef PVideoOutputDevice_SDL PSDLVideoDevice; // Backward compatibility
136 
137 
138 #endif // P_SDL
139 
140 #endif // PTLIB_VSDL_H
141 
142 
143 // End Of File ///////////////////////////////////////////////////////////////