libdvbv5 1.22.1
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
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
59 uint8_t type;
60 uint16_t pid;
61};
62
104struct dvb_entry {
105 struct dtv_property props[DTV_MAX_COMMAND];
106 unsigned int n_props;
108 uint16_t service_id;
109 uint16_t *video_pid, *audio_pid;
112 char *channel;
113 char *vchannel;
114
115 char *location;
116
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
135struct dvb_file {
136 char *fname;
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
166 unsigned int prop;
167 const char **table;
168 unsigned int size;
172};
186 char *id;
187 uint32_t delsys;
188 const struct dvb_parse_table *table;
189 unsigned int size;
190};
191
207};
208
238};
239
240struct dvb_v5_descriptors;
241
242#ifdef __cplusplus
243extern "C" {
244#endif
245
255static 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
310struct dvb_file *dvb_read_file(const char *fname);
311
321int dvb_write_file(const char *fname, struct dvb_file *dvb_file);
322
336 uint32_t delsys,
337 enum dvb_file_formats format);
338
352 struct dvb_file *dvb_file,
353 uint32_t delsys,
354 enum dvb_file_formats format);
355
356
373 uint32_t cmd, uint32_t value);
374
390 uint32_t cmd, uint32_t *value);
391
426 struct dvb_v5_fe_parms *parms,
428 int get_detected, int get_nit);
429
448int dvb_parse_delsys(const char *name);
449
461enum 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
481 uint32_t delsys,
482 const struct dvb_parse_file *parse_file);
483
498 struct dvb_file *dvb_file,
499 uint32_t delsys,
500 const struct dvb_parse_file *parse_file);
501
514 struct dvb_file *dvb_file);
515
516#ifdef __cplusplus
517}
518#endif
519
520#endif // _DVB_FILE_H
Provides interfaces to deal with DVB frontend.
@ FILE_VDR
File is at DVR format (as supported on version 2.1.6).
Definition: dvb-file.h:237
@ FILE_ZAP
File is at the dvb-apps "dvbzap" format.
Definition: dvb-file.h:234
@ FILE_CHANNEL
File is at the dvb-apps output format for dvb-zap.
Definition: dvb-file.h:235
@ FILE_UNKNOWN
File format is unknown.
Definition: dvb-file.h:233
@ FILE_DVBV5
File is at libdvbv5 format.
Definition: dvb-file.h:236
dvb_file_formats
Known file formats.
Definition: dvb-file.h:232
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.
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.
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.
static void dvb_file_free(struct dvb_file *dvb_file)
Deallocates memory associated with a struct dvb_file.
Definition: dvb-file.h:255
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.
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.
const struct dvb_parse_file channel_file_zap_format
File format definitions for dvb-apps zap format.
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
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.
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)
struct dvb_file * dvb_read_file(const char *fname)
Read a file at libdvbv5 format.
enum dvb_file_formats dvb_parse_format(const char *name)
Ancillary function that parses the name of a file format.
int dvb_write_file(const char *fname, struct dvb_file *dvb_file)
Write a file at libdvbv5 format.
const struct dvb_parse_file channel_file_format
File format definitions for dvb-apps channel format.
int dvb_parse_delsys(const char *name)
Ancillary function that seeks for a delivery system.
Linked list containing the several descriptors found on a MPEG-TS table.
Definition: descriptors.h:117
associates an elementary stream type with its PID
Definition: dvb-file.h:58
uint16_t pid
Definition: dvb-file.h:60
Represents one entry on a DTV file.
Definition: dvb-file.h:104
unsigned audio_pid_len
Definition: dvb-file.h:111
char * lnb
Definition: dvb-file.h:120
char * location
Definition: dvb-file.h:115
unsigned int n_props
Definition: dvb-file.h:106
struct dtv_property props[DTV_MAX_COMMAND]
Definition: dvb-file.h:105
struct dvb_elementary_pid * other_el_pid
Definition: dvb-file.h:110
uint16_t * video_pid
Definition: dvb-file.h:109
uint16_t * audio_pid
Definition: dvb-file.h:109
unsigned diseqc_wait
Definition: dvb-file.h:119
unsigned video_pid_len
Definition: dvb-file.h:111
unsigned other_el_pid_len
Definition: dvb-file.h:111
uint16_t network_id
Definition: dvb-file.h:122
char * channel
Definition: dvb-file.h:112
uint16_t transport_id
Definition: dvb-file.h:123
uint16_t service_id
Definition: dvb-file.h:108
struct dvb_entry * next
Definition: dvb-file.h:107
unsigned freq_bpf
Definition: dvb-file.h:118
int sat_number
Definition: dvb-file.h:117
char * vchannel
Definition: dvb-file.h:113
Describes an entire DVB file opened.
Definition: dvb-file.h:135
int n_entries
Definition: dvb-file.h:137
struct dvb_entry * first_entry
Definition: dvb-file.h:138
char * fname
Definition: dvb-file.h:136
Describes an entire file format.
Definition: dvb-file.h:203
char * delimiter
Definition: dvb-file.h:205
struct dvb_parse_struct formats[]
Definition: dvb-file.h:206
int has_delsys_id
Definition: dvb-file.h:204
Describes the format to parse an specific delivery system.
Definition: dvb-file.h:185
unsigned int size
Definition: dvb-file.h:189
uint32_t delsys
Definition: dvb-file.h:187
const struct dvb_parse_table * table
Definition: dvb-file.h:188
Describes the fields to parse on a file.
Definition: dvb-file.h:165
unsigned int prop
Definition: dvb-file.h:166
int has_default_value
Definition: dvb-file.h:170
const char ** table
Definition: dvb-file.h:167
unsigned int size
Definition: dvb-file.h:168
Contains the descriptors needed to scan the Service ID and other relevant info at a MPEG-TS Digital T...
Definition: dvb-scan.h:87
Keeps data needed to handle the DVB frontend.
Definition: dvb-fe.h:117