Greg
Setting up a system as a video recorder
Greg's diary
Greg's photos
Greg's links
Greg's home page
Google

This page describes the fun I have had setting up a computer as a video recorder. This appears to be the same as what is often called a “PVR”, which I think stands for “Personal Video Recorder”. I find that term silly: what's personal about it? The interesting distinction is between other form of video recorders, such as tape-based (VHS, for example) or DVD-R based. These are neither more nor less personal than a computer based video recorder. Since we need abbreviations, I'm calling mine a “Computer Video Recorder” or “CVF”.

This page will be a mess for a while; it's currently more a place to keep my thoughts than a good description of how to implement a CVR.

Saturday, 18 September 2004

Started building a CVR machine. Basic hardware and software are:

Which software?

MythTV

MythTV on FreeBSD overview page
MythTV on FreeBSD download page. I chose MythTV first simply because I had found some people on IRC who use is. Installation on a virgin system proceeded like this:
  1. Install the Xorg X packaged.
  2. Unpack the MythTV tarball to /usr/ports/multimedia/mythtv/ and try to install. After a lot of dependencies, it died:
    c++ -c -pipe -Wall -W -O3 -march=pentiumpro -fomit-frame-pointer `freetype-config --cflags` -fPIC  -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -DPREFIX=\"/usr/local\" -DMMX -DUSING_IVTV -DUSING_XV -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/local/share/qt/mkspecs/freebsd-g++ -I.  -I/usr/local/include -I../libmyth -I..  -Idvbdev -I../libavcodec -I/usr/local/include -I/usr/X11R6/include -o RTjpegN.o RTjpegN.cpp
    RTjpegN.cpp: In member function `int RTjpeg::b2s(int16_t*, int8_t*, uint8_t)':
    RTjpegN.cpp:136: error: ISO C++ forbids cast to non-reference type used as lvalue
    RTjpegN.cpp:145: error: ISO C++ forbids cast to non-reference type used as lvalue
    RTjpegN.cpp:174: error: ISO C++ forbids cast to non-reference type used as lvalue
    RTjpegN.cpp:186: error: ISO C++ forbids cast to non-reference type used as lvalue
    RTjpegN.cpp:203: error: ISO C++ forbids cast to non-reference type used as lvalue
    RTjpegN.cpp:224: error: ISO C++ forbids cast to non-reference type used as lvalue
    RTjpegN.cpp:234: error: ISO C++ forbids cast to non-reference type used as lvalue
    RTjpegN.cpp:241: error: ISO C++ forbids cast to non-reference type used as lvalue
    *** Error code 1
    
    Stop in /src/FreeBSD/ports/multimedia/mythtv/work/mythtv-0.15/libs/libmythtv.
    *** Error code 1
    

    Looking at the code was edifying:

     /* ci must be 0 */
     if(bitoff != 6) {
    
          (uint8_t)strm[co]= bitten; 
          co++;
         
     }
     goto BAUCHWEH;
    
    HERZWEH:
    

    I wonder how that ever worked. In any case, fixed it and at least got it to compile.

  3. Talking on IRC suggested that I should first install some other ports (so why aren't they dependencies?). This is when I learnt of the MythTV on FreeBSD overview page.
  4. As suggested in the FreeBSD overview page, installed MySQL server and the updated textproc/p5-xmlt ports.
  5. Return to building the MythTV port. The same problems crop up (as you'd expect). Removed the casts and tried again.
  6. Finally it builds.

Configuring

MythTV comes with a setup program called mythsetup. You'd think it is more like mysterysetup: when you run it, it creates a full-screen window which swallows the mouse cursor and which doesn't respond to most keys. In fact, you need the space bar and the cursor keys (which it sometimes uses to move in the opposite direction).

Video tuner card

I'm currently using a low-end BT 878 card, and it seems that MythTV doesn't really expect that. I'm still working on that, but the documentation suggests that any card supported by X4L (Linux) should work. That doesn't help much, of course. FreeBSD has a kld called bktr which handles these cards, and which recognizes them:
bktr_mem: memory holder loaded
bktr0: <BrookTree 878> mem 0xdddfe000-0xdddfefff irq 17 at device 6.0 on pci0
bktr0: [GIANT-LOCKED]
bktr0: Unable to allocate 1310720 bytes of memory.
bktr0: Unable to allocate 3555328 bytes of memory.
bktr0: Card has no configuration EEPROM.  Cannot determine card make.
bktr0: Pinnacle/Miro TV, Temic PAL I tuner.
The memory allocation errors look ominous.

Display card

The Xorg server recognizes the card without problems and builds a configuration file that shows only one output. Some others, noticeably Daniel O'Connor, have reported success with the Nvidia drivers, so I installed them (/usr/ports/x11/nvidia-driver). After installation, Xorg generates exactly the same configuration file as well. Reading the instructions (notably README and README.Linux) helped, and rather to my surprise, I was actually able to get it to run two displays under X after applying the following changes:
--- xorg.conf.orig      Sun Sep 19 20:48:58 2004
+++ xorg.conf   Sun Sep 19 21:27:57 2004
@@ -1,6 +1,7 @@
 Section "ServerLayout"
        Identifier     "X.org Configured"
-       Screen      0  "Screen0" 0 0
+       Screen      0  "Screen0"
+       Screen      1  "Screen1" rightOf "Screen0"
        InputDevice    "Mouse0" "CorePointer"
        InputDevice    "Keyboard0" "CoreKeyboard"
 EndSection
@@ -42,11 +43,21 @@
 EndSection
 
 Section "Monitor"
-       Identifier   "Monitor0"
+       Identifier   "Alfaskop"
        VendorName   "Monitor Vendor"
        ModelName    "Monitor Model"
+       HorizSync    31.0 - 36.0
+       VertRefresh  50.0 - 160.0
 EndSection
 
+Section "Monitor"
+       Identifier   "TV"
+       VendorName   "Monitor Vendor"
+       ModelName    "Monitor Model"
+EndSection
+
+# Primary monitor for, well, monitoring.
+# Connect a low-res monitor such as the ancient alfaskop to this one.
 Section "Device"
         ### Available Driver options are:-
         ### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
@@ -64,7 +75,7 @@
         #Option     "NvAGP"                    # <i>
         #Option     "IgnoreEDID"               # [<bool>]
         #Option     "NoDDC"                    # [<bool>]
-        #Option     "ConnectedMonitor"         # <str>
+        # XXX Option     "ConnectedMonitor"  "CRT, TV"         # <str>
         #Option     "ConnectedMonitors"        # <str>
         #Option     "TVStandard"               # <str>
         #Option     "TVOutFormat"              # <str>
@@ -105,17 +116,29 @@
         #Option     "XvMCUsesTextures"         # [<bool>]
         #Option     "HorizSync"                # <str>
         #Option     "VertRefresh"              # <str>
-       Identifier  "Card0"
+       Identifier  "Control"
        Driver      "nvidia"
        VendorName  "nVidia Corporation"
        BoardName   "Unknown Board"
        BusID       "PCI:1:0:0"
+       Screen          0
+EndSection
+
+# Second device: TV
+Section "Device"
+       Identifier  "Video
+       Driver      "nvidia"
+       VendorName  "nVidia Corporation"
+       BoardName   "Unknown Board"
+       BusID       "PCI:1:0:0"
+       Screen          1
 EndSection
 
 Section "Screen"
        Identifier "Screen0"
-       Device     "Card0"
-       Monitor    "Monitor0"
+       Device     "Control"
+       Monitor    "Alfaskop"
+       DefaultDepth 24
        SubSection "Display"
                Viewport   0 0
                Depth     1
@@ -139,6 +162,20 @@
        SubSection "Display"
                Viewport   0 0
                Depth     24
+               Modes   "640x480" "800x600"
        EndSubSection
 EndSection
 
+Section "Screen"
+       Identifier      "Screen1"
+       DefaultDepth 24
+       Device     "Video"
+       Monitor    "TV"
+       Option "ConnectedMonitor" "TV"
+       Option "TVStandard" "PAL-B"
+       Option "TVOverScan" "1.0"
+       SubSection "Display"
+               Depth     24
+               Modes   "800x600"
+       EndSubSection
+EndSection

Later installed mplayer on teevee. Installation went OK, but getting it to run is a different matter. As in the past, I had trouble. Display across the network is impossibly broken, and for some reason I couldn't get it to work at all on the local (monitor) display :0.0. The message was:

SwScaler: using unscaled Planar YV12 -> BGR 8-bit special converter
BGR not supported, please contact the developers
FATAL: Cannot initialize video driver.
FATAL: Could not initialize video filters (-vf) or video output (-vo).

After a fair amount of discussion on IRC, and with help from google, found out the problem: this is mplayer's inimitable way of saying “I can't use an 8 bit display”. After setting the default depth for the display to 24 bits, it worked fine. What a pain! The diffs above include setting the default bit depth (for Screen0).

Friday, 31 December 2004

Daniel O'Connor has been writing or collecting some software too. Here's his frame grabber software. It's not clear how much (if at all) he has changed it.

Friday, 25 February 2005

Spent some time trying to copy some DVDs. They had been recorded on my flaky Digitrex DVD recorder, and it couldn't play them back. I had already noticed that computers did a better job, and mplayer on FreeBSD plays them with no problems beyond its emetic user interface.

Today I decided to play them in the Apple—after all, that's what it's supposed to be good for. It's always difficult to guess what to do to play something, since there's no documentation, and obviously I don't have any “intution”, but after a while it became clear that there was no DVD player software installed on the machine. Finding out why that was so, and what to do about it, was a nightmare.

The pitiful excuse for documentation told me that it was installed automatically if the hardware was present, and how to detect if a DVD drive was connected to the machine. In the latter case, you'd expect the instructions to read “examine the drive and see what's written on it”, but instead I was taken through a maze of twisty little menus, all different, with the intention of finding whether the system thought it did in fact have a DVD player. The instructions didn't go as far as to say how you could tell, but everything seemed to indicate that the system did in fact agree that the hardware was installed.

OK, then, it should be simple enough to find the package and install it—I thought. In fact, another tiring search of the installation media showed nothing obvious; later somebody pointed out that it was in the directory "//Volumes/Mac OS X Install Disc 1/System/Installation/Packages/Essentials.pkg" (how I hate these stupid file names with spaces in them!). Tried to install that, but since I had in the meantime upgraded the system, it refused to install. Somebody sent me a “Stuffit” (what an appropriate name!) archive, but for some reason there was an incompatibility there, and I couldn't install it. After three hours I gave up. Apart from being incredibly frustrating, I'm always left wondering whether the problem is with the Apple machine or with me: millions of customers can't be wrong. I suspect that a generation of using menu-driven software has taken its toll, and vendors expect you to understand it, like they expect you to be able to read and write. It's a pity, though, that they've chosen such a horribly difficult and hard to use paradigm.

Sunday, 27 February 2005

What a day! All I wanted to do was to play a DVD on some computer. I failed.

First I continued with the Apple. Since I couldn't find a way to install the Apple DVD player program, installed VLC instead—once I had worked out how to do that. The instructions suggest that you drag part of the archive into the /Applications directory. It took me 5 attempts to get it to go there. When I did, I couldn't work out how to start it. It seems it hides some stupid image in the “task bar” at the bottom of the screen, and some undocumented mouse click brings it to the foreground. When I did, I couldn't get it to recognize the DVD (“no DVD present”; is it talking about the medium or the drive?). Inserting a pre-recorded DVD caused a delay (and no indication that anything was going on), followed by the disk being ejected. After searching in the the help, found a hidden menu to specify the action to take on DVD insertion, and set that to start VLC. No difference. Round about now I decided that there might be something wrong with the DVD drive, but it mounted data DVDs perfectly. Removed the drive and took at look at it: “Macintosh PowerBook G3 Series 2X DVD-ROM Module”. My best guess now is that the drive really doesn't support video DVDs, but there's nothing in the appalling excuse for documentation that mentions this possibility.

While working with the Apple, also upgraded to the latest version of MocOS X. In the process, it disabled my uControl keyboard remapping, not that that was so serious: it works very badly, leaving the Control key locked on after pressing. The result is that the next time I type a d at the beginning of the line, the terminal window disappears. But now it didn't do anything: it had been disabled and refused to load. It did offer to find a new version for me, and told me, yes, there is a new version. No offer, help or instructions to replace the version. I'm continually baffled by how bad this stuff is.

Gave up on Apple and tried installing VLC on eucla, my FreeBSD laptop. Once again ran into this bug:

automake15: configure.in: installing `./compile'
autom4te259: cannot lock autom4te.cache/requests with mode 2 (perhaps you are running make -j on a lame NFS client?): Operation not supported
I had seen that before. It means that you have to install from a local disk. After that, got it installed, but when I started it, I got a whole series of this kind of error message:
VLC media player 0.8.1 Janus
(:7025): GLib-GObject-WARNING **: cannot register existing type `PangoEngineShape'
** (:7025): CRITICAL **: file pango-engine.c: line 86 (_pango_engine_shape_covers): assertion `PANGO_IS_ENGINE_SHAPE (engine)' failed
Reinstalled pango, after which the program started with the following message and empty menus:
libdvdnav: Language 'en' not found, using '' instead
libdvdnav: Menu Languages available:  
At this point, decided that Linux might be better. Tried booting eucla under Linux: I had installed Fedora Core 2 on it last August, but now it wouldn't boot with some obscure error message. Since there had been problems with the X configuration anyway, decided to install Fedora Core 3. The first time tried an upgrade, with the result that, after nearly an hour, the reboot failed with a “Kernel Panic”—where do they get that name from? It looks more like a kernel halt to me, with no information about where it happened. Did a clean install and was rewarded by X still not being able to recognize the hardware. I have no idea why: the same software installed out of the box on FreeBSD last July.

