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:
|*.[mM][pP][gG3] smpeg
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.
August 22nd:
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)
August 20th:
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".
August 18th:
New web page going, Xtheater 0.1.0 is current release.