Fix that lv-inspect builds, after the lib has been installed.


replace stdint.h with sys/types.h and have defines so we don't have to change all
the code (besides u_int16_t sounds less nice than uint16_t :))


This file is not very ordered and kinda a scrapbook, but it contains all
the future planning.

Soon:
	bin:
		***** REWRITE THE BIN MESS, I WROTE UTTERLY FUCKING SHIT *****
		* check if we don't negotiate too often.
		* crash when very quickly switching in xmms plugin
x		* if morphing from 8 to 32 and then while morphing to 8 again, the main actor stays in 32 bits
		* check if memory is released as soon as possible all the time.
x		* property to force morphs in high bpp
		* when switching quickly sometimes plugins don't get drawn to the right depth surface
		* test the bin, toggle between direct and morph, check if depthflag works good etc etc
		* nogwel wat meer issues met switchen, maak een switch random ofzo om het eens hard te
		  testen
		* vanuit gl naar oinksie direct door naar JESS kaboem.
		* outdate songinfo on a switch.
		* FOR RERWITE: on morph do both actors in two thread when threading
		  is available.

	auto sched:
		
	examples:
		* find a way to compile examples AFTER installing the current library.
		* port simplesdl to the new bin system.
		* make an example using a NON managed bin, and also a test if this is still working :)

Af te werken:
	* when the whole bin stuff is working, test excluding opengl stuff within the xmms plugin

Automakeify todo:
x	fix lib version

LEGAL:
x	Add copyright notice to all the files

DOCS:
	optimization docs:
		http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/22007.pdf
		http://www.intel.com/cd/ids/developer/asmo-na/eng/microprocessors/index.htm

	mmx, sse etc:
		http://www.angelcode.com/refdb/category/51.asp
		http://aggregate.org/PPLINUX/19971124/pphowto-4.html

	Alpha blending:
		http://www.gamedev.net/reference/programming/features/mmxblend/page2.asp

	3d,4d functions:
		http://www.geocities.com/projectgreenshift/4dgraphs.html

	gcc inline assembler:
		http://www.osdever.net/tutorials/gccasmtut.php?the_id=68

plugins:
	!(option flags, include a 'reentrant' flag that indicates that the plugin is allowed to load twice) (make a notreentrant flag rather)

docs:
	plugin tutorial
	application tutorial
	plugin writers guide

libvisual:
	audio:
		allow pre buffer to be requested, implement a queue buffer (post 0.1)
		More advanced audio core and capable of transforming audio buffers
			to different ones (post 0.3)
		investigate bpm detection (post 0.4)

	video:
		palette change to use VisColor and good helper functions.		

		font system
		
		check for opengl when setting up transformation buffers

		add a superfast double pixeler (post 0.2)

		make start framework that handles sse, mmx etc (post 0.2)
		sse, sse2, mmx work: (post 0.2):
			colorspace transformations
			alpha blend code

		16 bits alpha optimize:	And do two at once using 32 bits ints (post 0.2)

		test >all< the video transformation stuff very well

		the fitter should still draw even if the buffer is too small

		sizing: When not fitting, it doesn't place in the middle, this is easy
			to do for the fitting enviroment but a bit less easy for the
			depth transform env, because the advantage we have within
			the depth transform is that we can give an pitch.
			we have to look into this better

	sched: (post 0.2)
		implement the auto scheduler.
		have the auto scheduler react on music

	property: (post 0.4)
		implement an property system which plugins can use to set properties
			and (g)uis can use to present them to the user.
		implement an within buffer fallback to do settings as well
			use the syneathesia in buffer stuff as an example for this ! 

	settings: (post 0.5) (do we need this ?)
		a mechanism to enable/disable VISUAL_LOG_DEBUG messages.
		
		a system to store plugin settings.

		next plugin, prev plugin keymaps how do we do ?

	util: (post 0.2)
		functions to check for mmx, sse etc and a good arch detection system.
	
	actor:
		Honor plugin flags better (post 0.1)

	plugins:
		add a cache facility that let plugins save some expensive data (tables,
		etc) to can be used after switch. The library could administer this data,
		and when there is too much load, just drop some.
		
		have a way to set plugin parameters like "gst-pipe", "blah blah | blah".
		have a way to version tag plugins (post 0.1)
		have a 'plugin type namespace' policy and fix this within the plugins (discuss)
		
		Emit events on param changes.
		
		global params:
			a global prop to do settings for songinfo (to show, how long shown)
			a param that disables blurs and field displacement in a plugin
				so that you can use other plugins to render
				inside another

	morph:
		timed morph
		framebuffer to gl morph thingy
		a method to check if the morph needs audio

	songinfo:
		fix coverart support and stuff
	
	libvisual:
		After the events stuff do a good code review + cleanups.

	cleanups:
		functions returning strings that cannot be changed, must be
			typed with static returns.
		cleanup the fixmes
		make use of the lv_log system and do better error checking
		void * -> byte/word types on other archs !?
		comment code
		go through all the structs and cleanup naming here and there
		find a replacement name for LVPlugin ;)
		move the headers to include/ ?? (really ??)
		test against: http://www.linuxbase.org/
		I've always been declaring vars at the top of the function, however
			I think it's cleaner to declare them in their target
			scope.

	doxygen:
		fix alphabetic list, why is this borked for functions ?
		rename actor, input to VisActor, etc at some places.
		use # at places where this is useful.
		fix docs for plugin function.

	list:
		Add a sort method.

	Other:
		Make Gstreamer elements from the actors.
			morph plugins.
			and input plugins.

		Move all our mallocs to visual_new0

	Tools:
		lv-inspect: to get detailed information about a plugin

	Threading:
		Have VisThread, VisMutex and threading api to wrap other
			threading systems within, like pthreads or win32 native threading API.

		Threadify some plugin opts, like the input plugin, two actor plugins at
			morph

INTERNAL:
	LOG: (post 0.1)
		give an api that allows you to select the lowest debug niveau to be shown
		have an optional enviroment var that sets the lowest debug niveau to be shown
		logfy all the code, logfy input likewise actor, same for the plugin files
		change the defines so that a format string can be used.


tests:
	port the tests over to the application API (post 0.1).
	with some people they start out in fullscreen mode (post 0.1)
		seems to be somewhat related to esd running as an user and
		launching the tests as root (?!), or better sdl not using
		x as it's backend but something else.

FUTURE:
	* an highend API and library that also helps with displaying (do display support plugin wise ??)
	* an highend API and library that allows scheduling on a timeline, scene based etc etc for VJ like stuff.

