Ditto, here are some of mine (WIP/RobShortt/IDEAS):
Here are some of my ideas, my online notebook of sorts. =======================================================
User I/O: ---------
Here is my idea for handling support for multiple display types and user input in Freevo. We could use a layer of code to interface with different display types such as pygame, pydfb, bmovl(2), and lcdproc, and input methods such as pygame and pydfb keyboard or device input, lirc, joystick, network remote, bluetooth, or event device.
Consider this structure:
src/IOEngines/: Place all related code under here.
src/IOEngines/__init__.py: The Freevo interface to available engines. This
would contain the methods to be called by the rest of Freevo and
connect the Display and Input functions of each available engine. The
interface could be something like this:
get/setEngines(pygame, pydfb, ascii, lcdproc, bmovl2, ...)
registerEngine(): register a single engine
getCapabilities(): layers, input, video, pip, osd, menus
getInputEvent(): iterate through each registered input engine
and return an input event.
osd.draw....(): Abstract all osd.draw functions here, perhaps
even to a higher level like drawPopup() which could
call graphics functions in each output engine.
update(): Refresh the display by passing a call along to each
output / display engine.
... There could be a lot of other interface methods.
src/IOEngines/engine_pygame.py: For example ALL pygame calls could go here.
Each engine could have a Display and/or a Event class:
class Display: All pygame drawing goes here, possibly each
osd.draw...() function as they are now since they
call pygame code.
class Input: The pygame keyboard callback hooks could live here.
src/IOEngines/engine_pydfb.py: Pydfb was implimented with the same interface as
pygame but for some small things.
class Display: Here we could extend the
engine_pygame.Display interface and change/override just a few
things and also add nice support for DirectFB layers and
windows (for OSD and stuff).
class Input: Get directfb events.
src/IOEngines/engine_lcdproc.py: An interface for LCD display, implimenting
Display only.
src/IOEngines/engine_lirc.py: An interface to lirc, impliments Input only.
src/IOEngines/engine_joystick.py: An interface for joysticks, impliments Input only.
You get the idea, we could have lots of engines for various inputs and displays.
Recordserver Ideas: -------------------
Change record_schedule.xml into a list of events only. An event could be anything from recording a program, transcoding a recording, downloading listings...
Fix recordserver and webserver to use non-depricated Twisted code. This is actually done in my working copy which I will commit after the 1.5 release.
Freevo Main Loop: -----------------
Use a Twisted reactor for the main/event loop. This should make freevo more
responsive and keep it from blocking on stupid things like network activity.
It will also let us easily turn Freevo main into a XML-RPC server for receiving
communications from recordserver. This could include notice that something is
about to record so you have to decide what to do with your in progress TV
viewing.
Database Ideas: ---------------
Freevo could really benefit from the use of a database layer, especially for
handling program data, which ones we'll record, which episodes we've recorded.
I think this will also make it easier to import tv listings. I picture the
Freevo database layer something like this:
Freevo <-> Data Interface <-> Database Plugin
The Freevo internals would know nothing of any particular database
implimentation, only the interface. The database plugins could range from
object pickles, ZODB, sqlite, mysql, etc. We could define general data
related calls in the interface like:
getEPG(timerange): get the EPG for a certain time
getProgram(channel, time): return a program
importProgram(): add a program to the guide
programRecorded(): let it know we recorded it
programScheduled(): we want to record this one
There are lots of possabilities here. We can extend our music and
playlists as well, which Aubin has begun with sqlite.
VDR Integration: ----------------
I am working on some python code to interact with VDR. It does this by examining the VDR files (channels.conf, epg.data, timers.conf, etc) and also through the SVDRP interface which lets you change the channel, get and set EPG data, set timers for recording, and more. I will commit something to my WIP dir very soon.
------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click _______________________________________________ Freevo-devel mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/freevo-devel
