OSDN Git Service

add tstools.
[rec10/rec10-git.git] / tstools / DtsEdit / src / gpac / options.h
1 /*\r
2  *                      GPAC - Multimedia Framework C SDK\r
3  *\r
4  *                      Copyright (c) Jean Le Feuvre 2000-2005 \r
5  *                                      All rights reserved\r
6  *\r
7  *  This file is part of GPAC / Stream Management sub-project\r
8  *\r
9  *  GPAC is free software; you can redistribute it and/or modify\r
10  *  it under the terms of the GNU Lesser General Public License as published by\r
11  *  the Free Software Foundation; either version 2, or (at your option)\r
12  *  any later version.\r
13  *   \r
14  *  GPAC is distributed in the hope that it will be useful,\r
15  *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
16  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
17  *  GNU Lesser General Public License for more details.\r
18  *   \r
19  *  You should have received a copy of the GNU Lesser General Public\r
20  *  License along with this library; see the file COPYING.  If not, write to\r
21  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. \r
22  *\r
23  */\r
24 \r
25 \r
26 \r
27 #ifndef _GF_OPTIONS_H_\r
28 #define _GF_OPTIONS_H_\r
29 \r
30 #ifdef __cplusplus\r
31 extern "C" {\r
32 #endif\r
33 \r
34 \r
35 /*AspectRatio Type */\r
36 enum\r
37 {\r
38         GF_ASPECT_RATIO_KEEP = 0, /*keep AR*/\r
39         GF_ASPECT_RATIO_16_9, /*keep 16/9*/\r
40         GF_ASPECT_RATIO_4_3, /*keep 4/3*/\r
41         GF_ASPECT_RATIO_FILL_SCREEN /*none (all rendering area used)*/\r
42 };\r
43 \r
44 /*AntiAlias settings*/\r
45 enum\r
46 {\r
47         GF_ANTIALIAS_NONE = 0, /*no antialiasing*/\r
48         GF_ANTIALIAS_TEXT, /*only text has antialiasing*/\r
49         GF_ANTIALIAS_FULL /*full antialiasing*/\r
50 };\r
51 \r
52 /*GF_StreamingCache settings*/\r
53 enum\r
54 {\r
55         GF_MEDIA_CACHE_ENABLED = 0, /*cache on (with SET option, turns it on if possible)*/\r
56         GF_MEDIA_CACHE_DISABLED, /*cache off (with SET option saves current cache if any)*/\r
57         GF_MEDIA_CACHE_DISCARD, /*only used for SET option: turns cache off and discards current cache if any*/\r
58         GF_MEDIA_CACHE_RUNNING, /*only used in GET option: caching is enabled and currently running*/\r
59 };\r
60 \r
61 /*PlayState settings*/\r
62 enum\r
63 {\r
64         GF_STATE_PLAYING = 0,   /*terminal is playing*/\r
65         GF_STATE_PAUSED, /*terminal is paused*/\r
66         GF_STATE_STEP_PAUSE, /*get/set only: terminal will pause after next frame (simulation tick). On get, indicates that rendering step hasn't performed yet*/\r
67 };\r
68 \r
69 /*refresh mode*/\r
70 enum\r
71 {\r
72         GF_REFRESH_NORMAL = 0, /*posts normal redraw message */\r
73         GF_REFRESH_FULL, /*posts full redraw message, including reset of hardware resources*/\r
74 };\r
75 \r
76 /*interaction level settings*/\r
77 enum\r
78 {       \r
79         /*regular interactions enabled (touch sensors)*/\r
80         GF_INTERACT_NORMAL = 1,\r
81         /*InputSensor interactions enabled (mouse and keyboard)*/\r
82         GF_INTERACT_INPUT_SENSOR = 2,\r
83         /*all navigation interactions enabled (mouse and keyboard)*/\r
84         GF_INTERACT_NAVIGATION = 4,\r
85 \r
86         /*NOTE: GF_INTERACT_NORMAL and GF_INTERACT_NAVIGATION filter events. If set, any event processed by\r
87         these 2 modules won't be forwarded to the user*/\r
88 };\r
89 \r
90 /*BoundingVolume settings*/\r
91 enum\r
92 {\r
93         GF_BOUNDS_NONE = 0, /*doesn't draw bounding volume*/\r
94         GF_BOUNDS_BOX, /*draw object bounding box / rect*/\r
95         GF_BOUNDS_AABB  /*draw object AABB tree (3D only) */\r
96 };\r
97 \r
98 /*Wireframe settings*/\r
99 enum\r
100 {\r
101         GF_WIREFRAME_NONE = 0, /*draw solid volumes*/\r
102         GF_WIREFRAME_ONLY, /*draw only wireframe*/\r
103         GF_WIREFRAME_SOLID /*draw wireframe on solid object*/\r
104 };\r
105 \r
106 \r
107 /*navigation type*/\r
108 enum \r
109 {\r
110         /*navigation is disabled by content and cannot be forced by user*/\r
111         GF_NAVIGATE_TYPE_NONE,\r
112         /*2D navigation modes only can be used*/\r
113         GF_NAVIGATE_TYPE_2D,\r
114         /*3D navigation modes only can be used*/\r
115         GF_NAVIGATE_TYPE_3D\r
116 };\r
117 \r
118 /*navigation modes - non-VRML ones are simply blaxxun contact ones*/\r
119 enum\r
120 {\r
121         /*no navigation*/\r
122         GF_NAVIGATE_NONE = 0,\r
123         /*3D navigation modes*/\r
124         /*walk navigation*/\r
125         GF_NAVIGATE_WALK,\r
126         /*fly navigation*/\r
127         GF_NAVIGATE_FLY,\r
128         /*pan navigation*/\r
129         GF_NAVIGATE_PAN,\r
130         /*game navigation*/\r
131         GF_NAVIGATE_GAME,\r
132         /*slide navigation, for 2D and 3D*/\r
133         GF_NAVIGATE_SLIDE,\r
134         /*all modes below disable collision detection & gravity in 3D*/\r
135         /*examine navigation, for 2D and 3D */\r
136         GF_NAVIGATE_EXAMINE,\r
137         /*orbit navigation - 3D only*/\r
138         GF_NAVIGATE_ORBIT,\r
139         /*QT-VR like navigation - 3D only*/\r
140         GF_NAVIGATE_VR,\r
141 };\r
142 \r
143 /*collision flags*/\r
144 enum\r
145 {\r
146         /*no collision*/\r
147         GF_COLLISION_NONE,\r
148         /*regular collision*/\r
149         GF_COLLISION_NORMAL,\r
150         /*collision with camera displacement*/\r
151         GF_COLLISION_DISPLACEMENT,\r
152 };\r
153 \r
154 /*TextTexturing settings*/\r
155 enum\r
156 {\r
157         GF_TEXTURE_TEXT_DEFAULT = 0, /*text drawn as texture in 3D mode, regular in 2D mode*/\r
158         GF_TEXTURE_TEXT_NEVER, /*text never drawn as texture*/\r
159         GF_TEXTURE_TEXT_ALWAYS /*text always drawn*/\r
160 };\r
161 \r
162 /*Normal drawing settings*/\r
163 enum\r
164 {\r
165         GF_NORMALS_NONE = 0, /*normals never drawn*/\r
166         GF_NORMALS_FACE, /*normals drawn per face (at barycenter)*/\r
167         GF_NORMALS_VERTEX /*normals drawn per vertex*/\r
168 };\r
169 \r
170 \r
171 /*Back-face culling mode*/\r
172 enum\r
173 {\r
174         GF_BACK_CULL_OFF = 0, /*backface culling disabled*/\r
175         GF_BACK_CULL_ON, /*backface culliong enabled*/\r
176         GF_BACK_CULL_ALPHA, /*backface culling enabled alos for transparent meshes*/\r
177 };\r
178 \r
179 /*high-level options*/\r
180 enum\r
181 {\r
182         /*set/get antialias flag (value: one of the AntiAlias enum) - may be ignored in OpenGL mode depending on graphic cards*/\r
183         GF_OPT_ANTIALIAS  =0,\r
184         /*set/get fast mode (value: boolean) */\r
185         GF_OPT_HIGHSPEED,\r
186         /*set/get fullscreen flag (value: boolean) */\r
187         GF_OPT_FULLSCREEN,\r
188         /*reset top-level transform to original (value: boolean)*/\r
189         GF_OPT_ORIGINAL_VIEW,\r
190         /*overrides BIFS size info for simple AV - this is not recommended since\r
191         it will resize the window to the size of the biggest texture (thus some elements\r
192         may be lost)*/\r
193         GF_OPT_OVERRIDE_SIZE,\r
194         /*set / get audio volume (value is intensity between 0 and 100) */\r
195         GF_OPT_AUDIO_VOLUME,\r
196         /*set / get audio pan (value is pan between 0 (all left) and 100(all right) )*/\r
197         GF_OPT_AUDIO_PAN,\r
198         /*get javascript flag (no set, depends on compil) - value: boolean, true if JS enabled in build*/\r
199         GF_OPT_HAS_JAVASCRIPT,\r
200         /*get selectable stream flag (no set) - value: boolean, true if audio/video/subtitle stream selection is \r
201         possible with content (if an MPEG-4 scene description is not present). Use regular OD browsing to get streams*/\r
202         GF_OPT_CAN_SELECT_STREAMS,\r
203         /*set/get control interaction, OR'ed combination of interaction flags*/\r
204         GF_OPT_INTERACTION_LEVEL,\r
205         /*set display window visible / get show/hide state*/\r
206         GF_OPT_VISIBLE,\r
207         /*set freeze display on/off / get freeze state freeze_display prevents any screen updates \r
208         needed when output driver uses direct video memory access*/\r
209         GF_OPT_FREEZE_DISPLAY,\r
210         /*get isOver flag: if true the file can be restarted, otherwise it should not\r
211         this is used to check is there are several timelines, timesensors or interactions, in which case \r
212         the file could be running for an undetermined period.\r
213         Note that nothing prevents the user app to restart such a file*/\r
214         GF_OPT_IS_FINISHED,\r
215         /*set/get aspect ratio (value: one of AspectRatio enum) */\r
216         GF_OPT_ASPECT_RATIO,\r
217         /*send a redraw message (SetOption only): all graphics info (display list, vectorial path) is \r
218         recomputed, and textures are reloaded in HW*/\r
219         GF_OPT_REFRESH,\r
220         /*set/get stress mode (value: boolean) - in stress mode a GF_OPT_FORCE_REDRAW is emulated at each frame*/\r
221         GF_OPT_STRESS_MODE,\r
222         /*get/set bounding volume drawing (value: one of the above option)*/\r
223         GF_OPT_DRAW_BOUNDS,\r
224         /*get/set texture text option - when enabled and usable (that depends on content), text is first rendered \r
225         to a texture and only the texture is drawn, rather than drawing all the text each time (CPU intensive)*/\r
226         GF_OPT_TEXTURE_TEXT,\r
227         /*fake option, reload config file (set only), including drivers. Plugins configs are not reloaded*/\r
228         GF_OPT_RELOAD_CONFIG,\r
229         /*get: returns whether the content enable navigation and if it's 2D or 3D.\r
230         set: reset viewpoint (whatever value is given)*/\r
231         GF_OPT_NAVIGATION_TYPE,\r
232         /*get current navigation mode - set navigation mode if allowed by content - this is not a resident\r
233         option (eg not stored in cfg)*/\r
234         GF_OPT_NAVIGATION,\r
235         /*get/set GF_StreamingCache state - cf above states for set*/\r
236         GF_OPT_MEDIA_CACHE,\r
237         /*get/set Play state - cf above states for set*/\r
238         GF_OPT_PLAY_STATE,\r
239         /*get/set OpenGL force mode - returns error if OpenGL is not supported*/\r
240         GF_OPT_USE_OPENGL,\r
241 \r
242         /*set/get direct draw flag. In direct draw, the screen is entirely redrawn at each frame\r
243         value: boolean\r
244         */\r
245         GF_OPT_DIRECT_DRAW,\r
246         /*set/get scalable zoom (value: boolean)*/\r
247         GF_OPT_SCALABLE_ZOOM,\r
248         /*set/get YUV acceleration (value: boolean) */\r
249         GF_OPT_YUV_HARDWARE,\r
250         /*get (set not supported yet) hardware YUV format (value: YUV 4CC) */\r
251         GF_OPT_YUV_FORMAT,\r
252 \r
253         /*max video cache size in kbytes*/\r
254         GF_OPT_VIDEO_CACHE_SIZE,\r
255 \r
256         \r
257         /*              3D ONLY OPTIONS         */\r
258         /*set/get raster outline flag (value: boolean) - when set, no vectorial outlining is done, only \r
259         openGL raster outline*/\r
260         GF_OPT_RASTER_OUTLINES,\r
261         /*set/get pow2 emulation flag (value: boolean) - when set, video textures with non power of 2 dimensions\r
262         are emulated as pow2 by expanding the video buffer (image is not scaled). Otherwise the entire image\r
263         is rescaled. This flag does not affect image textures, which are always rescaled*/\r
264         GF_OPT_EMULATE_POW2,\r
265         /*get/set polygon antialiasing flag (value: boolean) (may be ugly with some cards)*/\r
266         GF_OPT_POLYGON_ANTIALIAS,\r
267         /*get/set wireframe flag (value: cf above) (may be ugly with some cards)*/\r
268         GF_OPT_WIREFRAME,\r
269         /*get/set wireframe flag (value: cf above) (may be ugly with some cards)*/\r
270         GF_OPT_NORMALS,\r
271         /*disable backface culling*/\r
272         GF_OPT_BACK_CULL,\r
273         /*get/set RECT Ext flag (value: boolean) - when set, GL rectangular texture extension is not used \r
274         (but NPO2 texturing is if available)*/\r
275         GF_OPT_NO_RECT_TEXTURE,\r
276         /*get/set bitmap draw mode. If set, bitmap doesn't use texturing but direct video copy*/\r
277         GF_OPT_BITMAP_COPY,\r
278         /*set/get headlight (value: boolean)*/\r
279         GF_OPT_HEADLIGHT,\r
280         /*set/get collision (value: cf above)*/\r
281         GF_OPT_COLLISION,\r
282         /*set/get gravity*/\r
283         GF_OPT_GRAVITY,\r
284 };\r
285 \r
286 #ifdef __cplusplus\r
287 }\r
288 #endif\r
289 \r
290 #endif  /*_GF_USER_H_*/\r
291 \r