libdvbv5: lib/include/libdvbv5/dvb-file.h Source File

libdvbv5 1.32.0 Library to work with Digital TV devices on Linux

dvb-file.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2011-2014 - Mauro Carvalho Chehab
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU Lesser General Public License as published by
6 * the Free Software Foundation version 2.1 of the License.
7 *
8 * This program is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 * GNU Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public License
14 * along with this program; if not, write to the Free Software
15 */
16#ifndef _DVB_FILE_H
17#define _DVB_FILE_H
18
19#include "dvb-fe.h"
20
42
43/*
44 * DVB structures used to represent all files opened by the libdvbv5 library.
45 *
46 * Those structs represents each individual entry on a file, and the file
47 * as a whole.
48 */
49
58 struct dvb_elementary_pid {
59 uint8_t type;
60 uint16_t pid;
61};
62
104 struct dvb_entry {
105 struct dtv_property props[DTV_MAX_COMMAND];
106 unsigned int n_props;
107 struct dvb_entry *next;
108 uint16_t service_id;
109 uint16_t *video_pid, *audio_pid;
110 struct dvb_elementary_pid *other_el_pid;
111 unsigned video_pid_len, audio_pid_len, other_el_pid_len;
112 char *channel;
113 char *vchannel;
114
115 char *location;
116
117 int sat_number;
118 unsigned freq_bpf;
119 unsigned diseqc_wait;
120 char *lnb;
121
122 uint16_t network_id;
123 uint16_t transport_id;
124
125};
126
135 struct dvb_file {
136 char *fname;
137 int n_entries;
138 struct dvb_entry *first_entry;
139};
140
141/*
142 * DVB file format tables
143 *
144 * The structs below are used to represent oneline formats like the ones
145 * commonly found on DVB legacy applications.
146 */
147
165 struct dvb_parse_table {
166 unsigned int prop;
167 const char **table;
168 unsigned int size;
169 int mult_factor;
170 int has_default_value;
171 int default_value;
172};
173
185 struct dvb_parse_struct {
186 char *id;
187 uint32_t delsys;
188 const struct dvb_parse_table *table;
189 unsigned int size;
190};
191
203 struct dvb_parse_file {
204 int has_delsys_id;
205 char *delimiter;
206 struct dvb_parse_struct formats[];
207};
208
232 enum dvb_file_formats {
233 FILE_UNKNOWN,
234 FILE_ZAP,
235 FILE_CHANNEL,
236 FILE_DVBV5,
237 FILE_VDR,
238};
239
240struct dvb_v5_descriptors;
241
242#ifdef __cplusplus
243extern "C" {
244#endif
245
255 static inline void dvb_file_free(struct dvb_file *dvb_file)
256{
257 struct dvb_entry *entry = dvb_file->first_entry, *next;
258 while (entry) {
259 next = entry->next;
260 if (entry->channel)
261 free(entry->channel);
262 if (entry->vchannel)
263 free(entry->vchannel);
264 if (entry->location)
265 free(entry->location);
266 if (entry->video_pid)
267 free(entry->video_pid);
268 if (entry->audio_pid)
269 free(entry->audio_pid);
270 if (entry->other_el_pid)
271 free(entry->other_el_pid);
272 if (entry->lnb)
273 free(entry->lnb);
274 free(entry);
275 entry = next;
276 }
277 free(dvb_file);
278}
279
280/*
281 * File format description structures defined for the several formats that
282 * the library can read natively.
283 */
284
289extern const struct dvb_parse_file channel_file_format;
290
295extern const struct dvb_parse_file channel_file_zap_format;
296
297/*
298 * Prototypes for the several functions defined at dvb-file.c
299 */
300
310 struct dvb_file *dvb_read_file(const char *fname);
311
321 int dvb_write_file(const char *fname, struct dvb_file *dvb_file);
322
335 struct dvb_file *dvb_read_file_format(const char *fname,
336 uint32_t delsys,
337 enum dvb_file_formats format);
338
351 int dvb_write_file_format(const char *fname,
352 struct dvb_file *dvb_file,
353 uint32_t delsys,
354 enum dvb_file_formats format);
355
356
372 int dvb_store_entry_prop(struct dvb_entry *entry,
373 uint32_t cmd, uint32_t value);
374
389 int dvb_retrieve_entry_prop(struct dvb_entry *entry,
390 uint32_t cmd, uint32_t *value);
391
425 int dvb_store_channel(struct dvb_file **dvb_file,
426 struct dvb_v5_fe_parms *parms,
427 struct dvb_v5_descriptors *dvb_desc,
428 int get_detected, int get_nit);
429
448 int dvb_parse_delsys(const char *name);
449
461 enum dvb_file_formats dvb_parse_format(const char *name);
462
463/*
464 * Routines to read a non-libdvbv5 format. They're called by
465 * dvb_read_file_format() or dvb_write_file_format()
466 */
467
480 struct dvb_file *dvb_parse_format_oneline(const char *fname,
481 uint32_t delsys,
482 const struct dvb_parse_file *parse_file);
483
497 int dvb_write_format_oneline(const char *fname,
498 struct dvb_file *dvb_file,
499 uint32_t delsys,
500 const struct dvb_parse_file *parse_file);
501
513 int dvb_write_format_vdr(const char *fname,
514 struct dvb_file *dvb_file);
515
516#ifdef __cplusplus
517}
518#endif
519
520#endif // _DVB_FILE_H
dvb-fe.h
Provides interfaces to deal with DVB frontend.
FILE_CHANNEL
@ FILE_CHANNEL
File is at the dvb-apps output format for dvb-zap.
Definition dvb-file.h:235
FILE_ZAP
@ FILE_ZAP
File is at the dvb-apps "dvbzap" format.
Definition dvb-file.h:234
FILE_UNKNOWN
@ FILE_UNKNOWN
File format is unknown.
Definition dvb-file.h:233
FILE_DVBV5
@ FILE_DVBV5
File is at libdvbv5 format.
Definition dvb-file.h:236
FILE_VDR
@ FILE_VDR
File is at DVR format (as supported on version 2.1.6).
Definition dvb-file.h:237
dvb_file_formats
dvb_file_formats
Known file formats.
Definition dvb-file.h:232
dvb_read_file_format
struct dvb_file * dvb_read_file_format(const char *fname, uint32_t delsys, enum dvb_file_formats format)
Read a file on any format natively supported by the library.
dvb_retrieve_entry_prop
int dvb_retrieve_entry_prop(struct dvb_entry *entry, uint32_t cmd, uint32_t *value)
Retrieves the value associated witha key on a DVB file entry.
dvb_write_file_format
int dvb_write_file_format(const char *fname, struct dvb_file *dvb_file, uint32_t delsys, enum dvb_file_formats format)
Write a file on any format natively supported by the library.
dvb_file_free
static void dvb_file_free(struct dvb_file *dvb_file)
Deallocates memory associated with a struct dvb_file.
Definition dvb-file.h:255
dvb_parse_format_oneline
struct dvb_file * dvb_parse_format_oneline(const char *fname, uint32_t delsys, const struct dvb_parse_file *parse_file)
Read and parses a one line file format.
dvb_store_entry_prop
int dvb_store_entry_prop(struct dvb_entry *entry, uint32_t cmd, uint32_t value)
Stores a key/value pair on a DVB file entry.
channel_file_zap_format
const struct dvb_parse_file channel_file_zap_format
File format definitions for dvb-apps zap format.
dvb_store_channel
int dvb_store_channel(struct dvb_file **dvb_file, struct dvb_v5_fe_parms *parms, struct dvb_v5_descriptors *dvb_desc, int get_detected, int get_nit)
stored a new scanned channel into a dvb_file struct
dvb_write_format_oneline
int dvb_write_format_oneline(const char *fname, struct dvb_file *dvb_file, uint32_t delsys, const struct dvb_parse_file *parse_file)
Writes a file into an one line file format.
dvb_write_format_vdr
int dvb_write_format_vdr(const char *fname, struct dvb_file *dvb_file)
Writes a file into vdr format (compatible up to version 2.1).
dvb_read_file
struct dvb_file * dvb_read_file(const char *fname)
Read a file at libdvbv5 format.
dvb_parse_format
enum dvb_file_formats dvb_parse_format(const char *name)
Ancillary function that parses the name of a file format.
dvb_write_file
int dvb_write_file(const char *fname, struct dvb_file *dvb_file)
Write a file at libdvbv5 format.
channel_file_format
const struct dvb_parse_file channel_file_format
File format definitions for dvb-apps channel format.
dvb_parse_delsys
int dvb_parse_delsys(const char *name)
Ancillary function that seeks for a delivery system.
dvb_desc
Linked list containing the several descriptors found on a MPEG-TS table.
Definition descriptors.h:117
dvb_elementary_pid
associates an elementary stream type with its PID
Definition dvb-file.h:58
dvb_elementary_pid::pid
uint16_t pid
Definition dvb-file.h:60
dvb_elementary_pid::type
uint8_t type
Definition dvb-file.h:59
dvb_entry
Represents one entry on a DTV file.
Definition dvb-file.h:104
dvb_entry::audio_pid_len
unsigned audio_pid_len
Definition dvb-file.h:111
dvb_entry::lnb
char * lnb
Definition dvb-file.h:120
dvb_entry::location
char * location
Definition dvb-file.h:115
dvb_entry::n_props
unsigned int n_props
Definition dvb-file.h:106
dvb_entry::props
struct dtv_property props[DTV_MAX_COMMAND]
Definition dvb-file.h:105
dvb_entry::other_el_pid
struct dvb_elementary_pid * other_el_pid
Definition dvb-file.h:110
dvb_entry::video_pid
uint16_t * video_pid
Definition dvb-file.h:109
dvb_entry::audio_pid
uint16_t * audio_pid
Definition dvb-file.h:109
dvb_entry::diseqc_wait
unsigned diseqc_wait
Definition dvb-file.h:119
dvb_entry::video_pid_len
unsigned video_pid_len
Definition dvb-file.h:111
dvb_entry::other_el_pid_len
unsigned other_el_pid_len
Definition dvb-file.h:111
dvb_entry::network_id
uint16_t network_id
Definition dvb-file.h:122
dvb_entry::channel
char * channel
Definition dvb-file.h:112
dvb_entry::transport_id
uint16_t transport_id
Definition dvb-file.h:123
dvb_entry::service_id
uint16_t service_id
Definition dvb-file.h:108
dvb_entry::next
struct dvb_entry * next
Definition dvb-file.h:107
dvb_entry::freq_bpf
unsigned freq_bpf
Definition dvb-file.h:118
dvb_entry::sat_number
int sat_number
Definition dvb-file.h:117
dvb_entry::vchannel
char * vchannel
Definition dvb-file.h:113
dvb_file
Describes an entire DVB file opened.
Definition dvb-file.h:135
dvb_file::n_entries
int n_entries
Definition dvb-file.h:137
dvb_file::first_entry
struct dvb_entry * first_entry
Definition dvb-file.h:138
dvb_file::fname
char * fname
Definition dvb-file.h:136
dvb_parse_file
Describes an entire file format.
Definition dvb-file.h:203
dvb_parse_file::delimiter
char * delimiter
Definition dvb-file.h:205
dvb_parse_file::formats
struct dvb_parse_struct formats[]
Definition dvb-file.h:206
dvb_parse_file::has_delsys_id
int has_delsys_id
Definition dvb-file.h:204
dvb_parse_struct
Describes the format to parse an specific delivery system.
Definition dvb-file.h:185
dvb_parse_struct::size
unsigned int size
Definition dvb-file.h:189
dvb_parse_struct::id
char * id
Definition dvb-file.h:186
dvb_parse_struct::delsys
uint32_t delsys
Definition dvb-file.h:187
dvb_parse_struct::table
const struct dvb_parse_table * table
Definition dvb-file.h:188
dvb_parse_table
Describes the fields to parse on a file.
Definition dvb-file.h:165
dvb_parse_table::prop
unsigned int prop
Definition dvb-file.h:166
dvb_parse_table::has_default_value
int has_default_value
Definition dvb-file.h:170
dvb_parse_table::table
const char ** table
Definition dvb-file.h:167
dvb_parse_table::size
unsigned int size
Definition dvb-file.h:168
dvb_parse_table::mult_factor
int mult_factor
Definition dvb-file.h:169
dvb_parse_table::default_value
int default_value
Definition dvb-file.h:171
dvb_v5_descriptors
Contains the descriptors needed to scan the Service ID and other relevant info at a MPEG-TS Digital T...
Definition dvb-scan.h:87
dvb_v5_fe_parms
Keeps data needed to handle the DVB frontend.
Definition dvb-fe.h:117