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