Blame TODO

Packit aa8a04
THIS FILE IS OUT DATED
Packit aa8a04
Packit aa8a04
double check the bmp loader for possibly errors when
Packit aa8a04
	the header has been tampered
Packit aa8a04
Packit aa8a04
Packit aa8a04
Packit aa8a04
FIX the VERSION define
Packit aa8a04
Packit aa8a04
Fix that lv-inspect builds, after the lib has been installed.
Packit aa8a04
Packit aa8a04
Packit aa8a04
replace stdint.h with sys/types.h and have defines so we don't have to change all
Packit aa8a04
the code (besides u_int16_t sounds less nice than uint16_t :))
Packit aa8a04
Packit aa8a04
Packit aa8a04
This file is not very ordered and kinda a scrapbook, but it contains all
Packit aa8a04
the future planning.
Packit aa8a04
Packit aa8a04
Soon:
Packit aa8a04
	bin:
Packit aa8a04
		***** REWRITE THE BIN MESS, I WROTE UTTERLY FUCKING SHIT *****
Packit aa8a04
		* check if we don't negotiate too often.
Packit aa8a04
		* crash when very quickly switching in xmms plugin
Packit aa8a04
x		* if morphing from 8 to 32 and then while morphing to 8 again, the main actor stays in 32 bits
Packit aa8a04
		* check if memory is released as soon as possible all the time.
Packit aa8a04
x		* property to force morphs in high bpp
Packit aa8a04
		* when switching quickly sometimes plugins don't get drawn to the right depth surface
Packit aa8a04
		* test the bin, toggle between direct and morph, check if depthflag works good etc etc
Packit aa8a04
		* nogwel wat meer issues met switchen, maak een switch random ofzo om het eens hard te
Packit aa8a04
		  testen
Packit aa8a04
		* vanuit gl naar oinksie direct door naar JESS kaboem.
Packit aa8a04
		* outdate songinfo on a switch.
Packit aa8a04
		* FOR RERWITE: on morph do both actors in two thread when threading
Packit aa8a04
		  is available.
Packit aa8a04
Packit aa8a04
	auto sched:
Packit aa8a04
		
Packit aa8a04
	random:
Packit aa8a04
		* easily filter out gl plugins
Packit aa8a04
Packit aa8a04
	examples:
Packit aa8a04
		* find a way to compile examples AFTER installing the current library.
Packit aa8a04
		* port simplesdl to the new bin system.
Packit aa8a04
		* make an example using a NON managed bin, and also a test if this is still working :)
Packit aa8a04
Packit aa8a04
Af te werken:
Packit aa8a04
	* when the whole bin stuff is working, test excluding opengl stuff within the xmms plugin
Packit aa8a04
Packit aa8a04
Automakeify todo:
Packit aa8a04
x	fix lib version
Packit aa8a04
Packit aa8a04
LEGAL:
Packit aa8a04
x	Add copyright notice to all the files
Packit aa8a04
Packit aa8a04
DOCS:
Packit aa8a04
	optimization docs:
Packit aa8a04
		http://www.amd.com/us-en/assets/content_type/white_papers_and_tech_docs/22007.pdf
Packit aa8a04
		http://www.intel.com/cd/ids/developer/asmo-na/eng/microprocessors/index.htm
Packit aa8a04
Packit aa8a04
	mmx, sse etc:
Packit aa8a04
		http://www.angelcode.com/refdb/category/51.asp
Packit aa8a04
		http://aggregate.org/PPLINUX/19971124/pphowto-4.html
Packit aa8a04
Packit aa8a04
	Alpha blending:
Packit aa8a04
		http://www.gamedev.net/reference/programming/features/mmxblend/page2.asp
Packit aa8a04
Packit aa8a04
	3d,4d functions:
Packit aa8a04
		http://www.geocities.com/projectgreenshift/4dgraphs.html
