summaryrefslogtreecommitdiffstats
path: root/DOCS/DVD
blob: cd78b39f9fb7b9da7a50e8ac8e634f140b44efa4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
DVD support in MPlayer!
~~~~~~~~~~~~~~~~~~~~~~~

Read file 'DVD-FAQ' as well (and try to avoid recursion by the redirector
message there :).

IMPORTANT NOTE: please _DO_NOT_ require further features for DVD playback. This
is extremly experimental hack. Maybe it won't work for you. If you're
capable of helping us do it now! First we would like to fix existing problems.
Then we can start implementing advanced DVD playback functions of course.

This means current DVD functions are mainly for developers and not for users!

Building MPlayer with libcss support
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
First, you must compile and install libcss on your system.
Second, you have to recompile MPlayer with libcss support. There is
autodetection of libcss, but if it fails, see below :

Call ./configure script of MPlayer with these options:

./configure --enable-css --with-csslibdir=/usr/local/lib --with-cssincdir=/usr/local/include

(of course you can append your favourite options as well)

--with-csslibdir=/usr/local/lib
	Directory contains libcss.so shared library. This directory should
	be in your /etc/ld.so.conf as well.
	
--with-cssincdir=/usr/local/include
	Directory contains header file 'css.h' of libcss.

Viewing VOB files directly from DVD
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mplayer -dvdauth /dev/dvd /mnt/cdrom/video_ts/vts_01_1.vob

where,

	'-dvdauth /dev/dvd' tells MPlayer the device name of your DVD drive.
	it's used in disc authentication process

	the filename is simply a VOB file path on the disc

Note that according to my experiences, disc authentication requires root
privileges so you must run MPlayer as root! (see section 'Problems').

NOTE about the sound:
	It seems that MPlayer sometimes fails to find the first audio stream.
	You can specify it with the '-aid 128' option, for example.
	Please experience with 128,129 and similar values. See section
	'Problems'.


New source files
~~~~~~~~~~~~~~~~
dvdauth.c
	Issues DVD disc and title authentication and fills key_disc and
	key_title arraies.

dvdauth.h
	header file

These files are embedded inside an '#ifdef ... #endif' block, so if libcss
support was not requested, they do not produce any code and of course
libcss is not linked against MPlayer either.


Modifications in the source
~~~~~~~~~~~~~~~~~~~~~~~~~~~
* (stream.c) STREAM_BUFFER_SIZE is set to 2048
* (demux_mpg.c) the old message of 'encrypted VOB file is not supported'
  was changed to set a flag to 1. After parsing the header, if this
  flag is set, we call descramble function of libcss for decrypt.
* (stream.c) on several points where the old 4096 length STREAM_BUFFER_SIZE was
  hardcoded into the source, it was replaced with 'STREAM_BUFFER_SIZE'
* (mplayer.c) calling dvd disc and title authentication and seek to sector
  boundaries on seeking for mpegs
              

Performance
~~~~~~~~~~~
On my AMD K6-2 with using hw scaling and colorspace conversion
capability of my G400 it's possible to watch DVD with about 70%
CPU usage with '-nosound'. Unfortunately with sound my machine is
not enough :( Maybe it can be improved somewhat ...
Guess, it's not so bad ... According to reports from my friends
xine uses 80-90% CPU to play DVD on much more powerful machines
like 1GHz Athlon systems (as far as I know, it's said that about
300MHz celeron is the minimum to watch DVDs ... using windows
DVD viewers).

Hint: I commented out downmix functions from libac3 (of course in this way I
can't get sound) and audio decoding CPU usage became 11% instead of 24 on
my machine. This clearly indicates that we should optimize downmix functions
(KNI code is no use for my k6-2).

HOT NEWZ:
We have got 3Dnow optimized libac3. Wow ;-)


Problems (TODO)
~~~~~~~~~~~~~~~
* disc authentication (the FIBMAP ioctl) requires root privilegies.
  this is strange since OMS can do it as user too.
* sound. I'm using my only DVD disc (The Matrix) to test MPlayer.
  some VOB file have English sound, some have Spanish and some have
  no sound at all.
  IT SEEMS that if I give '-aid 128' everything works with English sound ...
* strange effects but only with SOME vob files (it looks like some interlacing
  effect, eg: every 2nd line on the screen is from the last frame).


feature TODO
~~~~~~~~~~~~
* chapter scanner
* audio stream scanner and allow to select one on runtime as well
  (in stage#1 it would be enough to select one on the startup, see
  'Problems' above)
* DVD menu
  I found (at least on disc 'The Matrix') the menu VOB but I don't
  know how can it be used.
  (after some eyeballing on the source of OMS, it seems we would have to
  parse *.ifo files)
* subtitle support
* OSD/GUI (?) support for select chapter, subtitle and audio stream
* getting some documentation on DVD format, eg: which is the 'root' VOB
  file on the disc in video_ts directory, which is the menu and so on.
* improve performance (see 'Performance' above)


No sound problem (from Matrix DVD, the menu VOB)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
End of packet while searching for PCM header

DEMUXER: Too many (2048 in 4131540 bytes) video packets in the buffer!
(maybe you play a non-interleaved stream/file or video codec failed)
MPEG: No Audio stream found...  ->nosound

However this does not occur if you specify '-aid 128'.