Mini Shell
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.
Zerion Mini Shell 1.0