Packit aa8a04
Packit aa8a04
	gcc inline assembler:
Packit aa8a04
		http://www.osdever.net/tutorials/gccasmtut.php?the_id=68
Packit aa8a04
Packit aa8a04
plugins:
Packit aa8a04
	!(option flags, include a 'reentrant' flag that indicates that the plugin is allowed to load twice) (make a notreentrant flag rather)
Packit aa8a04
Packit aa8a04
docs:
Packit aa8a04
	plugin tutorial
Packit aa8a04
	application tutorial
Packit aa8a04
	plugin writers guide
Packit aa8a04
Packit aa8a04
libvisual:
Packit aa8a04
	audio:
Packit aa8a04
		allow pre buffer to be requested, implement a queue buffer (post 0.1)
Packit aa8a04
		More advanced audio core and capable of transforming audio buffers
Packit aa8a04
			to different ones (post 0.3)
Packit aa8a04
		investigate bpm detection (post 0.4)
Packit aa8a04
Packit aa8a04
	video:
Packit aa8a04
		font system
Packit aa8a04
		
Packit aa8a04
		check for opengl when setting up transformation buffers
Packit aa8a04
Packit aa8a04
		add a superfast double pixeler (post 0.2)
Packit aa8a04
Packit aa8a04
		make start framework that handles sse, mmx etc (post 0.2)
Packit aa8a04
		sse, sse2, mmx work: (post 0.2):
Packit aa8a04
			colorspace transformations
Packit aa8a04
			alpha blend code
Packit aa8a04
Packit aa8a04
		16 bits alpha optimize:	And do two at once using 32 bits ints (post 0.2)
Packit aa8a04
Packit aa8a04
		test >all< the video transformation stuff very well
Packit aa8a04
Packit aa8a04
		sizing: When not fitting, it doesn't place in the middle, this is easy
Packit aa8a04
			to do for the fitting enviroment but a bit less easy for the
Packit aa8a04
			depth transform env, because the advantage we have within
Packit aa8a04
			the depth transform is that we can give an pitch.
Packit aa8a04
			we have to look into this better
Packit aa8a04
Packit aa8a04
	sched: (post 0.2)
Packit aa8a04
		implement the auto scheduler.
Packit aa8a04
		have the auto scheduler react on music
Packit aa8a04
Packit aa8a04
	property: (post 0.4)
Packit aa8a04
		implement an property system which plugins can use to set properties
Packit aa8a04
			and (g)uis can use to present them to the user.
Packit aa8a04
		implement an within buffer fallback to do settings as well
Packit aa8a04
			use the syneathesia in buffer stuff as an example for this ! 
Packit aa8a04
Packit aa8a04
	settings: (post 0.5) (do we need this ?)
Packit aa8a04
		a mechanism to enable/disable VISUAL_LOG_DEBUG messages.
Packit aa8a04
		
Packit aa8a04
		a system to store plugin settings.
Packit aa8a04
Packit aa8a04
		next plugin, prev plugin keymaps how do we do ?
Packit aa8a04
Packit aa8a04
	util: (post 0.2)
Packit aa8a04
		functions to check for mmx, sse etc and a good arch detection system.
Packit aa8a04
	
Packit aa8a04
	actor:
Packit aa8a04
		Honor plugin flags better (post 0.1)
Packit aa8a04
		Have a mechanism to request a depth from within the plugin, which is needed
Packit aa8a04
			for plugins like the pixbuf loader.
Packit aa8a04
Packit aa8a04
	plugins:
Packit aa8a04
		have a way to version tag plugins (post 0.1) (Within the new plugin system ?)
Packit aa8a04
		
Packit aa8a04
		global params:
Packit aa8a04
			a global prop to do settings for songinfo (to show, how long shown)
Packit aa8a04
			a param that disables blurs and field displacement in a plugin
Packit aa8a04
				so that you can use other plugins to render
Packit aa8a04
				inside another
