This is just an update to report ETV is still being developed, although very slowly. I wasted three full months going in wrong directions, so no new ETV version for the time being. For those interested - and maybe just for myself to let off steam - the report of three months fighting operating systems and DVD players follows below...
It all started when I bought a projector. Nice gadget, fun big image,
and I wanted to use my HTPC (at that time running ETV frontend and
backend on gentoo linux) as a player and scaler. After spending about
a month trying to get linux to project a decent image, I know now that
currently linux is not yet able to play a DVD. Any 50 euro hardware
player can keep its video output in sync with the video framerate, linux
just can't.
The only software theoretically able to do so under linux uses the syncfb
driver on some Matrox cards. And I originally bought such a beast for that
reason amongst others. But syncfb is very tricky to set up, not suported
anymore, and only works with certain versions of the kernel, compiler,
xfree etc. And even after that I never could get it to give me the correct
amount of overscan and precise refreshrate at the same time, while feeding
1024x768/75Hz to the beamer for one setup and 800x600/50Hz to the TV for
another.
Also I never did get it to sync 100%. It always kept dropping or repeating
frames, the best run ever was about 10 minutes without an error, even
though CPU load was only 10-20%. And I am picky about these things, I do
accept a single hickup for a layerchange (and preferably not), but if
there is a single frame error, judder, jitter, micro-whatever in the
image during any other part of a two hour movie the solution goes down
the drain and I try again. As said before, any 50 euro hardware box can
do it and I certainly ask no less of a HTPC costing 20 times as much.
Exit linux, enter XP Professional. I don't love their user interface,
I dislike their politics, I loathe most of their API's, but there is
some very nice software written for their OS...
So I installed Zoom Player to get 100% control over filters, Sonic
Cinemaster for the mpeg2 decoding, and FFDShow to scale the
final image to my projector resolution. AC3Filter is used to pass
audio through to the SPDIF output to my external Dolby/DTS decoder,
Reclock to get framesyncing to the video card, and Powerstrip to
get 100% control over video card timings.
It all works like a charm, and video on the beamer looks better than
any standalone solution (for the same price that is, you can't afford
a high-end DVD player plus a Faroudja based scaler for the price of a
HTPC).
In fact the only new problem is that this setup can play HD demo's, and
now I've seen them on my projector even my Superbit DVD's start to look
a bit shabby. I'm afraid I'll have to replace some DVD's by Blue-ray
discs in the future...
But how to run the ETV backend? I experimented a lot with the new DirectShow
API, IMO one of the better API's Microsoft ever invented. Unfortunately
it's processing ended up being too slow to get ETV running both recording
and playing on the same machine up to my standards. Nice though they
integrated universal teletext support, one of my big problems with ETV on
the OS seemed to have disappeared. Until I found out it was impossible to
grab multiple pages to record all subtitles at the same time. Close but
no cigar...
Finally I gave Showshifter a swing once more to see what was possible.
But even that nice program could not timeshift with anywhere the same
resolution as ETV under linux on the same hardware. So I knew I had to
go back to linux - at least for the ETV backend.
Exit XP for everything, enter multiboot. I repartitioned, added Mandrake (I was fed up with the build time it took installing and maintaining Gentoo, my previous distribution), and currently I am busy getting ETV frontend and MySQL to run again with the same recordings and database on both OS'es on the same machine. And to autoboot into linux whenever a recording is scheduled (to run the ETV backend).
There you have it, all in all a lot of time wasted these last few months. Whenever I get it all working with dualboot again I'll start developing new features if I feel like it, so have a look at this site once a while...
Things have been extreemly slow lately, with personal life taking
priority to ETV. Another reason is that I have waited for a particular
masty bug to be fixed (total lack of audio on some systems).
Unfortunately it happened to be a very stubborn one, so it will have to
wait and beta 6 is hereby duly presented...
Expect this release to have bugs, I just can't find the time to dive
into them but wanted to show some progress to everybody who was waiting
for a new release.
An overview of the new stuff:
- Internal unicode processing. This means all EPG text will correctly show all those accented characters, and entering them with a keyboard is possible (if your system is set up correctly) to set up rules or descriptions correctly in your native language and character set. Alphabetic sorting is not correct yet, but this is out of my hands and will be solved with the next release of MySQL server.
- ETV now respects both a maximum diskusage to be used, and a minimum diskspace to keep free. If more is needed old (hidden) deleted recordings will be removed first, and recordings markes 'wipeable' next.
- A new telephone-pad like tool can be used with a remote to enter alpha characters with the digit-keys of a remote.
- The frontend can be used as a commandline player to quickly view an ETV-recorded file without having to import it into the database first.
- The patched SDL library used by ETV is now a statically linked copy local to ETV. This avoids conflicts with package based distributions.
- Some bugs were fixed, one especially worth mentioning: a lot of BT8x8 cards/drivers were dropping every second frame (symptom: backend reporting over 10 framedrops per second with CPU-load nowhere near 100%). For all cases reported this has been solved.
As promised: beta 5...
Most interesting new matters:
- Makefile now has install and uninstall targets.
- Estimated & real recording filesizes shown under linux
- Smoketest 'manual' included to get acquainted with ETV and put it through its paces.
- Frontend can now be used as quick commandline player for any files ETV has recorded.
- Spanish & (preliminary) French translation finally included.
- Lots and lots of bugfixes big and small.
Just some quick info for now. Beta 4.2 (or maybe beta 5?) is on its way. Mostly some wrinkles are ironed out of the scheduler, and there will be a 'make install' and 'make uninstall'. Besides that there will be some more international support.
I'll try to get the beta out next weekend (10th of April).
Beta 4.1 released. Just a quick bugfix with:
- Nasty bug fixed (introduced with internationalisation in beta-4) which only correctly activated the buttons in video-editmode after ETV had played past any marker in any file.
Beta 4 released. Bugfixes and some new features:
- Fixed DaylightSavingsTime again.
- Fixed a lot of issues with the scheduler. Most were exceptions not handled correctly, like restarting after killing both master and backend while recording, starting a recording while watching LiveTV on a very fast PC, and scheduling very short (< 5 minutes) recordings.
- Added a video-overlay testtool. It shows you clearly if your system is able to provide the hardware acceleration ETV needs.
- Added internationalisation for the frontend. Currently Dutch is included, Spanish and German are in the making. Anyone game for French?
- Fixed multi-segment recordings. For everyone who is using ETV instead of playing with it, and making 5Gb recordings...
- Added documentation how to get lirc (IR remote control) working with ETV.
- Replaced the subtitle screenshot with a real grabbed example.
Thanks, Murphy... Beta 3.1 was missing the doc-directory, I released beta 3.11 to correct this. No other changes were made.
Beta 3.1 released, this contains mostly bugfixes small and some big (scheduler was broken, screenlistings were often not refreshed). A few new things were introduced:
- All frequency grids as supported by xawtv were added. SECAM support should work, only I don't know anyone yet who can confirm or deny this.
- The importscripts now communicate with MySQL and with the master. This means the import of station- and programdata is simplified to running a single script.
- Upgraded to SDL-1.2.7. This solves compiling issues with newer ALSA versions.
I also updated the website text in a lot of places to refect the current status, it was running behind somewhat. New is the FAQ section (partly really FAQ, partly disguised User Manual for those who only want to read FAQs :-)
Beta 3 released. Most important changes:
- Fixed issues with 24-bit X modes. AFAIK acceleration now works on all 16 & 24 bit modes.
- Added (fine-)tuning of stations with visual feedback.
- DirectX on windows now supports hardware acceleration, both for MSVC and MinGW compilers.
- Added forced 2x and 1x scaling modes to make software scaling more usable on low-power frontends.
- Added possibility to directly enter Teletext subtitle-pagenumbers.
- Moved all heavy database processing (rulematching, categorymatching, conflictdetection) to the master, changed all lists in the frontend to only reload when changed. Together this minimizes MySQL traffic between frontend and server.
There is some code in there for a new RecServer, which will allow access to remote recordings. This is only alpha-quality for the moment, but should not interfere with normal use of ETV.
Beta 2.1 released. Thanks to feedback some bugs were fixed which did not show up on my installation. Most important:
- Fixed some issues related to building/running ETV as a non-root user.
- Fixed issues with access to MySQL ETV-database. Mostly related to differences between Windows versus Linux, pipes versus sockets, and local versus remote. I think everything should work now, with newly added support for root-passwords without hacking the scripts yourself.
- Some improvements in importing both xawtv data and xmltv data (Thanks Marcel!).
The second beta has arrived. Naturally I had to change the fileformat (Thanks, Murphy ;-) so I included an upgrade utility. Major changes:
- Added a 40 page User Manual for the frontend (Open-Office format, PDF will follow).
- Started to make ETV filesize and disksize aware. Used & expected recordingsizes are displayed, and the schedulelist shows for each entry how much free space will be left after it has been recorded.
- Made ETV fully functional with a remote lacking red/green/yellow/blue menu buttons or even digit-buttons.
- Lots of small user-experience improvements.
- Lots of bugfixes.
Finally here it is: Beta 1. Don't expect miracles, it's more to say that I consider this a major milestone on the road to full usability and stability.
A lot of stuff can - and will - still change, but from now on all recordings made with ETV will be playable in (or convertable to) future versions.
The big changes from alpha 9:
- Teletext subtitle support. The recorder adds all subtitles found to the recording, and on playback a reserved remote key (the teletext key preferably) lets you toggle through all subtitle pages available. The future might include text-search facilities, for now it is just a hearing or translation aid. The screenshots show a dummy example of the way the captions are shown.
- Reworked & tested all windows build-instructions for both MSVC and MinGW compilers.
A new alpha: Alpha 9. This might be something of a landmark. If this is doing all I hope it does, the recorder & player source will be frozen except for bugfixes, meaning the next version will be a beta. From then on I will make sure all old recordings made with previous betas will be playable in (or convertible to) newer releases.
A shortlist of the major changes:
- New module to find programs based on a word from their title, see the screenshots for the interface.
- The indexes have changed to include all frames, not only the keyframes. The player now consistently uses the index for all movement - except for normal speed playing - thus a lot of special case code was removed. This in turn made the player a lot more stable and easier to debug.
- Many smaller changes not directly visible. Partly targeted at creating a better user-experience, partly bugfixes. See the change-doc.
The new alpha: Alpha 8.
This is not all I had hoped for (mainly because real life got in the way...), but I guess some of you have been waiting long enough for something new to play with. Major changes are:
- Improved (I hope) syncing of audio/video. Extra attention has been paid to slow backends or backends on slow networks. Previous versions were not usable over NFS, this alpha is the first one I could run with the frontend and backend only connected by NFS while watching liveTV. (I did introduce some audio-ugliness. Best results are for audio-codec 'raw', don't use mp2/mp3 for the time being.)
- Basic export functionality is in place. This export respects cut/mark points, no recompression yet. See the screenshots for more info.
- Added some helptexts on screen for filling in fields, and some validation is done during and/or after entering data. Again, see the screenshots.
- Some tiny and not-so-tiny uninteresting bugfixes, cosmetic changes and usage changes. See the change-doc for those.
No release yet. I have been installing a new (Gentoo) machine at home to use as a frontend, and otherwise have been busy with loads of things not ETV-related.
By the way: if anybody out there is trying to get ETV working I'd like to get some feedback on what issues you run into.
For the next release I will implement no special video/audio related improvements, it will mostly be tiny GUI improvements. Mostly concerning he use of forms: adding visual and textual hints (to help with input), and some errorchecking on fields. For instance a integerfield will be used for integer input instead of abusing a normal textfield.
One other issue I am working on is multi-machine setups. I am finally testing this for real over NFS, and naturally discovered some syncing issues. Nearly everything is resolved, but it is still not as stable as running everything on a single machine.
Stay tuned.
Just released a quick fix: Alpha 7.1. Nothing major changed, just a nasty bug removed which made the alpha-7 version more or less unusable for an initial install.
The new alpha: Alpha 7. Main improvements:
- Audio output now uses SDL. This finally means the Windows frontend is usable with both video and audio.
- Audio/Video sync overhauled. Not flawless yet, but on my system very watchable.
- Added arranging of recordings into user-created folders. This is only for conveniance and is not related to the file location on disk. See this screenshot for an example.
- Continued implementing audio codec support. It is now stable enough to have changed the default audio codec to mp2 instead of raw.
No new alpha yet, I hope to get that fixed soon. I had to make some changes to SDL to have it report back the audio position for synchronizing, and I have to adopt the build-process of ETV to use a patched local copy of the SDL library.
This will probably take me a few days, as I'm busy overhauling my computer setup. I am upgrading all my machines to gentoo, and moving the TV-in and TV-out card to a new Athlon-2400 120Gb box (which is going to be placed in the livingroom for real-life usage).
Yet again a new version, Alpha 6. But to be honest I messed around with so much stuff that even though I added some big improvements it is maybe not as usable as the previous alpha...
Biggest problem at the moment is the total lack of audio-synching. I switched to SDL for the output of sound, which bought me multiplatform support and finally got sound working under Windows, but at the same time I had to drop my previous sound-synching scheme. As that was very immature anyway I don't mind, but now ETV sometimes drifts so much I can't even watch a 30 minute program without pausing every few minutes (which re-syncs the audio as a side effect). Well. Everything will be ok again next alpha, but I just wanted to show some progress for those interested.
Here is a short list of the mayor improvements:
-
Changed frontend audio layer to use SDL. Basically this means
ETV now supports all systems SDL knows, so this finally got
sound going under Windows. Downside is that audio/video syncing
broke and still has to be re-implemented from scratch.
Upside is that this paves the way for a Mac version. Anybody game? - Basic skinning support. No control (yet) over program-drawn elements, but all images can be replaced.
- Resizing support. ETV now runs happily at 640x480 and 600x800, but also at 1048x200 if you ask it to. All images are scaled, from whatever resolution the skin was developed for, to the one used.
- Audiocompression using the libavcodec codecs. The recording profile selects which codec will be used, in the future it will also set some of its tuning parameters.
By the way: see the screenshots for a demo of the new skinning & sizing functionality.
Alpha 5 has been released. Major improvements are:
-
Added editing mode to set markers and cutpoints. Up/down while
playing a recording jump to the next/previous marker and begin/end.
If a cutpoint is reached while playing ETV automatically jumps to
the next marker.
Have a look at the screenshot of the edit interface. - Handful of bugfixes.
- Playing video (non-hardware-accelerated) under Windows now works. Audio is still on the todo-list.
And to anyone out there playing with this stuff: feel free to email remarks, bugreports, ideas, complaints or cries for help...
- Finally a public release: see the brandnew Downloads page. It is still an alpha as some kinks have to be removed before I consider it a beta.
- Website overhaul. Thanks to Open Source Web Design at oswd.org for the template :-)
- ETV is going to be multi-platform for real. The frontend and master
now run for 95% and 100% under Windows. Both MinGW and MSVC are
supported. The backend will probably never run under Windows unless
DirectX hands me a TV-API on a silver platter...
Don't misunderstand this news though: ETV is a fullscreen application meant to be controlled with a remote, or with a keyboard if no remote is available. ETV is far from a 'normal' windows-app and this is how it will remain. - Finally solved an important network-related bug on Linux. One hurdle less to beta-time...
- Finalized all speeds forward/reverse playing of keyframed codecs, including index-based seeking/skipping. This is 100% transparent to the user, but it means ETV now supports flawlessly speeds forward/backward from 1/8 to 2048x (if your disk & OS can seek that fast).
- Stations up/down is finished. Also I added a perl-script to import stations from xawtv (including finetuning offsets!). This was one of the final tasks before public beta time, so expect a beta soon :-)
- Found out I forgot to upload the 1 July update to the provider :-(
Anybody looking for progress here was probably disappointed... - Second alpha has been distributed. I estimate there might be one more
alpha, then it is public beta-time.
By the way: anybody interested in an alpha just has to ask. - Added a bit of a MythTV plug on this page. They are finally tackling
some issues which makes them more Europe-compliant.
Only the scheduling will probably be designed from an US point of view, with multiple reruns on multiple channels being the most US-ic idiocrasy.
- The first alpha has been sent out to a few people. Of course it doesn't work, so at first we just have to iron out some distribution and compiler wrinkels. As the victims live in The Netherlands, Belgium, Spain, Denmark and Australia I get a good overview of regional differences as well.
- Rewrote many lines of ETV to change string and query handling from my char[] based C-background to real C++. Started letting valgrind loose on the project, so the first of many steps on the road to 'production quality' are taken.
- Handful of small updates all over the ETV page regarding design issues.
- Updated ETV todo-lists.
- Coded a lot of stuff not really meant to go into the first alpha, but hey,
this is a hobby-project...
- LiveTV is now working, so is viewing running recordings.
- All the reconnection and synchronisation stuff is working. You can pull
the plug on any frontend/backend/master and for as far as technically
possible all others go on with their business, trying to reconnect
every few seconds.
- Boxes in the EPG changed to underlining now showing the actual scheduled
recording times instead of just surrounding the program they belong to.
- Thanks to a small overhaul of the database design a program can now have
multiple recordings (and each recording can be multi-file, but that is just
to avoid filesystem limits).
- By using multiple recordings and automatic reconnecting a broken
recording is salvaged by starting a new one.
For instance: start with two backends with one of them running a scheduled recording. Kill the backend from outside, the frontend detects this, closes the recording, sees there is more than one minute left to record, creates a scheduled recording for the remainder of the time, discovers it has a scheduleded recording (the one it just created), fires up the first backend available (while halting any lower-priority recording if needed).
- As a side-effect of the recording-salvaging, conflicting recordings will lead
to multiple partial recordings (Phew... :-)
In normal English: if you have a big sportsmatch scheduled by a rule, with on another station a short favorite cartoon in the middle of it scheduled by a higher priority rule, you will end up with two parts of the sportsmatch (before and after the cartoon) and the complete cartoon. That is: for a single backend naturally...
All in all the above means tuner support still has to be added for the first alpha...
- Added a new design-goal: system should also support FLOF keys in all menus
(red/green/yellow/blue shortcut keys on all remotes). This means
all main menus will be restricted to four options.
This navigation method is additional to the current options (cursor/enter or direct selection by number). - Colorcoding of the EPG is mostly finished.
The cell background color is related to the category (available list of colors is kept in the database, the user can choose a color for a specific category). The border color relates to the state regarding scheduling/recording (just a few fixed colors).
An updated screenshot is here. - The scheduler is implemented
It is stupid, but mimics inteligence:
- Manually entered programs take preference over marked programs in the EPG, who take preference over automatically selected programs (based on the rules).
- For automatically selected programs the one with the highest rule-priority will be recorded
- For overlapping recordings of equal priority, with only under/overrun overlapping, the overlap time is divided over the two programs relative to the under/overrun requested by them.
Example: program A ends at 16:00 overrun 30 minutes (ending at 16:30). Program B starts at 16:20 underrun 10 minutes (starting at 16:10). Conflict exists only in the underrun/overrun period (16:10-16:30). Switchover of recordings will automatically take place at 16:15, where both recordings will have 50% of their requested overrun/underrun. (A will have 15/30=50% and B will have 5/10=50%).
- For overlapping recordings with equal priority with different begintimes the earliest program will be recorded
- For overlapping recordings with equal begintimes the one with the lowest channel-sortorder will be recorded (makes sense: most people will put their favorite stations higher in their EPG listings)
- Did some internal GUI updates
The cosmetics are now a bit more consistant and a bit faster)
Most important is that a gui-element now by default basically has the same color for non-focus and focussed mode, but alpha blending is 50% versus 100%, while in focussed mode a 2-pixel border is drawn around the cell.
From an ergonomic point of view this means the information given by colorcoding survives while the cell has focus. This is for instance used to show conflicts while scheduling, and colorcoding of categories in the EPG
Clearly a case of a picture saying more than a thousand words... - Some minor corrections on the site, added my email-adress again... (Thanks, Morten ;-)
- Added some very premature ETV screenshots to show curious visitors
the implemented functionality.
- Added a preliminary roadmap for the public releases. No dates though, so it's a roadmap to nowhere...
- Started this site as a ETV-specific site
- Started this site to centralize MythTV peculiarities for European users.