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;
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 
390  uint32_t cmd, uint32_t *value);
391 
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 
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 
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_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_entry::other_el_pid
struct dvb_elementary_pid * other_el_pid
Definition: dvb-file.h:110
dvb_entry::vchannel
char * vchannel
Definition: dvb-file.h:113
dvb_entry::audio_pid
uint16_t * audio_pid
Definition: dvb-file.h:109
dvb_entry::network_id
uint16_t network_id
Definition: dvb-file.h:122
dvb_parse_struct::size
unsigned int size
Definition: dvb-file.h:189
dvb_entry::video_pid_len
unsigned video_pid_len
Definition: dvb-file.h:111
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_entry::service_id
uint16_t service_id
Definition: dvb-file.h:108
dvb_elementary_pid::pid
uint16_t pid
Definition: dvb-file.h:60
channel_file_format
const struct dvb_parse_file channel_file_format
File format definitions for dvb-apps channel format.
dvb_parse_file
Describes an entire file format.
Definition: dvb-file.h:203
dvb_entry::lnb
char * lnb
Definition: dvb-file.h:120
dvb_entry::sat_number
int sat_number
Definition: dvb-file.h:117
dvb_parse_struct::table
const struct dvb_parse_table * table
Definition: dvb-file.h:188
dvb_entry::other_el_pid_len
unsigned other_el_pid_len
Definition: dvb-file.h:111
dvb_entry::n_props
unsigned int n_props
Definition: dvb-file.h:106
dvb_parse_table::prop
unsigned int prop
Definition: dvb-file.h:166
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_parse_file::formats
struct dvb_parse_struct formats[]
Definition: dvb-file.h:206
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_parse_struct::id
char * id
Definition: dvb-file.h:186
dvb_elementary_pid::type
uint8_t type
Definition: dvb-file.h:59
dvb_file::first_entry
struct dvb_entry * first_entry
Definition: dvb-file.h:138
dvb_parse_table::table
const char ** table
Definition: dvb-file.h:167
dvb_write_file
int dvb_write_file(const char *fname, struct dvb_file *dvb_file)
Write a file at libdvbv5 format.
dvb_entry::props
struct dtv_property props[DTV_MAX_COMMAND]
Definition: dvb-file.h:105
dvb_v5_fe_parms
Keeps data needed to handle the DVB frontend.
Definition: dvb-fe.h:117
dvb_file
Describes an entire DVB file opened.
Definition: dvb-file.h:135
dvb_file_formats
dvb_file_formats
Known file formats.
Definition: dvb-file.h:232
dvb_parse_file::has_delsys_id
int has_delsys_id
Definition: dvb-file.h:204
dvb_entry::video_pid
uint16_t * video_pid
Definition: dvb-file.h:109
dvb_entry::next
struct dvb_entry * next
Definition: dvb-file.h:107
FILE_CHANNEL
@ FILE_CHANNEL
File is at the dvb-apps output format for dvb-zap.
Definition: dvb-file.h:235
FILE_DVBV5
@ FILE_DVBV5
File is at libdvbv5 format.
Definition: dvb-file.h:236
dvb_read_file
struct dvb_file * dvb_read_file(const char *fname)
Read a file at libdvbv5 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_parse_format
enum dvb_file_formats dvb_parse_format(const char *name)
Ancillary function that parses the name of a file format.
dvb_entry::freq_bpf
unsigned freq_bpf
Definition: dvb-file.h:118
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.
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_parse_table::mult_factor
int mult_factor
Definition: dvb-file.h:169
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_table::size
unsigned int size
Definition: dvb-file.h:168
dvb-fe.h
Provides interfaces to deal with DVB frontend.
dvb_elementary_pid
associates an elementary stream type with its PID
Definition: dvb-file.h:58
channel_file_zap_format
const struct dvb_parse_file channel_file_zap_format
File format definitions for dvb-apps zap format.
dvb_file::fname
char * fname
Definition: dvb-file.h:136
dvb_entry::location
char * location
Definition: dvb-file.h:115
dvb_parse_table::default_value
int default_value
Definition: dvb-file.h:171
dvb_entry::transport_id
uint16_t transport_id
Definition: dvb-file.h:123
dvb_parse_struct::delsys
uint32_t delsys
Definition: dvb-file.h:187
dvb_entry
Represents one entry on a DTV file.
Definition: dvb-file.h:104
dvb_parse_table
Describes the fields to parse on a file.
Definition: dvb-file.h:165
dvb_parse_table::has_default_value
int has_default_value
Definition: dvb-file.h:170
dvb_parse_struct
Describes the format to parse an specific delivery system.
Definition: dvb-file.h:185
dvb_entry::diseqc_wait
unsigned diseqc_wait
Definition: dvb-file.h:119
FILE_VDR
@ FILE_VDR
File is at DVR format (as supported on version 2.1.6).
Definition: dvb-file.h:237
dvb_entry::audio_pid_len
unsigned audio_pid_len
Definition: dvb-file.h:111
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_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
FILE_UNKNOWN
@ FILE_UNKNOWN
File format is unknown.
Definition: dvb-file.h:233
dvb_entry::channel
char * channel
Definition: dvb-file.h:112
FILE_ZAP
@ FILE_ZAP
File is at the dvb-apps "dvbzap" format.
Definition: dvb-file.h:234
dvb_desc
Linked list containing the several descriptors found on a MPEG-TS table.
Definition: descriptors.h:117
dvb_file::n_entries
int n_entries
Definition: dvb-file.h:137
dvb_parse_delsys
int dvb_parse_delsys(const char *name)
Ancillary function that seeks for a delivery system.
dvb_parse_file::delimiter
char * delimiter
Definition: dvb-file.h:205