Packit aa8a04
Packit aa8a04
	libvisual:
Packit aa8a04
		After the events stuff do a good code review + cleanups.
Packit aa8a04
Packit aa8a04
	cleanups:
Packit aa8a04
		functions returning strings that cannot be changed, must be
Packit aa8a04
			typed with const returns.
Packit aa8a04
		cleanup the fixmes
Packit aa8a04
		make use of the lv_log system and do better error checking
Packit aa8a04
		void * -> byte/word types on other archs !?
Packit aa8a04
		comment code
Packit aa8a04
		go through all the structs and cleanup naming here and there
Packit aa8a04
		move the headers to include/ ?? (really ??)
Packit aa8a04
		test against: http://www.linuxbase.org/
Packit aa8a04
		I've always been declaring vars at the top of the function, however
Packit aa8a04
			Ive started to think it's cleaner to declare them in their target
Packit aa8a04
			scope.
Packit aa8a04
		VISUAL_ACTOR ( ), VISUAL_INPUT ( ) cast like macros (???) ?
Packit aa8a04
Packit aa8a04
	doxygen:
Packit aa8a04
		fix alphabetic list, why is this borked for functions ?
Packit aa8a04
		rename actor, input to VisActor, etc at some places.
Packit aa8a04
		use # at places where this is useful.
Packit aa8a04
		fix docs for plugin function.
Packit aa8a04
Packit aa8a04
	portability:
Packit aa8a04
		have byteswap helper functions and use them where endianess issues
Packit aa8a04
			arise (lv_bmp.c)
Packit aa8a04
Packit aa8a04
	Other:
Packit aa8a04
		Make Gstreamer elements from the actors.
Packit aa8a04
			morph plugins.
Packit aa8a04
			and input plugins.
Packit aa8a04
Packit aa8a04
	Tools:
Packit aa8a04
		lv-inspect: to get detailed information about a plugin
Packit aa8a04
Packit aa8a04
	Threading:
Packit aa8a04
		Have VisThread, VisMutex and threading api to wrap other
Packit aa8a04
			threading systems within, like pthreads or win32 native threading API.
Packit aa8a04
			this is for internal usage within the library, plugins shouldn't
Packit aa8a04
			be threaded.
Packit aa8a04
Packit aa8a04
		Threadify some plugin opts, like the input plugin, two actor plugins at
Packit aa8a04
			morph
Packit aa8a04
Packit aa8a04
	Params:
Packit aa8a04
		When libvisual settings backend lands, have a 'serialize' flag that does save, load parameters.
Packit aa8a04
	
Packit aa8a04
	VisCPU:
Packit aa8a04
		A small sub system to obtain information about the processor, processors, cpu flags, simd set flags.
Packit aa8a04
Packit aa8a04
		Use this for the timed morph as well.
Packit aa8a04
Packit aa8a04
		explicitly disable 'mmx' through an API. mmx can be a disaster in multithreading environments
Packit aa8a04
		because of it's sharing registers with the fpu registers thingy.
Packit aa8a04
Packit aa8a04
Packit aa8a04
INTERNAL:
Packit aa8a04
	LOG:
Packit aa8a04
		Make public the maximum length of the string that can be showed.
Packit aa8a04
Packit aa8a04
tests:
Packit aa8a04
	port the tests over to the application API (post 0.1).
Packit aa8a04
	with some people they start out in fullscreen mode (post 0.1)
Packit aa8a04
		seems to be somewhat related to esd running as an user and
Packit aa8a04
		launching the tests as root (?!), or better sdl not using
Packit aa8a04
		x as it's backend but something else.
Packit aa8a04
Packit aa8a04
FUTURE:
Packit aa8a04
	* an highend API and library that also helps with displaying (do display support plugin wise ??)
Packit aa8a04
	* an highend API and library that allows scheduling on a timeline, scene based etc etc for VJ like stuff.
Packit aa8a04