THIS FILE IS OUT DATED double check the bmp loader for possibly errors when the header has been tampered FIX the VERSION define 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: random: * easily filter out gl plugins 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: 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 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) Have a mechanism to request a depth from within the plugin, which is needed for plugins like the pixbuf loader. plugins: have a way to version tag plugins (post 0.1) (Within the new plugin system ?) 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 libvisual: After the events stuff do a good code review + cleanups. cleanups: functions returning strings that cannot be changed, must be typed with const 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 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 Ive started to think it's cleaner to declare them in their target scope. VISUAL_ACTOR ( ), VISUAL_INPUT ( ) cast like macros (???) ? 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. portability: have byteswap helper functions and use them where endianess issues arise (lv_bmp.c) Other: Make Gstreamer elements from the actors. morph plugins. and input plugins. 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. this is for internal usage within the library, plugins shouldn't be threaded. Threadify some plugin opts, like the input plugin, two actor plugins at morph Params: When libvisual settings backend lands, have a 'serialize' flag that does save, load parameters. VisCPU: A small sub system to obtain information about the processor, processors, cpu flags, simd set flags. Use this for the timed morph as well. explicitly disable 'mmx' through an API. mmx can be a disaster in multithreading environments because of it's sharing registers with the fpu registers thingy. INTERNAL: LOG: Make public the maximum length of the string that can be showed. 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.