summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/Makefile.am2
-rw-r--r--doc/README3
-rw-r--r--doc/README.network_dvd138
3 files changed, 142 insertions, 1 deletions
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:
+
+ <command> <arg0> <arg1> <arg2> ... \n
+
+reply format:
+
+ <error code> <n> <value0> <value1> ... \n
+ followed by n bytes of binary data (like cd or dvd sectors)
+
+cdda commands:
+
+ cdda_open
+ <error code> 0
+
+ cdda_read <start_frame> <num_frames>
+ <error code> <n>
+ <n bytes (frames)>
+
+ cdda_tochdr
+ <error code> 0 <first_track> <last_track>
+
+ cdda_tocentry
+ <error code> 0 <track_mode> <first_frame_min> <first_frame_sec> <first_frame_frame>
+
+dvd commands:
+
+ dvd_open
+ <error code> 0
+
+ dvd_error
+ <error code> <n>
+ <n bytes (error string)>
+
+ dvd_read <blocks> <flags>
+ <error code> <n>
+ <n bytes (blocks)>
+
+ dvd_seek <block> <flags>
+ <error code> 0
+
+ dvd_title <block>
+ <error code> 0
+
+---
+version of this file:
+ $Id: README.network_dvd,v 1.1 2003/05/07 18:45:01 miguelfreitas Exp $