libdvbv5  1.20.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 
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 
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;
111  unsigned video_pid_len, audio_pid_len, other_el_pid_len;
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 
135 struct 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 
205  char *delimiter;
206  struct dvb_parse_struct formats[];
207 };
208 
238 };
239 
240 struct dvb_v5_descriptors;
241 
242 #ifdef __cplusplus
243 extern "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 
289 extern const struct dvb_parse_file channel_file_format;
290 
295 extern 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,
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
File is at the dvb-apps output format for dvb-zap.
Definition: dvb-file.h:235
unsigned video_pid_len
Definition: dvb-file.h:111
char * channel
Definition: dvb-file.h:112
int n_entries
Definition: dvb-file.h:137
Describes an entire file format.
Definition: dvb-file.h:203
int dvb_parse_delsys(const char *name)
Ancillary function that seeks for a delivery system.
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)
char * delimiter
Definition: dvb-file.h:205
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.
File format is unknown.
Definition: dvb-file.h:233
Describes an entire DVB file opened.
Definition: dvb-file.h:135
Describes the format to parse an specific delivery system.
Definition: dvb-file.h:185
struct dvb_elementary_pid * other_el_pid
Definition: dvb-file.h:110
int has_default_value
Definition: dvb-file.h:170
File is at libdvbv5 format.
Definition: dvb-file.h:236
File is at DVR format (as supported on version 2.1.6).
Definition: dvb-file.h:237
uint16_t * audio_pid
Definition: dvb-file.h:109
char * vchannel
Definition: dvb-file.h:113
const struct dvb_parse_table * table
Definition: dvb-file.h:188
char * lnb
Definition: dvb-file.h:120
const char ** table
Definition: dvb-file.h:167
unsigned int n_props
Definition: dvb-file.h:106
uint16_t service_id
Definition: dvb-file.h:108
File is at the dvb-apps "dvbzap" format.
Definition: dvb-file.h:234
unsigned int size
Definition: dvb-file.h:189
dvb_file_formats
Known file formats.
Definition: dvb-file.h:232
int sat_number
Definition: dvb-file.h:117
unsigned int size
Definition: dvb-file.h:168
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.
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_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
unsigned int prop
Definition: dvb-file.h:166
struct dvb_entry * next
Definition: dvb-file.h:107
struct dvb_entry * first_entry
Definition: dvb-file.h:138
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.
Keeps data needed to handle the DVB frontend.
Definition: dvb-fe.h:117
char * fname
Definition: dvb-file.h:136
int dvb_write_file(const char *fname, struct dvb_file *dvb_file)
Write a file at libdvbv5 format.
unsigned diseqc_wait
Definition: dvb-file.h:119
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.
int has_delsys_id
Definition: dvb-file.h:204
uint16_t * video_pid
Definition: dvb-file.h:109
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.
Describes the fields to parse on a file.
Definition: dvb-file.h:165
enum dvb_file_formats dvb_parse_format(const char *name)
Ancillary function that parses the name of a file format.
unsigned freq_bpf
Definition: dvb-file.h:118
Linked list containing the several descriptors found on a MPEG-TS table.
Definition: descriptors.h:117
uint16_t transport_id
Definition: dvb-file.h:123
associates an elementary stream type with its PID
Definition: dvb-file.h:58
char * location
Definition: dvb-file.h:115
Represents one entry on a DTV file.
Definition: dvb-file.h:104
uint32_t delsys
Definition: dvb-file.h:187
Contains the descriptors needed to scan the Service ID and other relevant info at a MPEG-TS Digital T...
Definition: dvb-scan.h:87
uint16_t pid
Definition: dvb-file.h:60
struct dvb_file * dvb_read_file(const char *fname)
Read a file at libdvbv5 format.
Provides interfaces to deal with DVB frontend.
static void dvb_file_free(struct dvb_file *dvb_file)
Deallocates memory associated with a struct dvb_file.
Definition: dvb-file.h:255
uint16_t network_id
Definition: dvb-file.h:122