Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
VideoLAN
libdvdcss
Commits
5e6047bd
Commit
5e6047bd
authored
Feb 14, 2013
by
Diego Biurrun
Browse files
Fix a number of spelling and grammar errors
Signed-off-by:
Diego Biurrun
<
diego@biurrun.de
>
parent
b3a1b17b
Changes
11
Hide whitespace changes
Inline
Side-by-side
AUTHORS
View file @
5e6047bd
...
...
@@ -15,7 +15,7 @@ D: misc build and portability fixes, cleanup
N: Stéphane Borel
E: stef@via.ecp.fr
D: original CSS decryption code from
vlc
D: original CSS decryption code from
VLC
N: Sven Heithecker
E: sven.heithecker@web.de
...
...
@@ -28,11 +28,11 @@ D: libdvdcss enhancements
N: Samuel Hocevar
E: sam@zoy.org
D: original CSS decryption code from
vlc
D: original CSS decryption code from
VLC
N: Eugenio Jarosiewicz
E: ej0@cise.ufl.edu
D: MacOS X DVD ioctls
D: Mac
OS X DVD ioctls
N: Jon Lech Johansen
E: jon-vl@nanocrew.net
...
...
INSTALL
View file @
5e6047bd
...
...
@@ -38,10 +38,10 @@ Building libdvdcss for Win32
You have two alternatives to build libdvdcss for Win32:
- natively on Windows, using MSYS + M
IN
GW (www.mingw.org):
- natively on Windows, using MSYS + M
in
GW (www.mingw.org):
(MSYS is a minimal build environment to compile unixish projects under
w
indo
ze
. It provides all the common
u
nix tools like sh, gmake...)
W
indo
ws
. It provides all the common
U
nix tools like sh, gmake...)
You will need to download and install the latest MSYS (version 1.0.7 as
of now) and MINGW.
...
...
@@ -60,7 +60,7 @@ You have two alternatives to build libdvdcss for Win32:
- or on Linux, using the mingw32 cross-compiler:
You can find a mingw32 cross-compiler on the
v
ideo
lan
web site:
You can find a mingw32 cross-compiler on the
V
ideo
LAN
web site:
http://www.videolan.org/vlc/windows.html
Or if you are running Debian, there is a mingw32 package you can use.
...
...
NEWS
View file @
5e6047bd
...
...
@@ -14,7 +14,7 @@ Changes between 1.2.10 and 1.2.11:
* improvements on RPC-II handling.
* more robust key retrieval.
* fixes for Min
g
W compilation.
* fixes for Min
G
W compilation.
* fixes for OS/2 compilation.
* various bug fixes for small issues, memleaks, crashes and build issues.
...
...
@@ -53,7 +53,7 @@ Changes between 1.2.6 and 1.2.7:
Changes between 1.2.5 and 1.2.6:
--------------------------------
* compilation fix for most U
NIX
es
* compilation fix for most U
nix
es
Changes between 1.2.4 and 1.2.5:
--------------------------------
...
...
@@ -71,7 +71,7 @@ Changes between 1.2.3 and 1.2.4:
Changes between 1.2.2 and 1.2.3:
--------------------------------
* many Windows bugfixes
* many Windows bug
fixes
* workaround for drives which prevent key decryption
Changes between 1.2.1 and 1.2.2:
...
...
@@ -103,7 +103,7 @@ Changes between 1.0.0 and 1.1.0:
--------------------------------
* merged all patches from the Ogle group
* lots of bugfixes
* lots of bug
fixes
* HP-UX port
* better error recovery
* third descrambling implementation
...
...
README
View file @
5e6047bd
...
...
@@ -14,10 +14,10 @@ Building and Installing libdvdcss
See the INSTALL or INSTALL.libdvdcss file for this.
Running lidvdcss
================
Running li
b
dvdcss
================
=
The behavio
u
r of the library can be affected by changing two environment
The behavior of the library can be affected by changing two environment
variables:
DVDCSS_METHOD={title|disc|key}: method for key decryption
title: decrypted title key is guessed from the encrypted sectors of
...
...
@@ -27,12 +27,11 @@ variables:
at the beginning of each title, so it won't work if the key
changes in the middle of a title.
disc: the disc key is first cracked ; then all title keys can be
decrypted instantly, which allows us to check them often,
decrypted instantly, which allows us to check them often,
key: the same as "disc" if you don't have a file with player keys at
compilation time. If you do, the decryption of the disc key
will be faster with this method. It is the one that was used by
libcss.
This is the default method.
compilation time. If you do, the decryption of the disc key will
be faster with this method. It is the one that was used by libcss.
This is the default method.
DVDCSS_VERBOSE={0|1|2}: libdvdcss verbosity
0: no error messages, no debug messages (this is the default)
1: only error messages
...
...
libdvdcss.spec
View file @
5e6047bd
...
...
@@ -12,7 +12,7 @@
%
define
configure2_5x
%
configure
%
define
make
%
__make
%
define
makeinstall_std
%
makeinstall
#
adjust
define
for
Red
h
at
.
#
adjust
define
for
Red
H
at
.
%
endif
...
...
@@ -32,7 +32,7 @@ Conflicts: libdvdcss0.0.1, libdvdcss0.0.2
libdvdcss
is
a
simple
library
designed
for
accessing
DVDs
like
a
block
device
without
having
to
bother
about
the
decryption
.
The
important
features
are
:
*
Portability
:
currently
supported
platforms
are
GNU
/
Linux
,
FreeBSD
,
NetBSD
,
OpenBSD
,
BeOS
,
Windows
95
/
98
/
ME
,
Windows
NT
/
2000
/
XP
,
MacOS
X
,
Solaris
,
OpenBSD
,
BeOS
,
Windows
95
/
98
/
ME
,
Windows
NT
/
2000
/
XP
,
Mac
OS
X
,
Solaris
,
HP
-
UX
and
OS
/
2.
*
Adaptability
:
unlike
most
similar
projects
,
libdvdcss
doesn
't require the
region of your drive to be set and will try its best to read from the disc
...
...
@@ -49,7 +49,7 @@ Provides: %name = %version-%release
libdvdcss is a simple library designed for accessing DVDs like a block device
without having to bother about the decryption. The important features are:
* Portability: currently supported platforms are GNU/Linux, FreeBSD, NetBSD,
OpenBSD, BeOS, Windows 95/98/ME, Windows NT/2000/XP, MacOS X, Solaris,
OpenBSD, BeOS, Windows 95/98/ME, Windows NT/2000/XP, Mac
OS X, Solaris,
HP-UX and OS/2.
* Adaptability: unlike most similar projects, libdvdcss doesn'
t
require
the
region
of
your
drive
to
be
set
and
will
try
its
best
to
read
from
the
disc
...
...
@@ -121,10 +121,10 @@ package installed.
- new upstream release
- improved robustness in case of read errors
- key cache support
- added more macros to fix RedHat build
- added more macros to fix Red
Hat build
* Mon Nov 18 2002 Alexis de Lattre <alexis@videolan.org> 1.2.4-2
- Changes in .spec file for RedHat and RPM 4.1
- Changes in .spec file for Red
Hat and RPM 4.1
* Thu Nov 14 2002 Alexis de Lattre <alexis@videolan.org> 1.2.4-1
- new upstream release
...
...
@@ -150,8 +150,8 @@ package installed.
- major version is 2 (aka guillaume sux).
- spec clean up: do not rm in %%prep, %%buildroot, %%makeinstall_std, %%provides %%version-%%release
- added doc in devel
- sync with
cvs
'
s
one
(%%
description
,%%
files
,
conflicts
).
-
fix
url
- sync with
CVS
'
s
one
(%%
description
,%%
files
,
conflicts
).
-
fix
URL
*
Sat
Apr
06
2002
Guillaume
Rousse
<
rousse
@
ccr
.
jussieu
.
fr
>
1.1.1
-
1
plf
-
1.1.1
...
...
src/css.c
View file @
5e6047bd
...
...
@@ -249,7 +249,7 @@ int _dvdcss_title ( dvdcss_t dvdcss, int i_block )
if
(
i_ret
<
0
)
{
print_error
(
dvdcss
,
"fatal error in
vts css
key"
);
print_error
(
dvdcss
,
"fatal error in
VTS CSS
key"
);
return
i_ret
;
}
...
...
@@ -339,7 +339,7 @@ int _dvdcss_disckey( dvdcss_t dvdcss )
return
-
1
;
}
/* This should have invaidated the AGID and got us ASF=1. */
/* This should have inva
l
idated the AGID and got us ASF=1. */
if
(
GetASF
(
dvdcss
)
!=
1
)
{
/* Region mismatch (or region not set) is the most likely source. */
...
...
@@ -455,9 +455,9 @@ static int _dvdcss_titlekey( dvdcss_t dvdcss, int i_pos, dvd_key_t p_title_key )
break
;
case
1
:
/* Drive status is
ok
. */
/* Drive status is
OK
. */
/* If the title key request failed, but we did not loose ASF,
* we might stil have the AGID. Other code assume that we
* we might stil
l
have the AGID. Other code assume
s
that we
* will not after this so invalidate it(?). */
if
(
i_ret
<
0
)
{
...
...
@@ -510,7 +510,7 @@ static int _dvdcss_titlekey( dvdcss_t dvdcss, int i_pos, dvd_key_t p_title_key )
/* METHOD is TITLE, we can't use the ioctls or requesting the title key
* failed above. For these cases we try to crack the key instead. */
/* For now, the read limit is 9G
b
/ 2048 = 4718592 sectors. */
/* For now, the read limit is 9G
B
/ 2048 = 4718592 sectors. */
i_ret
=
CrackTitleKey
(
dvdcss
,
i_pos
,
4718592
,
p_key
);
memcpy
(
p_title_key
,
p_key
,
KEY_SIZE
);
...
...
@@ -573,7 +573,7 @@ int _dvdcss_unscramble( dvd_key_t p_key, uint8_t *p_sec )
* It simulates the mutual authentication between logical unit and host,
* and stops when a session key (called bus key) has been established.
* Always do the full auth sequence. Some drives seem to lie and always
* respond with ASF=1.
For instance the old DVD
rom
s on Compaq Armada says
* respond with ASF=1. For instance the old DVD
-ROM
s on Compaq Armada says
* that ASF=1 from the start and then later fail with a 'read of scrambled
* block without authentication' error.
*****************************************************************************/
...
...
@@ -755,7 +755,7 @@ static int GetASF( dvdcss_t dvdcss )
/*****************************************************************************
* CryptKey : shuffles bits and unencrypt keys.
*****************************************************************************
* Used during authentication and disc key nego
c
iation in GetBusKey.
* Used during authentication and disc key nego
t
iation in GetBusKey.
* i_key_type : 0->key1, 1->key2, 2->buskey.
* i_variant : between 0 and 31.
*****************************************************************************/
...
...
@@ -836,7 +836,7 @@ static void CryptKey( int i_key_type, int i_variant,
* The first LFSR is of degree 25, and has a polynomial of:
* x^13 + x^5 + x^4 + x^1 + 1
*
* The second L
S
FR is of degree 17, and has a (primitive) polynomial of:
* The second LF
S
R is of degree 17, and has a (primitive) polynomial of:
* x^15 + x^1 + 1
*
* I don't know if these polynomials are primitive modulo 2, and thus
...
...
@@ -850,7 +850,7 @@ static void CryptKey( int i_key_type, int i_variant,
*/
/* In order to ensure that the LFSR works we need to ensure that the
* initial values are non-zero. Thus when we initiali
s
e them from
* initial values are non-zero. Thus when we initiali
z
e them from
* the seed, we ensure that a bit is set.
*/
i_lfsr0
=
(
p_tmp1
[
0
]
<<
17
)
|
(
p_tmp1
[
1
]
<<
9
)
|
...
...
@@ -959,7 +959,7 @@ static void CryptKey( int i_key_type, int i_variant,
* in _dvdcss_titlekey.
* The player keys and the resulting disc key are only used as KEKs
* (key encryption keys).
* Decryption is slightly depend
a
nt on the type of key:
* Decryption is slightly depend
e
nt on the type of key:
* -for disc key, invert is 0x00,
* -for title key, invert if 0xff.
*****************************************************************************/
...
...
@@ -1194,7 +1194,7 @@ static int CrackDiscKey( dvdcss_t dvdcss, uint8_t *p_disc_key )
}
}
/* Initing our
R
eally big table */
/* Initi
alizi
ng our
r
eally big table */
BigTable
=
calloc
(
16777216
,
sizeof
(
int
)
);
if
(
BigTable
==
NULL
)
{
...
...
@@ -1223,7 +1223,7 @@ static int CrackDiscKey( dvdcss_t dvdcss, uint8_t *p_disc_key )
}
/*
* We are done initing, now reverse hash
* We are done initi
alizi
ng, now reverse hash
*/
tmp5
=
p_disc_key
[
0
]
^
p_css_tab1
[
p_disc_key
[
1
]
];
...
...
@@ -1241,7 +1241,7 @@ static int CrackDiscKey( dvdcss_t dvdcss, uint8_t *p_disc_key )
out1
[
i
]
=
p_css_tab4
[
tmp
];
}
/* c
u
mpute and cache some variables */
/* c
o
mpute and cache some variables */
C
[
0
]
=
nStepA
>>
8
;
C
[
1
]
=
nStepA
&
0xff
;
tmp
=
p_disc_key
[
3
]
^
p_css_tab1
[
p_disc_key
[
4
]
];
...
...
@@ -1357,7 +1357,7 @@ static int RecoverTitleKey( int i_start, uint8_t const *p_crypted,
/* iterate cipher 4 times to reconstruct LFSR2 */
for
(
i
=
0
;
i
<
4
;
i
++
)
{
/* advance LFSR1 normaly */
/* advance LFSR1 normal
l
y */
i_t4
=
p_css_tab2
[
i_t2
]
^
p_css_tab3
[
i_t1
];
i_t2
=
i_t1
>>
1
;
i_t1
=
(
(
i_t1
&
1
)
<<
8
)
^
i_t4
;
...
...
@@ -1410,7 +1410,7 @@ static int RecoverTitleKey( int i_start, uint8_t const *p_crypted,
{
i_t1
=
i_t3
&
0xff
;
i_t3
=
(
i_t3
>>
8
);
/* easy to code, and fast enough bruteforce
/* easy to code, and fast enough brute
-
force
* search for byte shifted in */
for
(
j
=
0
;
j
<
256
;
j
++
)
{
...
...
@@ -1458,11 +1458,11 @@ static int RecoverTitleKey( int i_start, uint8_t const *p_crypted,
* Various pieces for the title crack engine.
******************************************************************************
* The length of the PES packet is located at 0x12-0x13.
* The the copyrig
t
h protection bits are located at 0x14 (bits 0x20 and 0x10).
* The the copyrigh
t
protection bits are located at 0x14 (bits 0x20 and 0x10).
* The data of the PES packet begins at 0x15 (if there isn't any PTS/DTS)
* or at 0x?? if there are both PTS and DTS's.
* The seed value used with the unscrambling key is the 5 bytes at 0x54-0x58.
* The scrabled part of a sector begins at 0x80.
* The scra
m
bled part of a sector begins at 0x80.
*****************************************************************************/
/* Statistics */
...
...
@@ -1606,7 +1606,7 @@ static int CrackTitleKey( dvdcss_t dvdcss, int i_pos, int i_len,
******************************************************************************
* Tries to find a repeating pattern just before the encrypted part starts.
* Then it guesses that the plain text for first encrypted bytes are
* a contiuation of that pattern.
* a conti
n
uation of that pattern.
*****************************************************************************/
static
int
AttackPattern
(
uint8_t
const
p_sec
[
DVDCSS_BLOCK_SIZE
],
int
i_pos
,
uint8_t
*
p_key
)
...
...
@@ -1667,7 +1667,7 @@ static int AttackPattern( uint8_t const p_sec[ DVDCSS_BLOCK_SIZE ],
******************************************************************************
* DVD specifies that there must only be one type of data in every sector.
* Every sector is one pack and so must obviously be 2048 bytes long.
* For the last pice of video data before a VOBU boundary there might not
* For the last pi
e
ce of video data before a VOBU boundary there might not
* be exactly the right amount of data to fill a sector. Then one has to
* pad the pack to 2048 bytes. For just a few bytes this is done in the
* header but for any large amount you insert a PES packet from the
...
...
@@ -1682,7 +1682,7 @@ static int AttackPadding( uint8_t const p_sec[ DVDCSS_BLOCK_SIZE ],
i_pes_length = (p_sec[0x12]<<8) | p_sec[0x13];
/* Coverd by the test below but usful
l
for debuging. */
/* Cover
e
d by the test below but us
e
ful for debug
g
ing. */
if( i_pes_length == DVDCSS_BLOCK_SIZE - 0x14 ) return 0;
/* There must be room for at least 4? bytes of padding stream,
...
...
@@ -1711,7 +1711,7 @@ static int AttackPadding( uint8_t const p_sec[ DVDCSS_BLOCK_SIZE ],
are also known. */
/* An encrypted SPU PES packet with another encrypted PES packet following.
Normaly if the following was a padding stream that would be in plain
Normal
l
y if the following was a padding stream that would be in plain
text. So it will be another SPU PES packet. */
if( p_sec[0x11] == 0xbd &&
p_sec[0x17 + p_sec[0x16]] >= 0x20 &&
...
...
@@ -1721,7 +1721,7 @@ static int AttackPadding( uint8_t const p_sec[ DVDCSS_BLOCK_SIZE ],
}
/* A Video PES packet with another encrypted PES packet following.
* No reason ex
e
cpt for time stamps to break the data into two packets.
* No reason exc
e
pt for time stamps to break the data into two packets.
* So it's likely that the following PES packet is a padding stream. */
if( p_sec[0x11] == 0xe0 )
{
...
...
src/css.h
View file @
5e6047bd
...
...
@@ -44,7 +44,7 @@ typedef struct dvd_title_s
typedef
struct
css_s
{
int
i_agid
;
/* Current Authenication Grant ID. */
int
i_agid
;
/* Current Authen
t
ication Grant ID. */
dvd_key_t
p_bus_key
;
/* Current session key. */
dvd_key_t
p_disc_key
;
/* This DVD disc's key. */
dvd_key_t
p_title_key
;
/* Current title key. */
...
...
src/device.c
View file @
5e6047bd
...
...
@@ -231,7 +231,7 @@ void _dvdcss_check ( dvdcss_t dvdcss )
/* Remove trailing backslash */
psz_device
[
2
]
=
'\0'
;
/* FIXME: we want to differen
c
iate between CD and DVD drives
/* FIXME: we want to differen
t
iate between CD and DVD drives
* using DeviceIoControl() */
print_debug
(
dvdcss
,
"defaulting to drive `%s'"
,
psz_device
);
free
(
dvdcss
->
psz_device
);
...
...
@@ -444,7 +444,7 @@ int _dvdcss_close ( dvdcss_t dvdcss )
{
struct
w32_aspidev
*
fd
=
(
struct
w32_aspidev
*
)
dvdcss
->
i_fd
;
/* Unload
aspi
and free w32_aspidev structure */
/* Unload
ASPI
and free w32_aspidev structure */
FreeLibrary
(
(
HMODULE
)
fd
->
hASPI
);
free
(
(
void
*
)
dvdcss
->
i_fd
);
}
...
...
@@ -504,7 +504,7 @@ static int win2k_open ( dvdcss_t dvdcss, char const *psz_device )
/* To work around an M$ bug in IOCTL_DVD_READ_STRUCTURE, we need read
* _and_ write access to the device (so we can make SCSI Pass Through
* Requests). Unfortunately this is only allowed if you have
* administrator privile
d
ges so we allow for a fallback method with
* administrator privileges so we allow for a fallback method with
* only read access to the device (in this case ioctl_ReadCopyright()
* won't send back the right result).
* (See Microsoft Q241374: Read and Write Access Required for SCSI
...
...
@@ -542,7 +542,7 @@ static int aspi_open( dvdcss_t dvdcss, char const * psz_device )
SENDASPI32COMMAND
lpSendCommand
;
char
c_drive
=
psz_device
[
0
];
/* load
aspi
and init w32_aspidev structure */
/* load
ASPI
and init w32_aspidev structure */
hASPI
=
LoadLibrary
(
"wnaspi32.dll"
);
if
(
hASPI
==
NULL
)
{
...
...
@@ -555,7 +555,7 @@ static int aspi_open( dvdcss_t dvdcss, char const * psz_device )
if
(
lpGetSupport
==
NULL
||
lpSendCommand
==
NULL
)
{
print_error
(
dvdcss
,
"unable to get
aspi
function pointers"
);
print_error
(
dvdcss
,
"unable to get
ASPI
function pointers"
);
FreeLibrary
(
hASPI
);
return
-
1
;
}
...
...
@@ -571,7 +571,7 @@ static int aspi_open( dvdcss_t dvdcss, char const * psz_device )
if
(
HIBYTE
(
LOWORD
(
dwSupportInfo
)
)
!=
SS_COMP
)
{
print_error
(
dvdcss
,
"unable to initalize
aspi
layer"
);
print_error
(
dvdcss
,
"unable to init
i
alize
ASPI
layer"
);
FreeLibrary
(
hASPI
);
return
-
1
;
}
...
...
@@ -616,7 +616,7 @@ static int aspi_open( dvdcss_t dvdcss, char const * psz_device )
if
(
(
srbDiskInfo
.
SRB_Status
==
SS_COMP
)
&&
(
srbDiskInfo
.
SRB_Int13HDriveInfo
==
c_drive
)
)
{
/* Make sure this is a
cdrom
device */
/* Make sure this is a
CD-ROM
device */
struct
SRB_GDEVBlock
srbGDEVBlock
;
memset
(
&
srbGDEVBlock
,
0
,
sizeof
(
struct
SRB_GDEVBlock
)
);
...
...
@@ -638,7 +638,7 @@ static int aspi_open( dvdcss_t dvdcss, char const * psz_device )
{
free
(
(
void
*
)
fd
);
FreeLibrary
(
hASPI
);
print_error
(
dvdcss
,
"this is not a
cdrom
drive"
);
print_error
(
dvdcss
,
"this is not a
CD-ROM
drive"
);
return
-
1
;
}
}
...
...
@@ -647,7 +647,7 @@ static int aspi_open( dvdcss_t dvdcss, char const * psz_device )
free
(
(
void
*
)
fd
);
FreeLibrary
(
hASPI
);
print_error
(
dvdcss
,
"unable to get haid and target (
aspi
)"
);
print_error
(
dvdcss
,
"unable to get haid and target (
ASPI
)"
);
return
-
1
;
}
#endif
...
...
@@ -869,8 +869,8 @@ static int libc_readv ( dvdcss_t dvdcss, struct iovec *p_iovec, int i_blocks )
if
(
i_bytes
<
0
)
{
/* One of the reads failed, too bad.
* We won't even bother returning the reads that went
ok
,
* and as in the
posix
spec the file pos
t
ition is left
* We won't even bother returning the reads that went
OK
,
* and as in the
POSIX
spec the file position is left
* unspecified after a failure */
dvdcss
->
i_pos
=
-
1
;
return
-
1
;
...
...
@@ -956,7 +956,7 @@ static int win_readv ( dvdcss_t dvdcss, struct iovec *p_iovec, int i_blocks )
i_blocks_total
*
DVDCSS_BLOCK_SIZE
,
&
i_bytes
,
NULL
)
)
{
/* The read failed... too bad.
* As in the
posix
spec the file pos
t
ition is left
* As in the
POSIX
spec the file position is left
* unspecified after a failure */
dvdcss
->
i_pos
=
-
1
;
return
-
1
;
...
...
@@ -1026,7 +1026,7 @@ static int aspi_read_internal( int i_fd, void *p_data, int i_blocks )
ssc
.
CDBByte
[
4
]
=
(
UCHAR
)
(
fd
->
i_blocks
>>
8
)
&
0xff
;
ssc
.
CDBByte
[
5
]
=
(
UCHAR
)
(
fd
->
i_blocks
)
&
0xff
;
/* We have to break down the reads into 64
kb
pieces (ASPI restriction) */
/* We have to break down the reads into 64
KB
pieces (ASPI restriction) */
if
(
i_blocks
>
32
)
{
ssc
.
SRB_BufLen
=
32
*
DVDCSS_BLOCK_SIZE
;
...
...
@@ -1037,7 +1037,7 @@ static int aspi_read_internal( int i_fd, void *p_data, int i_blocks )
ResetEvent
(
hEvent
);
fd
->
lpSendCommand
(
(
void
*
)
&
ssc
);
/* transfer the next 64
kb
(aspi_read_internal is called recursively)
/* transfer the next 64
KB
(aspi_read_internal is called recursively)
* We need to check the status of the read on return */
if
(
aspi_read_internal
(
i_fd
,
(
uint8_t
*
)
p_data
+
32
*
DVDCSS_BLOCK_SIZE
,
...
...
src/ioctl.c
View file @
5e6047bd
...
...
@@ -217,7 +217,7 @@ int ioctl_ReadCopyright( int i_fd, int i_layer, int *pi_copyright )
/* When using IOCTL_DVD_READ_STRUCTURE and
DVD_COPYRIGHT_DESCRIPTOR, CopyrightProtectionType
seems to be always 6 ???
To work around this MS bug we try to send a raw
scsi
command
To work around this MS bug we try to send a raw
SCSI
command
instead (if we've got enough privileges to do so). */
sptd
.
Cdb
[
6
]
=
i_layer
;
...
...
@@ -1741,7 +1741,7 @@ static void HPUXInitSCTL( struct sctl_io *sctl_io, int i_type )
/*****************************************************************************
* SolarisInitUSCSI: initialize a USCSICMD structure for the Solaris kernel
*****************************************************************************
* This function initializes a Solaris userspace
scsi
command structure for
* This function initializes a Solaris userspace
SCSI
command structure for
* future use, either a read command or a write command.
*****************************************************************************/
static
void
SolarisInitUSCSI
(
struct
uscsi_cmd
*
p_sc
,
int
i_type
)
...
...
@@ -1786,8 +1786,8 @@ static void SolarisInitUSCSI( struct uscsi_cmd *p_sc, int i_type )
*
* The code will fall back to the USCSICMD ioctl method, when
* libsmedia.so is not available or does not export the
* smedia_uscsi_cmd() function (on Solaris releases upto and including
* Solaris 8). Fortunatel
l
y, on these old releases non-root users are
* smedia_uscsi_cmd() function (on Solaris releases up
to and including
* Solaris 8). Fortunately, on these old releases non-root users are
* allowed to perform USCSICMD ioctls on removable media devices.
*****************************************************************************/
static
int
SolarisSendUSCSI
(
int
i_fd
,
struct
uscsi_cmd
*
p_sc
)
...
...
src/libdvdcss.c
View file @
5e6047bd
...
...
@@ -30,7 +30,7 @@
* device without having to bother about the decryption. The important features
* are:
* \li portability: currently supported platforms are GNU/Linux, FreeBSD,
* NetBSD, OpenBSD, BeOS, Windows 95/98, Windows NT/2000, MacOS X,
* NetBSD, OpenBSD, BeOS, Windows 95/98, Windows NT/2000, Mac
OS X,
* Solaris, HP-UX and OS/2.
* \li adaptability: unlike most similar projects, libdvdcss doesn't require
* the region of your drive to be set and will try its best to read from
...
...
@@ -49,7 +49,7 @@
*
* \section env Environment variables
*
* Some environment variables can be used to change the behavio
u
r of
* Some environment variables can be used to change the behavior of
* \e libdvdcss without having to modify the program which uses it. These
* variables are:
*
...
...
@@ -252,7 +252,7 @@ LIBDVDCSS_EXPORT dvdcss_t dvdcss_open ( char *psz_target )
*
psz_home
=
'\0'
;
/* Load the shfolder
dll
to retrieve SHGetFolderPath */
/* Load the shfolder
DLL
to retrieve SHGetFolderPath */
p_dll
=
LoadLibrary
(
"shfolder.dll"
);
if
(
p_dll
)
{
...
...
@@ -582,7 +582,7 @@ LIBDVDCSS_EXPORT char * dvdcss_error ( dvdcss_t dvdcss )
*
* \param dvdcss a \e libdvdcss instance.
* \param i_blocks an absolute block offset to seek to.
* \param i_flags #DVDCSS_NOFLAGS, optionally
or
ed with one of #DVDCSS_SEEK_KEY
* \param i_flags #DVDCSS_NOFLAGS, optionally
OR
ed with one of #DVDCSS_SEEK_KEY
* or #DVDCSS_SEEK_MPEG.
* \return the new position in blocks, or a negative value in case an error
* happened.
...
...
@@ -592,7 +592,7 @@ LIBDVDCSS_EXPORT char * dvdcss_error ( dvdcss_t dvdcss )
* You typically set \p i_flags to #DVDCSS_NOFLAGS when seeking in a .IFO.
*
* If #DVDCSS_SEEK_MPEG is specified in \p i_flags and if \e libdvdcss finds it
* reasonable to do so (i
e
, if the dvdcss method is not "title"), the current
* reasonable to do so (i
.e.
, if the dvdcss method is not "title"), the current
* title key will be checked and a new one will be calculated if necessary.
* This flag is typically used when reading data from a VOB.
*
...
...
@@ -624,7 +624,7 @@ LIBDVDCSS_EXPORT int dvdcss_seek ( dvdcss_t dvdcss, int i_blocks, int i_flags )
* \param dvdcss a \e libdvdcss instance.
* \param p_buffer a buffer that will contain the data read from the disc.
* \param i_blocks the amount of blocks to read.
* \param i_flags #DVDCSS_NOFLAGS, optionally
or
ed with #DVDCSS_READ_DECRYPT.
* \param i_flags #DVDCSS_NOFLAGS, optionally
OR
ed with #DVDCSS_READ_DECRYPT.
* \return the amount of blocks read, or a negative value in case an
* error happened.
*
...
...
@@ -694,7 +694,7 @@ LIBDVDCSS_EXPORT int dvdcss_read ( dvdcss_t dvdcss, void *p_buffer,
* \param p_iovec a pointer to an array of iovec structures that will contain
* the data read from the disc.
* \param i_blocks the amount of blocks to read.
* \param i_flags #DVDCSS_NOFLAGS, optionally
or
ed with #DVDCSS_READ_DECRYPT.
* \param i_flags #DVDCSS_NOFLAGS, optionally
OR
ed with #DVDCSS_READ_DECRYPT.
* \return the amount of blocks read, or a negative value in case an
* error happened.
*
...
...
test/dvd_region.c
View file @
5e6047bd
...
...
@@ -160,7 +160,7 @@ static int set_region(int fd, int region)
return
1
;
}
printf
(
"Setting drive region can only be done a finite "
\
"number of times, press C
TRL
-C now to cancel!
\n
"
);
"number of times, press C
trl
-C now to cancel!
\n
"
);
getchar
();
region_mask
=
0xff
&
~
(
1
<<
(
region
-
1
));
...
...
@@ -218,7 +218,7 @@ static int print_region(int fd)
region_mask
>>=
1
;
}
else
printf
(
"non-
rpc
( all)
\n
"
);
printf
(
"non-
RPC
( all)
\n
"
);
printf
(
"RPC Scheme: "
);
switch
(
rpc_scheme
)
{
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment