This file is indexed.

/usr/include/dvbpsi/atsc_vct.h is in libdvbpsi-dev 1.2.0-1.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
/*
Copyright (C) 2006  Adam Charrett

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

vct.h

Decode PSIP Virtual Channel Table.

*/

/*!
 * \file atsc_vct.h
 * \author Adam Charrett
 * \brief Decode PSIP Virtual Channel Table. (ATSC VCT).
 */

#ifndef _ATSC_VCT_H
#define _ATSC_VCT_H

#ifdef __cplusplus
extern "C" {
#endif

/*****************************************************************************
 * dvbpsi_atsc_vct_channel_t
 *****************************************************************************/
/*!
 * \struct dvbpsi_atsc_vct_channel_s
 * \brief VCT channel structure.
 *
 * This structure is used to store a decoded VCT channel information.
 */
/*!
 * \typedef struct dvbpsi_atsc_vct_channel_s dvbpsi_atsc_vct_channel_t
 * \brief dvbpsi_atsc_vct_channel_t type definition.
 */
typedef struct dvbpsi_atsc_vct_channel_s
{
    uint8_t   i_short_name[14];/*!< Channel name (7*UTF16-BE)*/
    uint16_t  i_major_number;  /*!< Channel major number */
    uint16_t  i_minor_number;  /*!< Channel minor number */

    uint8_t   i_modulation;    /*!< Modulation mode. */
    uint32_t  i_carrier_freq;  /*!< Carrier center frequency. */
    uint16_t  i_channel_tsid;  /*!< Channel Transport stream id. */
    uint16_t  i_program_number;/*!< Channel MPEG program number. */
    uint8_t   i_etm_location;  /*!< Extended Text Message location. */
    bool      b_access_controlled; /*!< Whether the channel is scrambled. */
    bool      b_path_select;   /*!< Path selection, only used by CVCT. */
    bool      b_out_of_band;   /*!< Whether the channel is carried on the out-of-band
                                                      physical transmission channel, only used by CVCT. */
    bool      b_hidden;        /*!< Not accessible directly by the user. */
    bool      b_hide_guide;    /*!< Whether the channel should not be displayed in the guide. */

    uint8_t   i_service_type;  /*!< Channel type. */
    uint16_t  i_source_id;     /*!< Programming source associated with the channel.*/

    dvbpsi_descriptor_t *p_first_descriptor;  /*!< First descriptor. */

    struct dvbpsi_atsc_vct_channel_s *p_next; /*!< next element of the list */
} dvbpsi_atsc_vct_channel_t;

/*****************************************************************************
 * dvbpsi_atsc_vct_t
 *****************************************************************************/
/*!
 * \struct dvbpsi_atsc_vct_s
 * \brief VCT structure.
 *
 * This structure is used to store a decoded VCT.
 */
/*!
 * \typedef struct dvbpsi_atsc_vct_s dvbpsi_atsc_vct_t
 * \brief dvbpsi_atsc_vct_t type definition.
 */
typedef struct dvbpsi_atsc_vct_s
{
    uint8_t  i_table_id;         /*!< table id */
    uint16_t i_extension;        /*!< subtable id */

    uint8_t  i_version;          /*!< version_number */
    bool     b_current_next;     /*!< current_next_indicator */
    uint8_t  i_protocol;         /*!< PSIP Protocol version */
    bool     b_cable_vct;        /*!< 1 if this is a cable VCT, 0 if it is a Terrestrial VCT. */

    dvbpsi_descriptor_t         *p_first_descriptor; /*!< First descriptor. */
    dvbpsi_atsc_vct_channel_t   *p_first_channel;    /*!< First channel information structure. */

} dvbpsi_atsc_vct_t;

/*****************************************************************************
 * dvbpsi_vct_callback
 *****************************************************************************/
/*!
 * \typedef void (* dvbpsi_atsc_vct_callback)(void* p_cb_data,
 *                                       dvbpsi_atsc_vct_t* p_new_vct)
 * \brief Callback type definition.
 */
typedef void (* dvbpsi_atsc_vct_callback)(void* p_cb_data, dvbpsi_atsc_vct_t* p_new_vct);

/*****************************************************************************
 * dvbpsi_atsc_AttachVCT
 *****************************************************************************/
/*!
 * \fn bool dvbpsi_atsc_AttachVCT(dvbpsi_t *p_dvbpsi, uint8_t i_table_id,
          uint16_t i_extension, dvbpsi_atsc_vct_callback pf_vct_callback,
                           void* p_cb_data)
 * \brief Creation and initialization of a VCT decoder.
 * \param p_dvbpsi dvbpsi handle to Subtable demultiplexor to which the decoder is attached.
 * \param i_table_id Table ID, 0xC8 or 0xC9.
 * \param i_extension Table ID extension, here TS ID.
 * \param pf_vct_callback function to call back on new VCT.
 * \param p_cb_data private data given in argument to the callback.
 * \return true if everything went ok, else false.
 */
bool dvbpsi_atsc_AttachVCT(dvbpsi_t *p_dvbpsi, uint8_t i_table_id,
          uint16_t i_extension, dvbpsi_atsc_vct_callback pf_vct_callback,
                           void* p_cb_data);

/*****************************************************************************
 * dvbpsi_DetachVCT
 *****************************************************************************/
/*!
 * \fn void dvbpsi_atsc_DetachVCT(dvbpsi_t *p_dvbpsi, uint8_t i_table_id,
 *                                uint16_t i_extension)
 *
 * \brief Destroy a VCT decoder.
 * \param p_dvbpsi dvbpsi handle to Subtable demultiplexor to which the decoder is attached.
 * \param i_table_id Table ID, 0xC8 or 0xC9.
 * \param i_extension Table ID extension, here TS ID.
 * \return nothing.
 */
void dvbpsi_atsc_DetachVCT(dvbpsi_t *p_dvbpsi, uint8_t i_table_id, uint16_t i_extension);

/*****************************************************************************
 * dvbpsi_atsc_InitVCT
 *****************************************************************************/
/*!
 * \fn void dvbpsi_atsc_InitVCT(dvbpsi_atsc_vct_t* p_vct, uint8_t i_table_id,
                         uint16_t i_extension, uint8_t i_protocol, bool b_cable_vct,
                         uint8_t i_version, bool b_current_next)
 * \brief Initialize a user-allocated dvbpsi_atsc_vct_t structure.
 * \param p_vct pointer to the VCT structure
 * \param i_table_id Table ID, 0xC8 or 0xC9.
 * \param i_extension Table ID extension, here TS ID.
 * \param i_protocol PSIP Protocol version.
 * \param b_cable_vct Whether this is CVCT or a TVCT.
 * \param i_version VCT version
 * \param b_current_next current next indicator
 * \return nothing.
 */
void dvbpsi_atsc_InitVCT(dvbpsi_atsc_vct_t* p_vct, uint8_t i_table_id,
                         uint16_t i_extension, uint8_t i_protocol, bool b_cable_vct,
                         uint8_t i_version, bool b_current_next);

/*****************************************************************************
 * dvbpsi_atsc_NewVCT
 *****************************************************************************/
/*!
 * \fn dvbpsi_atsc_vct_t *dvbpsi_atsc_NewVCT(uint8_t i_table_id, uint16_t i_extension,
 *                   uint8_t i_protocol, bool b_cable_vct, uint8_t i_version, bool b_current_next);
 *
 * \brief Allocate and initialize a new dvbpsi_vct_t structure.
 * \param i_table_id Table ID, 0xC8 or 0xC9.
 * \param i_extension Table ID extension, here TS ID.
 * \param i_protocol PSIP Protocol version.
 * \param b_cable_vct Whether this is CVCT or a TVCT.
 * \param i_version VCT version
 * \param b_current_next current next indicator
 * \return p_vct pointer to the VCT structure
 */
dvbpsi_atsc_vct_t *dvbpsi_atsc_NewVCT(uint8_t i_table_id, uint16_t i_extension,
                    uint8_t i_protocol, bool b_cable_vct, uint8_t i_version,
                    bool b_current_next);

/*****************************************************************************
 * dvbpsi_atsc_EmptyVCT
 *****************************************************************************/
/*!
 * \fn void dvbpsi_atsc_EmptyVCT(dvbpsi_atsc_vct_t* p_vct)
 * \brief Clean a dvbpsi_vct_t structure.
 * \param p_vct pointer to the VCT structure
 * \return nothing.
 */
void dvbpsi_atsc_EmptyVCT(dvbpsi_atsc_vct_t *p_vct);

/*****************************************************************************
 * dvbpsi_atsc_DeleteVCT
 *****************************************************************************/
/*!
 * \fn void dvbpsi_atsc_DeleteVCT(dvbpsi_atsc_vct_t *p_vct)
 * \brief Clean and free a dvbpsi_vct_t structure.
 * \param p_vct pointer to the VCT structure
 * \return nothing.
 */
void dvbpsi_atsc_DeleteVCT(dvbpsi_atsc_vct_t *p_vct);

#ifdef __cplusplus
};
#endif

#endif