Gave up on Linux and returned to FreeBSD. It was fairly obvious that some of my ports were out of date. Running portupgrade did nothing useful, so with the help of pkg_info -r found the dependencies (all 74 of them!) and removed them, then started reinstalling them. By the time I went to bed I had got as far as multimedia/ffmpeg:

texi2html -monolithic -number ffmpeg-doc.texi
env: perl: No such file or directory
gmake[1]: *** [ffmpeg-doc.html] Error 127
Just a missing dependency. But it's really getting beyond a joke just trying to build ports nowadays.

Monday, 28 February 2005

The Apple DVD player problem has a solution. Spoke to the bloke who sold it to me on IRC:
-> *vendor* I'm having difficulty playing DVDs on the PowerBook.  Any ideas?
*vendor* I think you'll need to be running OS9 for DVD playback - at least that was the
         only way I could make it work
-> *vendor* Hmm.  Interesting.
*vendor* The PB has hardware accelleration for DVD decoding but Apple only elected to
         support it under OS9
-> *vendor* Ah.
-> *vendor* Nice for them to document that, isn't it?
*vendor* I didn't use it much, ended up getting a "real" DVD player
* -> vendor: groggy notes that Apple doesn't seem to think much of documentation anyway.
*vendor* Yes, it's one of those documented by omission sorts of things
-> *vendor* OK, I'll give up then.
-> *vendor* In general, I find MacOS X to be impossibly badly documented.
*vendor* Sorry, I didn't think to mention that at the time
*vendor* (DVD playback, not OSX documentation :)
-> *vendor* No worry.  It serves its purpose.
*vendor* Yeah, it is a bit light on for a "power" user
* -> vendor: groggy notes that some purposes are to be a bad example.
OK, this is an old machine (4 years), so this is all water under the bridge. I suppose it upset a number of people at the time, though. But, as I said on IRC: the documentation, such as it is, doesn't mention the possibility that some DVD drives are not supported under MacOS X.

Saturday, 5 March 2005

Managed to take it easy again today and watch some DVD+RWs (on a DVD player). The recording quality was marginal, and it reminded me that I still can't watch a DVD on any of my machines. Tried it with eucla, on which last weekend I had installed Fedora Core 3. In the meantime I had got X to work, so followed up on Tim Stoakes' suggestion that yum would do a better job of handling dependencies. It didn't get that far:
# yum install emacs
Traceback (most recent call last):
  File "/usr/bin/yum", line 8, in ?
    yummain.main(sys.argv[1:])
  File "/usr/share/yum-cli/yummain.py", line 51, in main
    base.getOptionsConfig(args)
  File "/usr/share/yum-cli/cli.py", line 133, in getOptionsConfig
    self.conf = yumconf(configfile = yumconffile, root=root)
  File "/usr/lib/python2.3/site-packages/yum/config.py", line 227, in __init__
    self._doFileRepo(fn)
  File "/usr/lib/python2.3/site-packages/yum/config.py", line 299, in _doFileRepo
    doRepoSection(self, repoconf, section)
  File "/usr/lib/python2.3/site-packages/yum/config.py", line 313, in doRepoSection
    mirrorurls = getMirrorList(mirrorlist)
  File "/usr/lib/python2.3/site-packages/yum/config.py", line 390, in getMirrorList
    fo = urlresolver.urlopen(url)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 427, in urlopen
    return default_grabber.urlopen(url, **kwargs)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 555, in urlopen
    return self._retry(opts, retryfunc, url)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 527, in _retry
    return apply(func, (opts,) + args, {})
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 554, in retryfunc
    return URLGrabberFileObject(url, filename=None, opts=opts)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 703, in __init__
    self._do_open()
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 747, in _do_open
    fo, hdr = self._make_request(req, opener)
  File "/usr/lib/python2.3/site-packages/urlgrabber/grabber.py", line 823, in _make_request
    fo = opener.open(req)
  File "/usr/lib/python2.3/urllib2.py", line 326, in open
    '_open', req)
  File "/usr/lib/python2.3/urllib2.py", line 306, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.3/urllib2.py", line 491, in <lambda>
    lambda r, proxy=url, type=type, meth=self.proxy_open: \
  File "/usr/lib/python2.3/urllib2.py", line 498, in proxy_open
    if '@' in host:
TypeError: iterable argument required
This is on a machine with nothing special done to it. I wonder what causes that. In any case, after over a week I'm still no closer to watching DVDs on a computer.

More cooking in the evening. Tried a recipe for crispy oil-dripped chicken, but it didn't quite turn out the way I had intended.

Sunday, 6 March 2005

Five years today since I joined Linuxcare! Times have certainly changed.

Did some more investigation of the problems I had been having with yum yesterday. After some googling, it seems that it was related to the environment variable HTTP_PROXY. It seems that yum will talk to a proxy if it's set. That's a hell of a way to report an error with the proxy, though.

Reset that and I got a different error message:

=== root@naan (/dev/pts/2) /src/BLFS/Blockpool/trunk/blockpool 58 -> yum install emacs

You have enabled checking of packages via GPG keys.  This is a good thing. 
However, you do not have any GPG public keys installed.  You need to download
the keys for packages you wish to install and install them.
You can do that by running the command:
    rpm --import public.gpg.key
For more information contact your distribution or package provider.
Again, no information about where to look for help. After some searching I discovered a file /etc/yum.conf with the following line in it:
gpgcheck=1
That seeemed straightforward enough, so I commented it out. No change. Changed 1 to 0. No change. Then I found a directory /etc/yum.repos.d with lots more files, many with the same line. I suppose that's where I should be loading the public key, but I couldn't be bothered. Commented them out and I was finally able to start my install of Emacs: The problem is, I already had Emacs installed, and yum didn't seem to notice. Not only that, like the Sorcerer's Apprentice I found that it insisted on continuing no matter what I did. Hitting ^C only provoked it to retry: I had to kill the window to stop it. Strangely, though, it didn't happen when I tried the same thing on a different system running Fedora; the difference may be that the first one was running GNOME.

