blob: 3159c95b2f5062f2918facba4fc09c65f0d98630 [file] [log] [blame]
Tristan Matthews0a329cc2013-07-17 13:20:14 -04001/* $Id$ */
2/*
3 * Copyright (C) 2008-2011 Teluu Inc. (http://www.teluu.com)
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19#ifndef __PJMEDIA_VIDEODEV_CONFIG_H__
20#define __PJMEDIA_VIDEODEV_CONFIG_H__
21
22/**
23 * @file config.h
24 * @brief Video config.
25 */
26#include <pjmedia/types.h>
27#include <pj/pool.h>
28
29
30PJ_BEGIN_DECL
31
32/**
33 * @defgroup video_device_api Video Device API
34 * @brief PJMEDIA video device abstraction API.
35 */
36
37/**
38 * @defgroup s1_video_device_config Compile time configurations
39 * @ingroup video_device_api
40 * @brief Compile time configurations
41 * @{
42 */
43
44/**
45 * This setting controls the maximum number of formats that can be
46 * supported by a video device.
47 *
48 * Default: 16
49 */
50#ifndef PJMEDIA_VID_DEV_INFO_FMT_CNT
51# define PJMEDIA_VID_DEV_INFO_FMT_CNT 16
52#endif
53
54
55/**
56 * This setting controls whether SDL support should be included.
57 *
58 * Default: 0 (or detected by configure)
59 */
60#ifndef PJMEDIA_VIDEO_DEV_HAS_SDL
61# define PJMEDIA_VIDEO_DEV_HAS_SDL 0
62# define PJMEDIA_VIDEO_DEV_SDL_HAS_OPENGL 0
63#endif
64
65
66/**
67 * This setting controls whether QT support should be included.
68 *
69 * Default: 0 (or detected by configure)
70 */
71#ifndef PJMEDIA_VIDEO_DEV_HAS_QT
72# define PJMEDIA_VIDEO_DEV_HAS_QT 0
73#endif
74
75
76/**
77 * This setting controls whether IOS support should be included.
78 *
79 * Default: 0 (or detected by configure)
80 */
81#ifndef PJMEDIA_VIDEO_DEV_HAS_IOS
82# define PJMEDIA_VIDEO_DEV_HAS_IOS 0
83#endif
84
85
86/**
87 * This setting controls whether Direct Show support should be included.
88 *
89 * Default: 0 (unfinished)
90 */
91#ifndef PJMEDIA_VIDEO_DEV_HAS_DSHOW
92# define PJMEDIA_VIDEO_DEV_HAS_DSHOW 0 //PJ_WIN32
93#endif
94
95
96/**
97 * This setting controls whether colorbar source support should be included.
98 *
99 * Default: 1
100 */
101#ifndef PJMEDIA_VIDEO_DEV_HAS_CBAR_SRC
102# define PJMEDIA_VIDEO_DEV_HAS_CBAR_SRC 1
103#endif
104
105
106/**
107 * This setting controls whether ffmpeg support should be included.
108 *
109 * Default: 0 (unfinished)
110 */
111#ifndef PJMEDIA_VIDEO_DEV_HAS_FFMPEG
112# define PJMEDIA_VIDEO_DEV_HAS_FFMPEG 0
113#endif
114
115
116/**
117 * Video4Linux2
118 *
119 * Default: 0 (or detected by configure)
120 */
121#ifndef PJMEDIA_VIDEO_DEV_HAS_V4L2
122# define PJMEDIA_VIDEO_DEV_HAS_V4L2 0
123#endif
124
125
126/**
127 * Enable support for AVI player virtual capture device.
128 *
129 * Default: 1
130 */
131#ifndef PJMEDIA_VIDEO_DEV_HAS_AVI
132# define PJMEDIA_VIDEO_DEV_HAS_AVI 1
133#endif
134
135/**
136 * Specify the SDL library name to be linked with Visual Studio project.
137 * By default, the name is autodetected based on SDL version ("sdl.lib" or
138 * "sdl2.lib"), but application may explicitly specify the library name if this
139 * autodetection fails. Common names are: "sdl2.lib" or "sdl.lib".
140 *
141 * Default: undeclared.
142 */
143#ifndef PJMEDIA_SDL_LIB
144# undef PJMEDIA_SDL_LIB
145#endif
146
147/**
148 * @}
149 */
150
151PJ_END_DECL
152
153
154#endif /* __PJMEDIA_VIDEODEV_CONFIG_H__ */
155
156/*
157 --------------------- DOCUMENTATION FOLLOWS ---------------------------
158 */
159
160/**
161 * @addtogroup video_device_api Video Device API
162 * @{
163
164PJMEDIA Video Device API is a cross-platform video API appropriate for use with
165VoIP applications and many other types of video streaming applications.
166
167The API abstracts many different video API's on various platforms, such as:
168 - native Direct Show video for Win32 and Windows Mobile devices
169 - null-video implementation
170 - and more to be implemented in the future
171
172The Video Device API/library is an evolution from PJMEDIA @ref PJMED_SND and
173contains many enhancements:
174
175 - Forward compatibility:
176\n
177 The new API has been designed to be extensible, it will support new API's as
178 well as new features that may be introduced in the future without breaking
179 compatibility with applications that use this API as well as compatibility
180 with existing device implementations.
181
182 - Device capabilities:
183\n
184 At the heart of the API is device capabilities management, where all possible
185 video capabilities of video devices should be able to be handled in a generic
186 manner. With this framework, new capabilities that may be discovered in the
187 future can be handled in manner without breaking existing applications.
188
189 - Built-in features:
190\n
191 The device capabilities framework enables applications to use and control
192 video features built-in in the device, such as:
193 - built-in formats,
194 - etc.
195
196 - Codec support:
197\n
198 Some video devices support built-in hardware video codecs, and application
199 can use the video device in encoded mode to make use of these hardware
200 codecs.
201
202 - Multiple backends:
203\n
204 The new API supports multiple video backends (called factories or drivers in
205 the code) to be active simultaneously, and video backends may be added or
206 removed during run-time.
207
208*/
209
210
211/**
212 * @}
213 */
214