annotate libdvdcss/css.h @ 25661:293aeec83153

Replace the persistent CODECS_FLAG_SELECTED by a local "stringset" with an almost-trivial implementation. This allows making the builtin codec structs const, and it also makes clearer that this "selected" status is not used outside the init functions.
author reimar
date Sat, 12 Jan 2008 14:05:46 +0000
parents e68f255d7d64
children afa2cc0166be
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20613
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
1 /*****************************************************************************
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
2 * css.h: Structures for DVD authentication and unscrambling
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
3 *****************************************************************************
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
4 * Copyright (C) 1999-2001 VideoLAN
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
5 * $Id$
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
6 *
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
7 * Author: Stéphane Borel <stef@via.ecp.fr>
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
8 *
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
9 * based on:
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
10 * - css-auth by Derek Fawcus <derek@spider.com>
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
11 * - DVD CSS ioctls example program by Andrew T. Veliath <andrewtv@usa.net>
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
12 * - DeCSSPlus by Ethan Hawke
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
13 * - The Divide and conquer attack by Frank A. Stevenson <frank@funcom.com>
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
14 *
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
15 * This program is free software; you can redistribute it and/or modify
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
16 * it under the terms of the GNU General Public License as published by
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
17 * the Free Software Foundation; either version 2 of the License, or
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
18 * (at your option) any later version.
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
19 *
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
20 * This program is distributed in the hope that it will be useful,
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
23 * GNU General Public License for more details.
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
24 *
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
25 * You should have received a copy of the GNU General Public License
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
26 * along with this program; if not, write to the Free Software
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
27 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA.
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
28 *****************************************************************************/
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
29 #define KEY_SIZE 5
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
30
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
31 typedef uint8_t dvd_key_t[KEY_SIZE];
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
32
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
33 typedef struct dvd_title_s
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
34 {
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
35 int i_startlb;
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
36 dvd_key_t p_key;
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
37 struct dvd_title_s *p_next;
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
38 } dvd_title_t;
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
39
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
40 typedef struct css_s
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
41 {
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
42 int i_agid; /* Current Authenication Grant ID. */
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
43 dvd_key_t p_bus_key; /* Current session key. */
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
44 dvd_key_t p_disc_key; /* This DVD disc's key. */
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
45 dvd_key_t p_title_key; /* Current title key. */
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
46 } css_t;
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
47
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
48 /*****************************************************************************
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
49 * Prototypes in css.c
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
50 *****************************************************************************/
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
51 int _dvdcss_test ( dvdcss_t );
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
52 int _dvdcss_title ( dvdcss_t, int );
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
53 int _dvdcss_disckey ( dvdcss_t );
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
54 int _dvdcss_titlekey ( dvdcss_t, int , dvd_key_t );
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
55 int _dvdcss_unscramble ( uint8_t *, uint8_t * );
e68f255d7d64 Move libdvdcss into its own subdirectory.
diego
parents:
diff changeset
56