1THIS FILE IS OUT DATED
2
3double check the bmp loader for possibly errors when
4	the header has been tampered
5
6
7
8FIX the VERSION define
9
10Fix that lv-inspect builds, after the lib has been installed.
11
12
13replace stdint.h with sys/types.h and have defines so we don't have to change all
14the code (besides u_int16_t sounds less nice than uint16_t :))
15
16
17This file is not very ordered and kinda a scrapbook, but it contains all
18the future planning.
19
20Soon:
21	bin:
22		***** REWRITE THE BIN MESS, I WROTE UTTERLY FUCKING SHIT *****
23		* check if we don't negotiate too often.
24		* crash when very quickly switching in xmms plugin
25x		* if morphing from 8 to 32 and then while morphing to 8 again, the main actor stays in 32 bits
26		* check if memory is released as soon as possible all the time.
27x		* property to force morphs in high bpp
28		* when switching quickly sometimes plugins don't get drawn to the right depth surface
29		* test the bin, toggle between direct and morph, check if depthflag works good etc etc
30		* nogwel wat meer issues met switchen, maak een switch random ofzo om het eens hard te
31		  testen
32		* vanuit gl naar oinksie direct door naar JESS kaboem.
33		* outdate songinfo on a switch.
34		* FOR RERWITE: on morph do both actors in two thread when threading
35		  is available.
36
37	auto sched:
38
39	random:
40		* easily filter out gl plugins
41
42	examples:
43		* find a way to compile examples AFTER installing the current library.
44		* port simplesdl to the new bin system.
45		* make an example using a NON managed bin, and also a test if this is still working :)
46
47Af te werken:
48	* when the whole bin stuff is working, test excluding opengl stuff within the xmms plugin
49
50Automakeify todo:
51x	fix lib version
52
53LEGAL:
54x	Add copyright notice to all the files
55
56DOCS:
57	optimization docs:
58		http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/22007.pdf
59		http://www.intel.com/cd/ids/developer/asmo-na/eng/microprocessors/index.htm
60
61	mmx, sse etc:
62		http://www.angelcode.com/refdb/category/51.asp
63		http://aggregate.org/PPLINUX/19971124/pphowto-4.html
64
65	Alpha blending:
66		http://www.gamedev.net/reference/programming/features/mmxblend/page2.asp
67
68	3d,4d functions:
69		http://www.geocities.com/projectgreenshift/4dgraphs.html
70
71	gcc inline assembler:
72		http://www.osdever.net/tutorials/gccasmtut.php?the_id=68
73
74plugins:
75	!(option flags, include a 'reentrant' flag that indicates that the plugin is allowed to load twice) (make a notreentrant flag rather)
76
77docs:
78	plugin tutorial
79	application tutorial
80	plugin writers guide
81
82libvisual:
83	audio:
84		allow pre buffer to be requested, implement a queue buffer (post 0.1)
85		More advanced audio core and capable of transforming audio buffers
86			to different ones (post 0.3)
87		investigate bpm detection (post 0.4)
88
89	video:
90		font system
91
92		check for opengl when setting up transformation buffers
93
94		add a superfast double pixeler (post 0.2)
95
96		make start framework that handles sse, mmx etc (post 0.2)
97		sse, sse2, mmx work: (post 0.2):
98			colorspace transformations
99			alpha blend code
100
101		16 bits alpha optimize:	And do two at once using 32 bits ints (post 0.2)
102
103		test >all< the video transformation stuff very well
104
105		sizing: When not fitting, it doesn't place in the middle, this is easy
106			to do for the fitting enviroment but a bit less easy for the
107			depth transform env, because the advantage we have within
108			the depth transform is that we can give an pitch.
109			we have to look into this better
110
111	sched: (post 0.2)
112		implement the auto scheduler.
113		have the auto scheduler react on music
114
115	property: (post 0.4)
116		implement an property system which plugins can use to set properties
117			and (g)uis can use to present them to the user.
118		implement an within buffer fallback to do settings as well
119			use the syneathesia in buffer stuff as an example for this !
120
121	settings: (post 0.5) (do we need this ?)
122		a mechanism to enable/disable VISUAL_LOG_DEBUG messages.
123
124		a system to store plugin settings.
125
126		next plugin, prev plugin keymaps how do we do ?
127
128	util: (post 0.2)
129		functions to check for mmx, sse etc and a good arch detection system.
130
131	actor:
132		Honor plugin flags better (post 0.1)
133		Have a mechanism to request a depth from within the plugin, which is needed
134			for plugins like the pixbuf loader.
135
136	plugins:
137		have a way to version tag plugins (post 0.1) (Within the new plugin system ?)
138
139		global params:
140			a global prop to do settings for songinfo (to show, how long shown)
141			a param that disables blurs and field displacement in a plugin
142				so that you can use other plugins to render
143				inside another
144
145	libvisual:
146		After the events stuff do a good code review + cleanups.
147
148	cleanups:
149		functions returning strings that cannot be changed, must be
150			typed with const returns.
151		cleanup the fixmes
152		make use of the lv_log system and do better error checking
153		void * -> byte/word types on other archs !?
154		comment code
155		go through all the structs and cleanup naming here and there
156		move the headers to include/ ?? (really ??)
157		test against: http://www.linuxbase.org/
158		I've always been declaring vars at the top of the function, however
159			Ive started to think it's cleaner to declare them in their target
160			scope.
161		VISUAL_ACTOR ( ), VISUAL_INPUT ( ) cast like macros (???) ?
162
163	doxygen:
164		fix alphabetic list, why is this borked for functions ?
165		rename actor, input to VisActor, etc at some places.
166		use # at places where this is useful.
167		fix docs for plugin function.
168
169	portability:
170		have byteswap helper functions and use them where endianess issues
171			arise (lv_bmp.c)
172
173	Other:
174		Make Gstreamer elements from the actors.
175			morph plugins.
176			and input plugins.
177
178	Tools:
179		lv-inspect: to get detailed information about a plugin
180
181	Threading:
182		Have VisThread, VisMutex and threading api to wrap other
183			threading systems within, like pthreads or win32 native threading API.
184			this is for internal usage within the library, plugins shouldn't
185			be threaded.
186
187		Threadify some plugin opts, like the input plugin, two actor plugins at
188			morph
189
190	Params:
191		When libvisual settings backend lands, have a 'serialize' flag that does save, load parameters.
192
193	VisCPU:
194		A small sub system to obtain information about the processor, processors, cpu flags, simd set flags.
195
196		Use this for the timed morph as well.
197
198		explicitly disable 'mmx' through an API. mmx can be a disaster in multithreading environments
199		because of it's sharing registers with the fpu registers thingy.
200
201
202INTERNAL:
203	LOG:
204		Make public the maximum length of the string that can be showed.
205
206tests:
207	port the tests over to the application API (post 0.1).
208	with some people they start out in fullscreen mode (post 0.1)
209		seems to be somewhat related to esd running as an user and
210		launching the tests as root (?!), or better sdl not using
211		x as it's backend but something else.
212
213FUTURE:
214	* an highend API and library that also helps with displaying (do display support plugin wise ??)
215	* an highend API and library that allows scheduling on a timeline, scene based etc etc for VJ like stuff.
216
217