trunk 20080912
[gitenigma.git] / include / lib / dvb / lowlevel / pat.h
blob01b79ed672f5f9e81102b9b90ef6cce01a0a7034
2 /*
3 * PROGRAM ASSOCIATION TABLE
5 * Copyright (C) 1998 Thomas Mirlacher
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program; if not, write to the Free Software
19 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 * The author may be reached as dent@cosy.sbg.ac.at, or
22 * Thomas Mirlacher, Jakob-Haringerstr. 2, A-5020 Salzburg,
23 * Austria
25 *------------------------------------------------------------
29 #ifndef __PAT_H__
30 #define __PAT_H__
32 #include <sys/types.h>
34 #define PAT_LEN 8
36 typedef struct {
37 u_char table_id :8;
39 #if BYTE_ORDER == BIG_ENDIAN
40 u_char section_syntax_indicator :1;
41 u_char dummy :1; // has to be 0
42 u_char :2;
43 u_char section_length_hi :4;
44 #else
45 u_char section_length_hi :4;
46 u_char :2;
47 u_char dummy :1; // has to be 0
48 u_char section_syntax_indicator :1;
49 #endif
51 u_char section_length_lo :8;
53 u_char transport_stream_id_hi :8;
54 u_char transport_stream_id_lo :8;
56 #if BYTE_ORDER == BIG_ENDIAN
57 u_char :2;
58 u_char version_number :5;
59 u_char current_next_indicator :1;
60 #else
61 u_char current_next_indicator :1;
62 u_char version_number :5;
63 u_char :2;
64 #endif
66 u_char section_number :8;
67 u_char last_section_number :8;
68 } pat_t;
70 #define PAT_PROG_LEN 4
72 typedef struct {
73 u_char program_number_hi :8;
74 u_char program_number_lo :8;
76 #if BYTE_ORDER == BIG_ENDIAN
77 u_char :3;
78 u_char network_pid_hi :5;
79 #else
80 u_char network_pid_hi :5;
81 u_char :3;
82 #endif
84 u_char network_pid_lo :8;
85 /* or program_map_pid (if prog_num=0)*/
86 } pat_prog_t;
88 #endif