libdvdcss 1.4.3

Data Structures | Macros | Typedefs | Functions
dvdcss.h File Reference

The libdvdcss public header. More...

Go to the source code of this file.

## Data Structures
struct | dvdcss_stream_cb

## Macros
#define | DVDCSS_BLOCK_SIZE 2048
#define | DVDCSS_NOFLAGS 0
#define | DVDCSS_READ_DECRYPT (1 << 0)
#define | DVDCSS_SEEK_MPEG (1 << 0)
#define | DVDCSS_SEEK_KEY (1 << 1)
#define | LIBDVDCSS_EXPORT extern

## Typedefs
typedef struct dvdcss_s * | dvdcss_t
typedef struct dvdcss_stream_cb | dvdcss_stream_cb

## Functions
LIBDVDCSS_EXPORT dvdcss_t | dvdcss_open (const char *psz_target)
| Open a DVD device or directory and return a dvdcss instance. More...
LIBDVDCSS_EXPORT dvdcss_t | dvdcss_open_stream (void *p_stream, dvdcss_stream_cb *p_stream_cb)
| Open a DVD device using dvdcss_stream_cb. More...
LIBDVDCSS_EXPORT int | dvdcss_close (dvdcss_t)
| Clean up library state and structures. More...
LIBDVDCSS_EXPORT int | dvdcss_seek (dvdcss_t, int i_blocks, int i_flags)
| Seek in the disc and change the current key if requested. More...
LIBDVDCSS_EXPORT int | dvdcss_read (dvdcss_t, void *p_buffer, int i_blocks, int i_flags)
| Read from the disc and decrypt data if requested. More...
LIBDVDCSS_EXPORT int | dvdcss_readv (dvdcss_t, void *p_iovec, int i_blocks, int i_flags)
| Read data from the disc into multiple buffers and decrypt data if requested. More...
LIBDVDCSS_EXPORT const char * | dvdcss_error (const dvdcss_t)
| Return a string containing the last error that occurred in the given libdvdcss instance. More...
LIBDVDCSS_EXPORT int | dvdcss_is_scrambled (dvdcss_t)
| Detect whether or not a DVD is scrambled. More...

## Detailed Description

The libdvdcss public header.

Author
  Stéphane Borel stef@.nosp@m.via..nosp@m.ecp.f.nosp@m.r
  Sam Hocevar sam@z.nosp@m.oy.o.nosp@m.rg

Public types and functions that describe the API of the libdvdcss library.

## Macro Definition Documentation

## ◆ DVDCSS_BLOCK_SIZE

#define DVDCSS_BLOCK_SIZE 2048

The block size of a DVD.

## ◆ DVDCSS_NOFLAGS

#define DVDCSS_NOFLAGS 0

The default flag to be used by libdvdcss functions.

## ◆ DVDCSS_READ_DECRYPT

#define DVDCSS_READ_DECRYPT (1 << 0)

Flag to ask dvdcss_read() to decrypt the data it reads.

## ◆ DVDCSS_SEEK_KEY

#define DVDCSS_SEEK_KEY (1 << 1)

Flag to ask dvdcss_seek() to check the current title key.

## ◆ DVDCSS_SEEK_MPEG

#define DVDCSS_SEEK_MPEG (1 << 0)

Flag to tell dvdcss_seek() it is seeking in MPEG data.

## ◆ LIBDVDCSS_EXPORT

#define LIBDVDCSS_EXPORT extern

Macro for setting symbol storage-class or visibility. Define LIBDVDCSS_IMPORTS before importing this header to get the correct DLL storage-class when using libdvdcss from MSVC.

## Typedef Documentation

## ◆ dvdcss_stream_cb

typedef struct dvdcss_stream_cb dvdcss_stream_cb

Set of callbacks to access DVDs in custom ways.

## ◆ dvdcss_t

typedef struct dvdcss_s* dvdcss_t

Library instance handle, to be used for each library call.

## Function Documentation

## ◆ dvdcss_close()

LIBDVDCSS_EXPORT int dvdcss_close | ( | dvdcss_t | dvdcss | ) |

Clean up library state and structures.

Parameters

  dvdcss | a libdvdcss instance

Returns
  zero in case of success, a negative value otherwise.

Close the DVD device and free all the memory allocated by libdvdcss. On return, the dvdcss_t is invalidated and may not be used again.

## ◆ dvdcss_error()

LIBDVDCSS_EXPORT const char * dvdcss_error | ( | const dvdcss_t | dvdcss | ) |

Return a string containing the last error that occurred in the given libdvdcss instance.

Parameters

  dvdcss | a libdvdcss instance

Returns
  a NULL-terminated string containing the last error message.

Return a string with the last error message produced by libdvdcss. Useful to conveniently format error messages in external applications.

## ◆ dvdcss_is_scrambled()

LIBDVDCSS_EXPORT int dvdcss_is_scrambled | ( | dvdcss_t | dvdcss | ) |

Detect whether or not a DVD is scrambled.

Parameters

  dvdcss | a libdvdcss instance.

Returns
  1 if the DVD is scrambled, 0 otherwise.

## ◆ dvdcss_open()

LIBDVDCSS_EXPORT dvdcss_t dvdcss_open | ( | const char * | psz_target | ) |

Open a DVD device or directory and return a dvdcss instance.

Parameters

  psz_target | a string containing the target name, for instance "/dev/hdc" or "E:"

Returns
  a handle to a dvdcss instance or NULL on error.

Initialize the libdvdcss library, open the requested DVD device or directory, and return a handle to be used for all subsequent libdvdcss calls. libdvdcss checks whether ioctls can be performed on the disc, and when possible, the disc key is retrieved.

## ◆ dvdcss_open_stream()

LIBDVDCSS_EXPORT dvdcss_t dvdcss_open_stream | ( | void * | p_stream,
|  | dvdcss_stream_cb * | p_stream_cb
| ) |  |

Open a DVD device using dvdcss_stream_cb.

Parameters

  p_stream | a private handle used by p_stream_cb
  p_stream_cb | a struct containing seek and read functions

Returns
  a handle to a dvdcss instance or NULL on error.

See also
  dvdcss_open()

## ◆ dvdcss_read()

LIBDVDCSS_EXPORT int dvdcss_read | ( | dvdcss_t | dvdcss,
|  | void * | p_buffer,
|  | int | i_blocks,
|  | int | i_flags
| ) |  |

Read from the disc and decrypt data if requested.

Parameters

  dvdcss | a libdvdcss instance
  p_buffer | a buffer that will contain the data read from the disc
  i_blocks | the amount of blocks to read
  i_flags | DVDCSS_NOFLAGS, optionally ORed with DVDCSS_READ_DECRYPT

Returns
  the amount of blocks read or a negative value in case an error happened.

Read `i_blocks` logical blocks from the DVD.

You typically set `i_flags` to DVDCSS_NOFLAGS when reading data from a .IFO file on the DVD.

If DVDCSS_READ_DECRYPT is specified in `i_flags`, dvdcss_read() will automatically decrypt scrambled sectors. This flag is typically used when reading data from a .VOB file on the DVD. It has no effect on unscrambled discs or unscrambled sectors and can be safely used on those.

Warning
  dvdcss_read() expects to be able to write `i_blocks` * DVDCSS_BLOCK_SIZE bytes into `p_buffer`.

References DVDCSS_BLOCK_SIZE, and DVDCSS_READ_DECRYPT.

## ◆ dvdcss_readv()

LIBDVDCSS_EXPORT int dvdcss_readv | ( | dvdcss_t | dvdcss,
|  | void * | p_iovec,
|  | int | i_blocks,
|  | int | i_flags
| ) |  |

Read data from the disc into multiple buffers and decrypt data if requested.

Parameters

  dvdcss | a libdvdcss instance
  p_iovec | a pointer to an array of iovec structures that will contain the data read from the disc
  i_blocks | the amount of blocks to read
  i_flags | DVDCSS_NOFLAGS, optionally ORed with DVDCSS_READ_DECRYPT

Returns
  the amount of blocks read or a negative value in case an error happened.

Read `i_blocks` logical blocks from the DVD and write them to an array of iovec structures.

You typically set `i_flags` to DVDCSS_NOFLAGS when reading data from a .IFO file on the DVD.

If DVDCSS_READ_DECRYPT is specified in `i_flags`, dvdcss_readv() will automatically decrypt scrambled sectors. This flag is typically used when reading data from a .VOB file on the DVD. It has no effect on unscrambled discs or unscrambled sectors and can be safely used on those.

Warning
  dvdcss_readv() expects to be able to write `i_blocks` * DVDCSS_BLOCK_SIZE bytes into the buffers pointed by `p_iovec`. Moreover, all iov_len members of the iovec structures should be multiples of DVDCSS_BLOCK_SIZE.

References DVDCSS_BLOCK_SIZE, and DVDCSS_READ_DECRYPT.

## ◆ dvdcss_seek()

LIBDVDCSS_EXPORT int dvdcss_seek | ( | dvdcss_t | dvdcss,
|  | int | i_blocks,
|  | int | i_flags
| ) |  |

Seek in the disc and change the current key if requested.

Parameters

  dvdcss | a libdvdcss instance
  i_blocks | an absolute block offset to seek to
  i_flags | DVDCSS_NOFLAGS, optionally ORed with one of DVDCSS_SEEK_KEY or DVDCSS_SEEK_MPEG

Returns
  the new position in blocks or a negative value in case an error happened.

This function seeks to the requested position, in logical blocks.

You typically set `i_flags` to DVDCSS_NOFLAGS when seeking in a .IFO.

If DVDCSS_SEEK_MPEG is specified in `i_flags` and if libdvdcss finds it 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 file.

If DVDCSS_SEEK_KEY is specified, the title key will always be checked, even with the "title" method. This flag is typically used when seeking in a new title.

References DVDCSS_SEEK_KEY, and DVDCSS_SEEK_MPEG.