From 1b5567278a39ef8bac8102c74632c0747f9ca95b Mon Sep 17 00:00:00 2001 From: Miguel Freitas Date: Wed, 7 May 2003 18:45:00 +0000 Subject: some notes on network cd/dvd CVS patchset: 4796 CVS date: 2003/05/07 18:45:00 --- doc/Makefile.am | 2 +- doc/README | 3 ++ doc/README.network_dvd | 138 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 142 insertions(+), 1 deletion(-) create mode 100644 doc/README.network_dvd (limited to 'doc') diff --git a/doc/Makefile.am b/doc/Makefile.am index c402f1bfb..27eeecdc9 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -6,7 +6,7 @@ docdir = $(prefix)/share/doc/xine docs_DOCS = README README.plugins dataflow.dia README.dvb \ README.config_en README.dxr3 README.dxr3_pl README.freebsd \ README.irix README.mrl README.opengl README.solaris README.syncfb \ - README.tvmode + README.tvmode README.network_dvd install-data-local: diff --git a/doc/README b/doc/README index 9f06b08da..62932b79a 100644 --- a/doc/README +++ b/doc/README @@ -45,6 +45,9 @@ README.mrl README.plugins information about plugin concepts in xine for developers +README.network_dvd + how to play DVDs / Audio CDs over the network + man/ contains some general manpages about xine-lib diff --git a/doc/README.network_dvd b/doc/README.network_dvd new file mode 100644 index 000000000..144267440 --- /dev/null +++ b/doc/README.network_dvd @@ -0,0 +1,138 @@ + +Playing DVDs / Audio CDs over the network +========================================= + +xine can be used to play DVDs and Audio CDs over the network. + +ok, but.... why? + +there are some reasons people want to do that: + +- because you may have a 200 discs DVD changer on your garage and you + want to watch them on your room. + +- because you don't want to have a lousy cdrom driver around when + listening to your favorite music. + +- because the computer that is hooked to the TV doesn't have a dvdrom. + +- because you can :) + + +network block devices +--------------------- + +yes, network block device (nbd) could be an option for that. however: + +- they don't support ioctls which are needed for cd audio playback and +dvd key exchange. (obs: one may write a custom ioctl code for enbd) + +- a completely user space solution is more portable. + +- the user space solution can handle failures more gratefuly and gives +better control of closing/opening the device. + + +installation for audio cds +-------------------------- + +- you must compile the cdda_server.c that comes with xine-lib sources: + + xine-lib$ cd misc + xine-lib/misc$ make cdda_server + gcc -W -Wall -g -o cdda_server cdda_server.c -ldl + +- start cdda_server at the machine that has the cdrom drive: + + xine-lib/misc$ ./cdda_server /dev/cdrom 3000 + + note: 3000 is the port number to listen. + +- start xine on the client machine with: + + $ xine cdda://server_address:3000/1 + + that will play the first track of the CD. in order to use the + GUI button for "CD" you have to change the setting input.cdda_device + to point to the server. + + +installation for dvds +--------------------- + +- compile and run cdda_server (see above). + + note: you may also need to install libdvdcss or some equivalent + library on your server. + +- patch libdvdcss on the client. + + note: no CSS code is needed at all, so it would be possible to use a + kind of "dummy" dvd library that is API compatible with libdvdcss. + + a sample patch is provided for libdvdcss-1.2.6, install it as follow: + + libdvdcss-1.2.6$ patch -p1 < ../xine-lib/misc/libdvdcss-1.2.6-network.patch + libdvdcss-1.2.6$ ./bootstrap + libdvdcss-1.2.6$ make + libdvdcss-1.2.6$ make install + +- start xine on the client machine with: + + $ xine dvd://server_address:3000/ + + (don't forget the trailing slash) + + +protocol details +---------------- + +the network protocol is pretty simple. it consists of text-based commands +and replies over a TCP stream. + +command format: + + ... \n + +reply format: + + ... \n + followed by n bytes of binary data (like cd or dvd sectors) + +cdda commands: + + cdda_open + 0 + + cdda_read + + + + cdda_tochdr + 0 + + cdda_tocentry + 0 + +dvd commands: + + dvd_open + 0 + + dvd_error + + + + dvd_read + + + + dvd_seek + 0 + + dvd_title + 0 + +--- +version of this file: + $Id: README.network_dvd,v 1.1 2003/05/07 18:45:01 miguelfreitas Exp $ -- cgit v1.2.3