The problem is, I couldn't install vlc like that:

=== root@eucla (/dev/pts/6) /src/Linux/tarballs/vlc 5 -> yum install vlc
Setting up Install Process
Setting up Repo:  base
repomd.xml                100% |=========================| 1.1 kB    00:00     
Setting up Repo:  updates-released
repomd.xml                100% |=========================|  951 B    00:00     
Reading repository metadata in from local files
base      : ################################################## 2622/2622
updates-re: ################################################## 709/709
No Match for argument vlc
Nothing to do

real    0m14.779s
user    0m3.024s
sys     0m0.367s
=== root@eucla (/dev/pts/6) /src/Linux/tarballs/vlc 8 -> 
It seems that every time you run yum you need to wait these 15 seconds before it comes up with anything of interest. Presumably the repo needs to be set up to handle this kind of installation, and VLC isn't set up. Following the instructions at that link, I downloaded the Fedora tarball and tried:
=== root@eucla (/dev/pts/6) /src/Linux/tarballs/vlc 2 -> rpm -U * --force
warning: a52dec-0.7.4-7.1.fc3.fr.i386.rpm: V3 DSA signature: NOKEY, key ID e42d547b
warning: package libmodplug = 1:0.7-2vlc was already added, replacing with libmodplug <= 1:0.7-3vlc
warning: package libpostproc = 1.0-0.11.pre5.1.fc2.fr was already added, replacing with libpostproc <= 1.0-0.12.20041025.1.fc3.fr
warning: package vcdimager = 0.7.20-1.1.vlc was already added, replacing with vcdimager <= 0.7.20-3
error: Failed dependencies:
        libcdio.so.0 is needed by cdinfo-0.71-0.i386
        libiso9660.so.2 is needed by cdinfo-0.71-0.i386
        libcdio.so.0 is needed by libvcd-0.7.20-3.i386
        libcdio.so.0(CDIO_0) is needed by libvcd-0.7.20-3.i386
        libiso9660.so.2 is needed by libvcd-0.7.20-3.i386
        libiso9660.so.2(ISO9660_2) is needed by libvcd-0.7.20-3.i386
        libcdio.so.0 is needed by vcdimager-0.7.20-3.i386
        libcdio.so.0(CDIO_0) is needed by vcdimager-0.7.20-3.i386
        libiso9660.so.2 is needed by vcdimager-0.7.20-3.i386
        libiso9660.so.2(ISO9660_2) is needed by vcdimager-0.7.20-3.i386
        libcdio.so.0 is needed by vcdimager-libvcd-0.7.20-1.1.vlc.i386
        libcdio.so.0(CDIO_0) is needed by vcdimager-libvcd-0.7.20-1.1.vlc.i386
        libiso9660.so.0 is needed by vcdimager-libvcd-0.7.20-1.1.vlc.i386
        libiso9660.so.0(ISO9660_0) is needed by vcdimager-libvcd-0.7.20-1.1.vlc.i386
        fribidi is needed by vlc-0.8.1-1.i386
        libfribidi.so.0 is needed by vlc-0.8.1-1.i386
        libsysfs.so.1 is needed by vlc-0.8.1-1.i386
Well, that seems par for the course. So can yum help me fix these missing dependencies?
=== root@eucla (/dev/pts/6) /src/Linux/tarballs/vlc 7 -> time yum install libcdio
Setting up Install Process
(usual messages and 15 second delay omitted)
No Match for argument libcdio
Nothing to do
Say what Tim will, yum doesn't seem to be even a useful tool in solving dependency issues; maybe better documentation will help there. Instead, took a look at the Rpmfind.net site and found a number of packages. But they still need to be installed :
=== root@eucla (/dev/pts/6) /src/Linux/tarballs 13 -> rpm -i libcdio-0.70-1.i686.rpm 
warning: libcdio-0.70-1.i686.rpm: V3 DSA signature: NOKEY, key ID e01260f1
=== root@eucla (/dev/pts/6) /src/Linux/tarballs 14 -> rpm -U vlc/*rce
warning: vlc/a52dec-0.7.4-7.1.fc3.fr.i386.rpm: V3 DSA signature: NOKEY, key ID e42d547b
warning: package libmodplug = 1:0.7-2vlc was already added, replacing with libmodplug <= 1:0.7-3vlc
warning: package libpostproc = 1.0-0.11.pre5.1.fc2.fr was already added, replacing with libpostproc <= 1.0-0.12.20041025.1.fc3.fr
warning: package vcdimager = 0.7.20-1.1.vlc was already added, replacing with vcdimager <= 0.7.20-3
error: Failed dependencies:
        libcdio.so.0 is needed by cdinfo-0.71-0.i386
(etc)
=== root@eucla (/dev/pts/6) /src/Linux/tarballs 16 -> rpm -U libcdio-0.70-1.i686.rpm 
warning: libcdio-0.70-1.i686.rpm: V3 DSA signature: NOKEY, key ID e01260f1
        package libcdio-0.70-1 is already installed
=== root@eucla (/dev/pts/6) /src/Linux/tarballs 17 -> rpm -q libcdio-0.70-1.i686.rpm 
package libcdio-0.70-1.i686.rpm is not installed

I tried again with --force, but it made no difference. One more failure for Linux.

Finally rebooted eucla and tried mplayer again. It seems that in the last week or so I blew away a number of dependencies, but after reinstalling the latest version, it worked. Not exactly a success: I've used mplayer before, but found it to be inadequate. Still, after two weekends I can now watch my DVD, sort of.

Monday, 7 March 2005

Things have been keeping me pretty busy for the past two weeks, and today I spent nearly all the day catching up on things that I had left behind as a result. Didn't even finish.

This DVD stuff is making some progress, but it's slow. Yesterday Yvonne rented some DVDs from Blockbusters, but we had difficulty watching them: they looked like they had been used as paperweights for sandpaper. Today spent some time trying to copy them so we could watch them at all. The good news is that the DVD drive was able to read them. Burning a new DVD was more of an issue: people told me that burncd doesn't support DVDs, so I had to install the dvd+rw-tools port and run a program with the the incongruous name growisofs. First, though, it seemed appropriate to format the DVD+RW disk I was going to use with dvd+rw-format (how I hate these complicated names!). Running that was less than edifying:

=== root@teevee (/dev/ttyp2) ~ 3 -> dvd+rw-format /dev/acd0
* DVDRW/-RAM format utility by <appro@fy.chalmers.se>, version 4.10.
:-( unable to open("/dev/acd0"): Inappropriate ioctl for device
Looking at the operation with ktrace showed:
 40005 dvd+rw-format CALL  ioctl(0x3,CAMGETPASSTHRU,0xbfbfdc80)
 40005 dvd+rw-format RET   ioctl -1 errno 25 Inappropriate ioctl for device
It seems that I needed SCSI emulation, the atapicam device. Built a new kernel and booted it, but it appeared to make no difference. It seems that atapicam just adds a device to the existing one, so after installing it my DVD burner was visible as an ATAPI device at /dev/acd0 and as a SCSI device at /dev/cd0. I was able to burn a DVD+RW; but the DVD player could hardly read it at all. Back in eucla (a different machine with a different drive) I was able to read in the DVD and compare it to the original: no difference. But I couldn't play it there either. I suspect that there's some issue with the way the data is written to the DVD that makes it difficult to read. This material is really a minefield.

Tuesday, 8 March 2005

In the evening more work on multimedia. I was able to get teevee to display multihead on a TV and a monitor, not for the first time, but that was about all. For some reason, mplayer was installing without the GUI. After some experimentation with the Makefile, discovered that, though it's documented that you can use it with gtk version 2, the build doesn't support it. It doesn't complain; it just doesn't build gmplayer. While experimenting with that, discovered that this time I wasn't able to get mplayer to do its thing:
=== root@teevee (/dev/ttyp6) /home/grog 1 -> mplayer dvd://1
MPlayer 1.0pre6-3.3.3 (C) 2000-2004 MPlayer Team
CPU: Advanced Micro Devices Athlon 4 /Athlon MP/XP Palomino (Family: 6, Stepping: 2)
Detected cache-line size is 64 bytes
CPUflags:  MMX: 1 MMX2: 1 3DNow: 1 3DNow2: 1 SSE: 1 SSE2: 0
Compiled for x86 CPU with extensions: MMX MMX2 3DNow 3DNowEx SSE

Playing dvd://1.
Reading disc structure, please wait...
There are 2 titles on this DVD.
There are 22 chapters in this DVD title.
There are 1 angles in this DVD title.
DVD successfully opened.
MPEG-PS file format detected.
VIDEO:  MPEG2  720x576  (aspect 3)  25.000 fps  7500.0 kbps (937.5 kbyte/s)
==========================================================================
Opening audio decoder: [liba52] AC3 decoding with liba52
Using SSE optimized IMDCT transform
AC3: 5.1 (3f+2r+lfe)  48000 Hz  448.0 kbit/s
Using MMX optimized resampler
AUDIO: 48000 Hz, 2 ch, 16 bit (0x10), ratio: 56000->192000 (448.0 kbit)
Selected audio codec: [a52] afm:liba52 (AC3-liba52)
==========================================================================
vo: X11 running at 800x600 with depth 24 and 32 bpp (":0.0" => local display)
vo_xvmc: X-Video extension 2.2
vo_xvmc: X-Video MotionCompensation Extension version 1.0
==========================================================================
Opening video decoder: [mpegpes] MPEG 1/2 Video passthrough
VDec: vo config request - 720 x 576 (preferred csp: Mpeg PES)
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
The selected video_out device is incompatible with this codec.
VDecoder init failed :(
Opening video decoder: [libmpeg2] MPEG 1/2 Video decoder libmpeg2-v0.4.0b
Selected video codec: [mpeg12] vfm:libmpeg2 (MPEG 1 or 2 (libmpeg2))
==========================================================================
Checking audio filter chain for 48000Hz/2ch/16bit -> 48000Hz/2ch/16bit...
AF_pre: af format: 2 bps, 2 ch, 48000 hz, little endian signed int 
AF_pre: 48000Hz 2ch Signed 16-bit (Little-Endian)
AO: [oss] 48000Hz 2ch Signed 16-bit (Little-Endian) (2 bps)
Building audio filter chain for 48000Hz/2ch/16bit -> 48000Hz/2ch/16bit...
Starting playback...
VDec: vo config request - 720 x 576 (preferred csp: Planar YV12)
Could not find matching colorspace - retrying with -vf scale...
Opening video filter: [scale]
The selected video_out device is incompatible with this codec.

FATAL: Could not initialize video filters (-vf) or video output (-vo).

Exiting...  (End of file)
=== root@teevee (/dev/ttyp6) /home/grog 2 -> 
At first that looked like what happened to me last time, but on examination it wasn't the same thing after all.

What frustration! Watched the remainder of our flaky DVDs on eucla, the Dell laptop.

References


Greg's diary Greg's photos Greg's links Greg's home page
Valid XHTML 1.0! $Id: videorecorder.html,v 1.4 2005/03/08 23:22:42 grog Exp $