The binary "xtheater" is now just a loader of plugins, and only requires glib to compile, and also has a configuration file parser. It can load two types of plugins, UI and player, one of each at a time. The player plugin handles the work of getting the data, decoding the data, and outputting the result. The player plugin notifies the loader at loadtime what capabilities it has and this information is pushed back to the UI for its reference. The UI calls the player thpough the loader, which checks each call against the capabilities of the plugin before passing it on.
Player plugin associatons are specified in the configuration file like this:
the | character specifies this as an associaton, followed immediately by the name mask, and then whitespace, and then the name of a plugin that will handle the mask. The associations are scanned in reverse order, so later masks are checked before earlier ones. Player plugins are only loaded when a file is open, and is completely unloaded every time the media is closed, limiting memory leaks and other ways plugins can misbehave tpying to handle multiple media opens. Here is a description of the plugin I have mostly finished.
The smpeg plugin links with smpeg 0.4.0 or later. It has the features of Xtheater 0.1.4, plus seek. The plugin is a complete rewrite from scratch, and therefore in many ways behaves much more nicely. Between the loader enforcing better things and the internal rewrite, this should give a much smoother run than previous Xtheaters.
An mpeglib based plugin will hopefully also be made soon. It currently does not work under solaris, so it probably won't be in time for my 0.5.0 release. This plugin would have the features of 0.2.5, plus MPEG-2 support, and some DGA 2 stuff. Other plugins I am considering are a dxr2 plugin and an xanim controller plugin. I will accept any plugin contributions of course.
The only UI plugin I have is gtk. Similar to the previous Xtheater UI, this adds dynamic reconfiguration, so at any time it only displays that are appropriate for the current media and the status of that media. For example the play button is only displayed when playable media is loaded and is not currently playing. It is also a complete rewrite from scratch and therefore has many fixed bugs/oddities.
And that is a pretty good summary of the changes I've made, the Changelog
for this one will be long..
June 13, 2000:
Have had a lot of cool stuff happening in my life so I'm not ao far as I'd like to be in the rewrite. I have 98% finished the glue between backend and frontend, 80% finished the gtk stuff, and about 45% finished the smpeg stuff, and the mpeglib portion is not yet started. It can already do most stuff the 0.1.x could do, and things look promising. More details tomorrow.
June 7, 2000:
For those who fear that Xtheater development is dead, fear no more! As of yesterday I finally got around to more Xtheater work. After contemplating the problems I am facing with Xtheater, I have decided on doing a full rewrite. I started this yesterday and have a significant portion done already. This time the source will not be as hard to read and maintain. Everything from more sensible function and variable names to entirely restructured code. For example, currently if you use drag and drop to open a file, a different segment of code is used to perform the open than the open button. This redundancy will be reduced, making maintenance much easier. Also, this will be the definitively best version, the version that I will feel good about putting in CVS. Unlike 0.2.x and 0.1.x where there are so many tradeoffs that neither is intrinsicly superior, this will display definitive superiority over 0.1.x and 0.2.x. How you ask? I'll tell as soon as I make sure it works for me and then I'll make promises.
March 24, 2000:
I've largely moved into SourceForge, just need to make a few tweks here and there (and figure out some more stuff. After that I'll announce my move to the world, maybe even try to fix a few bugs in the program while I'm at it :)
March 21, 2000:
After looking around freshmeat I found a few more players (I'll add them to the competitor's page soon). I looked at them, and they all do excellent jobs and the programmers are to be commended, but their design goals seemed quite different from mine, so I decided to write up my philosophy behind Xtheater's design, it is here. Sorry if it sounds like a rant, but in a sense it is :) Interesting news happened yesterday, read that :)
March 20, 2000:
The site is back up after a week of downtime, and the IP changed. I should have started earlier, but.. if you are/know of a good place to host this, I would greatly appreciate it if you would contact me. This connection will go down in May, probably for good and it is doubtful I will have a suitable replacement. If I don't find a site to host, I'll do my best to keep it out there somewhere. In any case, as an apology for the week of downtime, I have to decided to work on and release Xtheater 0.2.5. With this, there is now a more standard install procedure (documented in INSTALL and on the web pages) and includes the latest backend from the now released kmpg 0.5.4. This new code is consdierably less CPU-intensive than previous releases on x86 machines w/ MMX. Also, smpeg support is no longer included in 0.2.x releases. No need to panic, all the functionality that would be there is present in the latest 0.1.x release and I will continue to keep up to speed with smpeg, possibly releasing smpeg based work under a more appropriate name. (has no X-specific code, per se, therefore Xtheater does not apply). One last bit of news for 0.1.x users, smpeg 0.3.4 is out, so I suggest you go get it, it is much improved! :)
February 10, 2000:
Check out the new download page. After some thought I've decided to have another 0.1.x release. Why you ask? Well, I was thinking I may as well put the UI enhancements from 0.2.x into a 0.1.x release to cater to people who may want the newest UI without getting 0.2.x with the "big" backend attached. Also, and primarily, I added a ./configure script. So the install is now simply: ./configure; make ; make install This should make it into 0.2.x in some relatively reasonable timeframe. o I have officially forked a little, hurting no one except myself as I have to document everything all strangely.
February 7, 2000:
After merging in some patches from Martin Vogt on the kmpg backend and some far more minor user interface tweaks, 0.2.4 is ready! What's on the horizon? Well, there are a couple of huge features which may get in very soon, but I won't say any more until there is more certainty. I have to research a few things and hear from a couple of people first. In the meantime, let 0.2.4 tide you over, go down to the downloads. Also, if you want to try it under Solaris on a Sparc, you can get a patch for compilation on that architecture. It is listed with downloads. If you want to compile for Linux/PPC, look at the solaris patch and decide which changes are appropriate and maybe submit the modifed patch back to me.
January 31, 2000: After some feedback from users, I have uncovered and, likely fixed a bug with VCD and the seekbar. At the sametime, I figured out a different way of doing the seekbar that makes it accurately reflect current position in stream so that it doesn't get to the end before the mpeg does. Also, in response to a few requests, Everything has been made into 'tear-away' items, though I don't understand why people want this so much. And before more people ask, tear-away is *still* simply a GTK thing, just utilized more by gnome apps, so I do NOT require gnome to compile still. Also, The pixmap bugs that I have been dying to fix have been fixed! No more worning about NULL colormap/window... Finally. Still looking into autoconf, automake, and wokring on it for sparc-solaris. I think there should be no big problems with this release, but let me know! It is in the downloads below..
And I forgot to update the link on this page, hopefully, everyone came back after realizing they did NOT get 0.2.2, but 0.2.1 (as filename will show you). Sorry about all this, but all links are updated.
0.2.2 released. Drag and drop has been added to both builds. Some people have asked if this means I require gnome, and the answer is no, drag and drop is completely a gtk thing. Gnome uses the gtk drag and drop so drops from gnome should work (gmc has been tested). kfm, dfm, netscape don't work. If you run gnome, you might appreciate this. Also, with the included backend (this means NOT smpeg) options for playing VCDs and http streams is added. I have tested the http stream and it seems to work.. VCD *should* in theory, work, though I cannot test it. If someone with VCDs can test and let me know if it works, I'd appreciate it. For now, it is assumed that /dev/cdrom is the device with a VCD in it. Also if you had an environment that complained it didn't know how to make certain files, your problems are likely fixed. What I really need to do is put in a configure script (yes, I'm looking over automake/autoconf stuff already).
January 28, 2000: 0.2.1 released. This one improves on the kmpg backend support, improving the seekbar, improving speed, fixing the sync, fixing many bugs only seen with kmpg, No changes to smpeg build though. See the changes for most of the details.
January 26, 2000: And even more unexpected, stupidity forces the need for Xtheater-0.2.0.1, which will work with older versions of GTK! And fixes make install, and fixes the version number.. Try it if 0.2.0 failed and segfaulted.
Sooner than expected, Xtheater 0.2.0 is released! Lot of new features, lots of new bugs. A bit more complicated install process, you should read the FAQs and the install guide. Oh, for new features, you can look at the Changelog. Brand new online documentation, still no cool logo, but I have an idea for one, but am terrible with Gimp, PLEASE contact me if you are good with stuff like this and want credits for the logo/icons. Many thanks go to Martin Vogt for informing me about his kmpg backend and giving me ideas as to how to integrate it into Xtheater (Thanks goodness for his code design, everything was nice and easily seaparated from the frontend.) If you want to see his program, see the new competitors page :) His program is probably worth a try if you have KDE installed (which I do not)
January 23 2000: New year, and long overdue version of Xtheater, too busy, preparing a snapshot of my 0.2.0 work, which also has very little effort put into it, but a slidebar is there! Not very good, but better than nothing.. almost. Anyway, 0.1.3 adds a volume control and mouse hiding, window title, and updates for latest smpeg/SDL, no root privs needed for any functionality!
November 11: 0.1.2 is out!!!!!
And new screenshots below!!!!
Felt heavily inspired to do some major work on Xtheater after feedback from contented (and discontended users) The actual media playback (input & display) has been abstracted more from the GUI code so that if different backends would need be used in the future, it would be easier to pull off. All kinds of Segmentation faults are fixed, and a couple of small (not even noticeable) memory leaks also patched. The UI got more pixmap buttons, Added File/Exit to Menu and changed File/Close to more closely match other GUI applications. But I guess the biggest change as far as userland is concerned is loading of more mpegs after or while playing the first mpeg is now fixed. If you have ever used Xtheater in the past, or even if you haven't, you should probably try it out now and send me feedback :) (and this time it should compile :)
Later November 8:
Fixed some compile bugs, very stupid mistakes, redownload tarball if compile failed for you...
November 8: Finallly released 0.1.1, basically the long wait was waiting on loki to update smpeg to give me the features I really needed to fix a few bugs. Sync is CLOSER to working thanks to smpeg advancements, but still has issues.
Well, running what I was rasied on.. Apache.. Roxen occasionally did Bad Things to my system, and I didn't need the particular features it offered, so I switched to apache. Roxen looks very cool, but I think I'll stick with Apache for a while. This concludes most major server problems users may have been having (hopefully)
Whoops, fixed the download link, and put it on an ftp server instead of http.
There may be some downtime today and tomorrow of the ftp server, or the web site, I'm in the process of doing some massive upgrades "for the fun of it".
New web page going, Xtheater 0.1.0 is current release.