linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/7] libdvbv5: reunite atsc_table_header and dvb_table_header
@ 2014-04-09 22:26 André Roth
  2014-04-09 22:26 ` [PATCH 2/7] libdvbv5: fix asprintf compile warning in dvbv5-scan André Roth
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: André Roth @ 2014-04-09 22:26 UTC (permalink / raw)
  To: linux-media; +Cc: André Roth

this solves the ambiguity when parsing the dvb/atsc header
in dvb-scan.c

Signed-off-by: André Roth <neolynx@gmail.com>
---
 lib/include/libdvbv5/atsc_eit.h        |    2 +-
 lib/include/libdvbv5/atsc_header.h     |   39 ++++++--------------------
 lib/include/libdvbv5/header.h          |    5 ++--
 lib/include/libdvbv5/mgt.h             |    2 +-
 lib/include/libdvbv5/vct.h             |    2 +-
 lib/libdvbv5/Makefile.am               |    1 -
 lib/libdvbv5/descriptors/atsc_eit.c    |    2 +-
 lib/libdvbv5/descriptors/atsc_header.c |   47 --------------------------------
 lib/libdvbv5/descriptors/header.c      |    3 +-
 lib/libdvbv5/descriptors/mgt.c         |    2 +-
 lib/libdvbv5/descriptors/vct.c         |    2 +-
 11 files changed, 17 insertions(+), 90 deletions(-)
 delete mode 100644 lib/libdvbv5/descriptors/atsc_header.c

diff --git a/lib/include/libdvbv5/atsc_eit.h b/lib/include/libdvbv5/atsc_eit.h
index c527b1d..8b093de 100644
--- a/lib/include/libdvbv5/atsc_eit.h
+++ b/lib/include/libdvbv5/atsc_eit.h
@@ -64,7 +64,7 @@ union atsc_table_eit_desc_length {
 } __attribute__((packed));
 
 struct atsc_table_eit {
-	struct atsc_table_header header;
+	ATSC_HEADER();
 	uint8_t events;
 	struct atsc_table_eit_event *event;
 } __attribute__((packed));
diff --git a/lib/include/libdvbv5/atsc_header.h b/lib/include/libdvbv5/atsc_header.h
index 9685b37..12e7379 100644
--- a/lib/include/libdvbv5/atsc_header.h
+++ b/lib/include/libdvbv5/atsc_header.h
@@ -24,40 +24,17 @@
 #include <stdint.h>
 #include <unistd.h> /* ssize_t */
 
+#include <libdvbv5/header.h>
+
 #define ATSC_BASE_PID  0x1FFB
 
-struct atsc_table_header {
-	uint8_t  table_id;
-	union {
-		uint16_t bitfield;
-		struct {
-			uint16_t section_length:12;
-			uint16_t one:2;
-			uint16_t priv:1;
-			uint16_t syntax:1;
-		} __attribute__((packed));
-	} __attribute__((packed));
-	uint16_t id;
-	uint8_t  current_next:1;
-	uint8_t  version:5;
-	uint8_t  one2:2;
-
-	uint8_t  section_id;
-	uint8_t  last_section;
-	uint8_t  protocol_version;
-} __attribute__((packed));
-
-struct dvb_v5_fe_parms;
-
-#ifdef __cplusplus
-extern "C" {
-#endif
+#define ATSC_HEADER() \
+	struct dvb_table_header header; \
+	uint8_t  protocol_version; \
 
-int  atsc_table_header_init (struct atsc_table_header *t);
-void atsc_table_header_print(struct dvb_v5_fe_parms *parms, const struct atsc_table_header *t);
+#define ATSC_TABLE_HEADER_PRINT(_parms, _table) \
+	dvb_table_header_print(_parms, &_table->header); \
+	dvb_log("| protocol_version %d", _table->protocol_version); \
 
-#ifdef __cplusplus
-}
-#endif
 
 #endif
diff --git a/lib/include/libdvbv5/header.h b/lib/include/libdvbv5/header.h
index 67b7694..dc85f46 100644
--- a/lib/include/libdvbv5/header.h
+++ b/lib/include/libdvbv5/header.h
@@ -50,10 +50,9 @@ struct dvb_table_header {
 	union {
 		uint16_t bitfield;
 		struct {
-			uint16_t section_length:10;
-			uint8_t  zero:2;
+			uint16_t section_length:12;
 			uint8_t  one:2;
-			uint8_t  zero2:1;
+			uint8_t  zero:1;
 			uint8_t  syntax:1;
 		} __attribute__((packed));
 	} __attribute__((packed));
diff --git a/lib/include/libdvbv5/mgt.h b/lib/include/libdvbv5/mgt.h
index 4ea905d..cb8d63a 100644
--- a/lib/include/libdvbv5/mgt.h
+++ b/lib/include/libdvbv5/mgt.h
@@ -53,7 +53,7 @@ struct atsc_table_mgt_table {
 } __attribute__((packed));
 
 struct atsc_table_mgt {
-	struct atsc_table_header header;
+	ATSC_HEADER();
         uint16_t tables;
         struct atsc_table_mgt_table *table;
 	struct dvb_desc *descriptor;
diff --git a/lib/include/libdvbv5/vct.h b/lib/include/libdvbv5/vct.h
index 6d41ac5..83bad06 100644
--- a/lib/include/libdvbv5/vct.h
+++ b/lib/include/libdvbv5/vct.h
@@ -85,7 +85,7 @@ struct atsc_table_vct_channel {
 } __attribute__((packed));
 
 struct atsc_table_vct {
-	struct atsc_table_header header;
+	ATSC_HEADER();
 
 	uint8_t num_channels_in_section;
 
diff --git a/lib/libdvbv5/Makefile.am b/lib/libdvbv5/Makefile.am
index 667a1af..df67544 100644
--- a/lib/libdvbv5/Makefile.am
+++ b/lib/libdvbv5/Makefile.am
@@ -69,7 +69,6 @@ libdvbv5_la_SOURCES = \
 	dvb-scan.c	\
 	descriptors.c	\
 	descriptors/header.c		\
-	descriptors/atsc_header.c	\
 	descriptors/pat.c		\
 	descriptors/pmt.c		\
 	descriptors/nit.c		\
diff --git a/lib/libdvbv5/descriptors/atsc_eit.c b/lib/libdvbv5/descriptors/atsc_eit.c
index 9e1397d..286748c 100644
--- a/lib/libdvbv5/descriptors/atsc_eit.c
+++ b/lib/libdvbv5/descriptors/atsc_eit.c
@@ -132,7 +132,7 @@ void atsc_table_eit_free(struct atsc_table_eit *eit)
 void atsc_table_eit_print(struct dvb_v5_fe_parms *parms, struct atsc_table_eit *eit)
 {
 	dvb_log("EIT");
-	atsc_table_header_print(parms, &eit->header);
+	ATSC_TABLE_HEADER_PRINT(parms, eit);
 	const struct atsc_table_eit_event *event = eit->event;
 	uint16_t events = 0;
 
diff --git a/lib/libdvbv5/descriptors/atsc_header.c b/lib/libdvbv5/descriptors/atsc_header.c
deleted file mode 100644
index 06d1bb1..0000000
--- a/lib/libdvbv5/descriptors/atsc_header.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (c) 2013 - Andre Roth <neolynx@gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation version 2
- * of the License.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- * Or, point your browser to http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
- *
- */
-
-#include <libdvbv5/atsc_header.h>
-#include <libdvbv5/descriptors.h>
-#include <libdvbv5/dvb-fe.h>
-
-int atsc_table_header_init(struct atsc_table_header *t)
-{
-	bswap16(t->bitfield);
-	bswap16(t->id);
-	return 0;
-}
-
-void atsc_table_header_print(struct dvb_v5_fe_parms *parms, const struct atsc_table_header *t)
-{
-	dvb_log("| table_id         %02x", t->table_id);
-	dvb_log("| section_length   %d", t->section_length);
-	dvb_log("| syntax           %d", t->syntax);
-	dvb_log("| priv             %d", t->priv);
-	dvb_log("| one              %d", t->one);
-	dvb_log("| id               %d", t->id);
-	dvb_log("| one2             %d", t->one2);
-	dvb_log("| version          %d", t->version);
-	dvb_log("| current_next     %d", t->current_next);
-	dvb_log("| section_id       %d", t->section_id);
-	dvb_log("| last_section     %d", t->last_section);
-	dvb_log("| protocol_version %d", t->protocol_version);
-}
-
diff --git a/lib/libdvbv5/descriptors/header.c b/lib/libdvbv5/descriptors/header.c
index da3f970..3df73af 100644
--- a/lib/libdvbv5/descriptors/header.c
+++ b/lib/libdvbv5/descriptors/header.c
@@ -34,9 +34,8 @@ void dvb_table_header_print(struct dvb_v5_fe_parms *parms, const struct dvb_tabl
 {
 	dvb_log("| table_id            %d", t->table_id);
 	dvb_log("| section_length      %d", t->section_length);
-	dvb_log("| zero                %d", t->zero);
 	dvb_log("| one                 %d", t->one);
-	dvb_log("| zero2               %d", t->zero2);
+	dvb_log("| zero                %d", t->zero);
 	dvb_log("| syntax              %d", t->syntax);
 	dvb_log("| transport_stream_id %d", t->id);
 	dvb_log("| current_next        %d", t->current_next);
diff --git a/lib/libdvbv5/descriptors/mgt.c b/lib/libdvbv5/descriptors/mgt.c
index b445294..4d34740 100644
--- a/lib/libdvbv5/descriptors/mgt.c
+++ b/lib/libdvbv5/descriptors/mgt.c
@@ -125,7 +125,7 @@ void atsc_table_mgt_print(struct dvb_v5_fe_parms *parms, struct atsc_table_mgt *
 	uint16_t tables = 0;
 
 	dvb_log("MGT");
-	atsc_table_header_print(parms, &mgt->header);
+	ATSC_TABLE_HEADER_PRINT(parms, mgt);
 	dvb_log("| tables           %d", mgt->tables);
 	while(table) {
                 dvb_log("|- type %04x    %d", table->type, table->pid);
diff --git a/lib/libdvbv5/descriptors/vct.c b/lib/libdvbv5/descriptors/vct.c
index 8606d7e..c0d531a 100644
--- a/lib/libdvbv5/descriptors/vct.c
+++ b/lib/libdvbv5/descriptors/vct.c
@@ -150,7 +150,7 @@ void atsc_table_vct_print(struct dvb_v5_fe_parms *parms, struct atsc_table_vct *
 	else
 		dvb_log("TVCT");
 
-	atsc_table_header_print(parms, &vct->header);
+	ATSC_TABLE_HEADER_PRINT(parms, vct);
 
 	dvb_log("|- #channels        %d", vct->num_channels_in_section);
 	dvb_log("|\\  channel_id");
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 2/7] libdvbv5: fix asprintf compile warning in dvbv5-scan
  2014-04-09 22:26 [PATCH 1/7] libdvbv5: reunite atsc_table_header and dvb_table_header André Roth
@ 2014-04-09 22:26 ` André Roth
  2014-04-09 22:26 ` [PATCH 3/7] libdvbv5: make crc32 public André Roth
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: André Roth @ 2014-04-09 22:26 UTC (permalink / raw)
  To: linux-media; +Cc: André Roth

Signed-off-by: André Roth <neolynx@gmail.com>
---
 utils/dvb/dvbv5-scan.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/utils/dvb/dvbv5-scan.c b/utils/dvb/dvbv5-scan.c
index 501b332..7eb3bf5 100644
--- a/utils/dvb/dvbv5-scan.c
+++ b/utils/dvb/dvbv5-scan.c
@@ -407,6 +407,7 @@ int main(int argc, char **argv)
 {
 	struct arguments args;
 	int err, lnb = -1,idx = -1;
+	int r;
 	const struct argp argp = {
 		.options = options,
 		.parser = parse_opt,
@@ -459,8 +460,12 @@ int main(int argc, char **argv)
 		return -1;
 	}
 
-	asprintf(&args.demux_dev,
+	r = asprintf(&args.demux_dev,
 		 "/dev/dvb/adapter%i/demux%i", args.adapter_dmx, args.demux);
+	if (r < 0) {
+		fprintf(stderr, "asprintf error\n" );
+		return -1;
+	}
 
 	if (verbose)
 		fprintf(stderr, "using demux '%s'\n", args.demux_dev);
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 3/7] libdvbv5: make crc32 public
  2014-04-09 22:26 [PATCH 1/7] libdvbv5: reunite atsc_table_header and dvb_table_header André Roth
  2014-04-09 22:26 ` [PATCH 2/7] libdvbv5: fix asprintf compile warning in dvbv5-scan André Roth
@ 2014-04-09 22:26 ` André Roth
  2014-04-09 22:26 ` [PATCH 4/7] libdvbv5: make dvb_table_filter_free public André Roth
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: André Roth @ 2014-04-09 22:26 UTC (permalink / raw)
  To: linux-media; +Cc: André Roth

applications reading dvb files might want to
check crc, therefore provide the crc32 function
in the header files.

Signed-off-by: André Roth <neolynx@gmail.com>
---
 lib/{ => include}/libdvbv5/crc32.h |    0
 lib/libdvbv5/Makefile.am           |    1 +
 lib/libdvbv5/crc32.c               |    2 +-
 lib/libdvbv5/dvb-scan.c            |    2 +-
 4 files changed, 3 insertions(+), 2 deletions(-)
 rename lib/{ => include}/libdvbv5/crc32.h (100%)

diff --git a/lib/libdvbv5/crc32.h b/lib/include/libdvbv5/crc32.h
similarity index 100%
rename from lib/libdvbv5/crc32.h
rename to lib/include/libdvbv5/crc32.h
diff --git a/lib/libdvbv5/Makefile.am b/lib/libdvbv5/Makefile.am
index df67544..ce3f806 100644
--- a/lib/libdvbv5/Makefile.am
+++ b/lib/libdvbv5/Makefile.am
@@ -6,6 +6,7 @@ otherinclude_HEADERS = \
 	../include/libdvbv5/dvb-demux.h \
 	../include/libdvbv5/dvb-v5-std.h \
 	../include/libdvbv5/dvb-file.h \
+	../include/libdvbv5/crc32.h \
 	../include/libdvbv5/dvb-frontend.h \
 	../include/libdvbv5/dvb-fe.h \
 	../include/libdvbv5/dvb-sat.h \
diff --git a/lib/libdvbv5/crc32.c b/lib/libdvbv5/crc32.c
index f14dbe1..69d0be3 100644
--- a/lib/libdvbv5/crc32.c
+++ b/lib/libdvbv5/crc32.c
@@ -19,7 +19,7 @@
  *
  */
 
-#include "crc32.h"
+#include <libdvbv5/crc32.h>
 
 static uint32_t crctab[256] = {
   0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9, 0x130476dc, 0x17c56b6b,
diff --git a/lib/libdvbv5/dvb-scan.c b/lib/libdvbv5/dvb-scan.c
index b0636b9..e522225 100644
--- a/lib/libdvbv5/dvb-scan.c
+++ b/lib/libdvbv5/dvb-scan.c
@@ -42,7 +42,7 @@
 #include <libdvbv5/dvb-frontend.h>
 #include <libdvbv5/descriptors.h>
 #include "parse_string.h"
-#include "crc32.h"
+#include <libdvbv5/crc32.h>
 #include <libdvbv5/dvb-fe.h>
 #include <libdvbv5/dvb-file.h>
 #include <libdvbv5/dvb-scan.h>
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 4/7] libdvbv5: make dvb_table_filter_free public
  2014-04-09 22:26 [PATCH 1/7] libdvbv5: reunite atsc_table_header and dvb_table_header André Roth
  2014-04-09 22:26 ` [PATCH 2/7] libdvbv5: fix asprintf compile warning in dvbv5-scan André Roth
  2014-04-09 22:26 ` [PATCH 3/7] libdvbv5: make crc32 public André Roth
@ 2014-04-09 22:26 ` André Roth
  2014-04-09 22:26 ` [PATCH 5/7] libdvbv5: cleanup table parsers André Roth
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: André Roth @ 2014-04-09 22:26 UTC (permalink / raw)
  To: linux-media; +Cc: André Roth

make dvb_table_filter_free public so it can be used by
applications.
fix potential double free.

Signed-off-by: André Roth <neolynx@gmail.com>
---
 lib/include/libdvbv5/dvb-scan.h |    2 ++
 lib/libdvbv5/dvb-scan.c         |   10 ++++++----
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/lib/include/libdvbv5/dvb-scan.h b/lib/include/libdvbv5/dvb-scan.h
index 206d409..f0af9d7 100644
--- a/lib/include/libdvbv5/dvb-scan.h
+++ b/lib/include/libdvbv5/dvb-scan.h
@@ -74,6 +74,8 @@ struct dvb_table_filter {
 	void *priv;
 };
 
+void dvb_table_filter_free(struct dvb_table_filter *sect);
+
 int dvb_read_section(struct dvb_v5_fe_parms *parms, int dmx_fd, unsigned char tid, uint16_t pid, void **table,
 		unsigned timeout);
 
diff --git a/lib/libdvbv5/dvb-scan.c b/lib/libdvbv5/dvb-scan.c
index e522225..d8b3953 100644
--- a/lib/libdvbv5/dvb-scan.c
+++ b/lib/libdvbv5/dvb-scan.c
@@ -158,10 +158,12 @@ static int dvb_parse_section_alloc(struct dvb_v5_fe_parms *parms,
 	return 0;
 }
 
-static void dvb_parse_section_free(struct dvb_table_filter *sect)
+void dvb_table_filter_free(struct dvb_table_filter *sect)
 {
-	if (sect->priv)
+	if (sect->priv) {
 		free(sect->priv);
+		sect->priv = NULL;
+	}
 }
 
 static int dvb_parse_section(struct dvb_v5_fe_parms *parms,
@@ -280,7 +282,7 @@ int dvb_read_sections(struct dvb_v5_fe_parms *parms, int dmx_fd,
 	if (!buf) {
 		dvb_perror("Out of memory");
 		dvb_dmx_stop(dmx_fd);
-		dvb_parse_section_free(sect);
+		dvb_table_filter_free(sect);
 		return -1;
 	}
 
@@ -327,7 +329,7 @@ int dvb_read_sections(struct dvb_v5_fe_parms *parms, int dmx_fd,
 	} while (!ret);
 	free(buf);
 	dvb_dmx_stop(dmx_fd);
-	dvb_parse_section_free(sect);
+	dvb_table_filter_free(sect);
 
 	if (ret > 0)
 		ret = 0;
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 5/7] libdvbv5: cleanup table parsers
  2014-04-09 22:26 [PATCH 1/7] libdvbv5: reunite atsc_table_header and dvb_table_header André Roth
                   ` (2 preceding siblings ...)
  2014-04-09 22:26 ` [PATCH 4/7] libdvbv5: make dvb_table_filter_free public André Roth
@ 2014-04-09 22:26 ` André Roth
  2014-04-09 22:26 ` [PATCH 6/7] libdvbv5: cleanup printing of tables and descriptors André Roth
  2014-04-09 22:27 ` [PATCH 7/7] libdvbv5: rename descriptor functions André Roth
  5 siblings, 0 replies; 7+ messages in thread
From: André Roth @ 2014-04-09 22:26 UTC (permalink / raw)
  To: linux-media; +Cc: André Roth

- make the code look similar
- check for correct table ID
- ignore null packets with ID 0x1fff
- return table length, or:
- return error code on error
- update / fix Copyrights

Signed-off-by: André Roth <neolynx@gmail.com>
---
 lib/include/libdvbv5/atsc_eit.h     |    1 -
 lib/include/libdvbv5/descriptors.h  |    1 +
 lib/include/libdvbv5/eit.h          |    3 +-
 lib/include/libdvbv5/mgt.h          |    1 -
 lib/include/libdvbv5/nit.h          |    2 +-
 lib/include/libdvbv5/pat.h          |    4 +-
 lib/include/libdvbv5/sdt.h          |    5 +-
 lib/include/libdvbv5/vct.h          |    1 -
 lib/libdvbv5/descriptors.c          |    9 +++-
 lib/libdvbv5/descriptors/atsc_eit.c |   35 +++++++------
 lib/libdvbv5/descriptors/cat.c      |   53 +++++++++++++------
 lib/libdvbv5/descriptors/eit.c      |   90 +++++++++++++++++++++------------
 lib/libdvbv5/descriptors/mgt.c      |   43 +++++++++-------
 lib/libdvbv5/descriptors/nit.c      |   71 ++++++++++++++------------
 lib/libdvbv5/descriptors/pat.c      |   73 ++++++++++++++++-----------
 lib/libdvbv5/descriptors/pmt.c      |   95 ++++++++++++++++++++++-------------
 lib/libdvbv5/descriptors/sdt.c      |   68 ++++++++++++++++++-------
 lib/libdvbv5/descriptors/vct.c      |   35 +++++++++----
 18 files changed, 374 insertions(+), 216 deletions(-)

diff --git a/lib/include/libdvbv5/atsc_eit.h b/lib/include/libdvbv5/atsc_eit.h
index 8b093de..93d9304 100644
--- a/lib/include/libdvbv5/atsc_eit.h
+++ b/lib/include/libdvbv5/atsc_eit.h
@@ -26,7 +26,6 @@
 #include <time.h>
 
 #include <libdvbv5/atsc_header.h>
-#include <libdvbv5/descriptors.h>
 
 #define ATSC_TABLE_EIT        0xCB
 
diff --git a/lib/include/libdvbv5/descriptors.h b/lib/include/libdvbv5/descriptors.h
index e81a05d..d08ab3e 100644
--- a/lib/include/libdvbv5/descriptors.h
+++ b/lib/include/libdvbv5/descriptors.h
@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2011-2012 - Mauro Carvalho Chehab
+ * Copyright (c) 2012-2014 - Andre Roth <neolynx@gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
diff --git a/lib/include/libdvbv5/eit.h b/lib/include/libdvbv5/eit.h
index fb5ce33..c959537 100644
--- a/lib/include/libdvbv5/eit.h
+++ b/lib/include/libdvbv5/eit.h
@@ -27,7 +27,6 @@
 #include <time.h>
 
 #include <libdvbv5/header.h>
-#include <libdvbv5/descriptors.h>
 
 #define DVB_TABLE_EIT        0x4E
 #define DVB_TABLE_EIT_OTHER  0x4F
@@ -47,7 +46,7 @@ struct dvb_table_eit_event {
 	union {
 		uint16_t bitfield2;
 		struct {
-			uint16_t section_length:12;
+			uint16_t desc_length:12;
 			uint16_t free_CA_mode:1;
 			uint16_t running_status:3;
 		} __attribute__((packed));
diff --git a/lib/include/libdvbv5/mgt.h b/lib/include/libdvbv5/mgt.h
index cb8d63a..d67ad33 100644
--- a/lib/include/libdvbv5/mgt.h
+++ b/lib/include/libdvbv5/mgt.h
@@ -25,7 +25,6 @@
 #include <unistd.h> /* ssize_t */
 
 #include <libdvbv5/atsc_header.h>
-#include <libdvbv5/descriptors.h>
 
 #define ATSC_TABLE_MGT 0xC7
 
diff --git a/lib/include/libdvbv5/nit.h b/lib/include/libdvbv5/nit.h
index 7477bd6..fdea7a7 100644
--- a/lib/include/libdvbv5/nit.h
+++ b/lib/include/libdvbv5/nit.h
@@ -46,7 +46,7 @@ struct dvb_table_nit_transport {
 	union {
 		uint16_t bitfield;
 		struct {
-			uint16_t section_length:12;
+			uint16_t desc_length:12;
 			uint16_t reserved:4;
 		} __attribute__((packed));
 	} __attribute__((packed));
diff --git a/lib/include/libdvbv5/pat.h b/lib/include/libdvbv5/pat.h
index cd99d3e..eb4aeef 100644
--- a/lib/include/libdvbv5/pat.h
+++ b/lib/include/libdvbv5/pat.h
@@ -27,8 +27,8 @@
 
 #include <libdvbv5/header.h>
 
-#define DVB_TABLE_PAT      0
-#define DVB_TABLE_PAT_PID  0
+#define DVB_TABLE_PAT      0x00
+#define DVB_TABLE_PAT_PID  0x0000
 
 struct dvb_table_pat_program {
 	uint16_t service_id;
diff --git a/lib/include/libdvbv5/sdt.h b/lib/include/libdvbv5/sdt.h
index f1503ea..9684fbc 100644
--- a/lib/include/libdvbv5/sdt.h
+++ b/lib/include/libdvbv5/sdt.h
@@ -26,11 +26,10 @@
 #include <unistd.h> /* ssize_t */
 
 #include <libdvbv5/header.h>
-#include <libdvbv5/descriptors.h>
 
 #define DVB_TABLE_SDT      0x42
 #define DVB_TABLE_SDT2     0x46
-#define DVB_TABLE_SDT_PID  0x11
+#define DVB_TABLE_SDT_PID  0x0011
 
 struct dvb_table_sdt_service {
 	uint16_t service_id;
@@ -40,7 +39,7 @@ struct dvb_table_sdt_service {
 	union {
 		uint16_t bitfield;
 		struct {
-			uint16_t section_length:12;
+			uint16_t desc_length:12;
 			uint16_t free_CA_mode:1;
 			uint16_t running_status:3;
 		} __attribute__((packed));
diff --git a/lib/include/libdvbv5/vct.h b/lib/include/libdvbv5/vct.h
index 83bad06..10ac301 100644
--- a/lib/include/libdvbv5/vct.h
+++ b/lib/include/libdvbv5/vct.h
@@ -26,7 +26,6 @@
 #include <unistd.h> /* ssize_t */
 
 #include <libdvbv5/atsc_header.h>
-#include <libdvbv5/descriptors.h>
 
 #define ATSC_TABLE_TVCT     0xc8
 #define ATSC_TABLE_CVCT     0xc9
diff --git a/lib/libdvbv5/descriptors.c b/lib/libdvbv5/descriptors.c
index 6fd8691..54ce933 100644
--- a/lib/libdvbv5/descriptors.c
+++ b/lib/libdvbv5/descriptors.c
@@ -112,11 +112,16 @@ int dvb_parse_descriptors(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		uint8_t desc_len  = ptr[1];
 		size_t size;
 
+		if (desc_type == 0xff ) {
+			dvb_logwarn("%s: stopping at invalid descriptor 0xff", __func__);
+			return 0;
+		}
+
 		ptr += 2; /* skip type and length */
 
 		if (ptr + desc_len > endbuf) {
-			dvb_logerr("short read of %zd/%d bytes parsing descriptor %#02x",
-				   endbuf - ptr, desc_len, desc_type);
+			dvb_logerr("%s: short read of %zd/%d bytes parsing descriptor %#02x",
+				   __func__, endbuf - ptr, desc_len, desc_type);
 			return -1;
 		}
 
diff --git a/lib/libdvbv5/descriptors/atsc_eit.c b/lib/libdvbv5/descriptors/atsc_eit.c
index 286748c..2b446bb 100644
--- a/lib/libdvbv5/descriptors/atsc_eit.c
+++ b/lib/libdvbv5/descriptors/atsc_eit.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013 - Andre Roth <neolynx@gmail.com>
+ * Copyright (c) 2013-2014 - Andre Roth <neolynx@gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -19,6 +19,7 @@
  */
 
 #include <libdvbv5/atsc_eit.h>
+#include <libdvbv5/descriptors.h>
 #include <libdvbv5/dvb-fe.h>
 
 ssize_t atsc_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
@@ -26,16 +27,22 @@ ssize_t atsc_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 {
 	const uint8_t *p = buf, *endbuf = buf + buflen - 4; /* minus CRC */;
 	struct atsc_table_eit_event **head;
+	size_t size;
 	int i = 0;
-	struct atsc_table_eit_event *last = NULL;
-	size_t size = offsetof(struct atsc_table_eit, event);
 
+	size = offsetof(struct atsc_table_eit, event);
 	if (p + size > endbuf) {
 		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
-			   size, endbuf - p);
+			   endbuf - p, size);
 		return -1;
 	}
 
+	if (buf[0] != ATSC_TABLE_EIT) {
+		dvb_logerr("%s: invalid marker 0x%02x, sould be 0x%02x",
+				__func__, buf[0], ATSC_TABLE_EIT);
+		return -2;
+	}
+
 	if (*table_length > 0) {
 		memcpy(eit, p, size);
 
@@ -45,7 +52,6 @@ ssize_t atsc_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 			head = &(*head)->next;
 	} else {
 		memcpy(eit, p, size);
-		*table_length = sizeof(struct atsc_table_eit);
 
 		eit->event = NULL;
 		head = &eit->event;
@@ -59,10 +65,14 @@ ssize_t atsc_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		size = offsetof(struct atsc_table_eit_event, descriptor);
 		if (p + size > endbuf) {
 			dvb_logerr("%s: short read %zd/%zd bytes", __func__,
-				   size, endbuf - p);
+				   endbuf - p, size);
 			return -2;
 		}
 		event = (struct atsc_table_eit_event *) malloc(sizeof(struct atsc_table_eit_event));
+		if (!event) {
+			dvb_logerr("%s: out of memory", __func__);
+			return -3;
+		}
 		memcpy(event, p, size);
 		p += size;
 
@@ -74,15 +84,13 @@ ssize_t atsc_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
                 atsc_time(event->start_time, &event->start);
 		event->source_id = eit->header.id;
 
-		if(!*head)
-			*head = event;
-		if(last)
-			last->next = event;
+		*head = event;
+		head = &(*head)->next;
 
 		size = event->title_length - 1;
 		if (p + size > endbuf) {
 			dvb_logerr("%s: short read %zd/%zd bytes", __func__,
-				   size, endbuf - p);
+				   endbuf - p, size);
 			return -3;
 		}
                 /* TODO: parse title */
@@ -92,7 +100,7 @@ ssize_t atsc_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		size = sizeof(union atsc_table_eit_desc_length);
 		if (p + size > endbuf) {
 			dvb_logerr("%s: short read %zd/%zd bytes", __func__,
-				   size, endbuf - p);
+				   endbuf - p, size);
 			return -4;
 		}
 		memcpy(&dl, p, size);
@@ -102,13 +110,12 @@ ssize_t atsc_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		size = dl.desc_length;
 		if (p + size > endbuf) {
 			dvb_logerr("%s: short read %zd/%zd bytes", __func__,
-				   size, endbuf - p);
+				   endbuf - p, size);
 			return -5;
 		}
 		dvb_parse_descriptors(parms, p, size, &event->descriptor);
 
 		p += size;
-		last = event;
 	}
 
 	*table_length = p - buf;
diff --git a/lib/libdvbv5/descriptors/cat.c b/lib/libdvbv5/descriptors/cat.c
index b7e51e2..04b9416 100644
--- a/lib/libdvbv5/descriptors/cat.c
+++ b/lib/libdvbv5/descriptors/cat.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013 - Andre Roth <neolynx@gmail.com>
+ * Copyright (c) 2013-2014 - Andre Roth <neolynx@gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -23,37 +23,58 @@
 #include <libdvbv5/dvb-fe.h>
 
 ssize_t dvb_table_cat_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
-			ssize_t buflen, struct dvb_table_cat *cat, ssize_t *table_length)
+		ssize_t buflen, struct dvb_table_cat *cat, ssize_t *table_length)
 {
-	struct dvb_desc **head_desc = &cat->descriptor;
 	const uint8_t *p = buf, *endbuf = buf + buflen - 4;
+	struct dvb_desc **head_desc;
 	size_t size;
 
-	if (buf[0] != DVB_TABLE_CAT) {
-		dvb_logerr("%s: invalid marker 0x%02x, sould be 0x%02x", __func__, buf[0], DVB_TABLE_CAT);
-		*table_length = 0;
+	size = offsetof(struct dvb_table_cat, descriptor);
+	if (p + size > endbuf) {
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - p, size);
 		return -1;
 	}
 
+	if (buf[0] != DVB_TABLE_CAT) {
+		dvb_logerr("%s: invalid marker 0x%02x, sould be 0x%02x",
+				__func__, buf[0], DVB_TABLE_CAT);
+		return -2;
+	}
+
 	if (*table_length > 0) {
 		/* find end of current lists */
+		head_desc = &cat->descriptor;
 		while (*head_desc != NULL)
 			head_desc = &(*head_desc)->next;
-	}
-
-	size = offsetof(struct dvb_table_cat, descriptor);
-	if (p + size > endbuf) {
-		dvb_logerr("CAT table was truncated while filling dvb_table_cat. Need %zu bytes, but has only %zu.",
-			   size, buflen);
-		return -2;
+	} else {
+		head_desc = &cat->descriptor;
 	}
 
 	memcpy(cat, p, size);
 	p += size;
-	*table_length = sizeof(struct dvb_table_cat);
 
-	size = endbuf - p;
-	dvb_parse_descriptors(parms, p, size, head_desc);
+	size = cat->header.section_length + 3 - 4; /* plus header, minus CRC */
+	if (buf + size > endbuf) {
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - buf, size);
+		return -3;
+	}
+	endbuf = buf + size;
+
+	/* parse the descriptors */
+	if (endbuf > p) {
+		uint16_t desc_length = endbuf - p;
+		if (dvb_parse_descriptors(parms, p, desc_length,
+				      head_desc) != 0) {
+			return -4;
+		}
+		p += desc_length;
+	}
+
+	if (endbuf - p)
+		dvb_logwarn("%s: %zu spurious bytes at the end",
+			   __func__, endbuf - p);
 
 	*table_length = p - buf;
 	return p - buf;
diff --git a/lib/libdvbv5/descriptors/eit.c b/lib/libdvbv5/descriptors/eit.c
index 86e2905..5197491 100644
--- a/lib/libdvbv5/descriptors/eit.c
+++ b/lib/libdvbv5/descriptors/eit.c
@@ -1,6 +1,5 @@
 /*
- * Copyright (c) 2011-2012 - Mauro Carvalho Chehab
- * Copyright (c) 2012 - Andre Roth <neolynx@gmail.com>
+ * Copyright (c) 2012-2014 - Andre Roth <neolynx@gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -20,12 +19,32 @@
  */
 
 #include <libdvbv5/eit.h>
+#include <libdvbv5/descriptors.h>
 #include <libdvbv5/dvb-fe.h>
 
-ssize_t dvb_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, ssize_t buflen, struct dvb_table_eit *eit, ssize_t *table_length)
+ssize_t dvb_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
+		ssize_t buflen, struct dvb_table_eit *eit, ssize_t *table_length)
 {
-	const uint8_t *p = buf;
+	const uint8_t *p = buf, *endbuf = buf + buflen - 4; /* minus CRC */
 	struct dvb_table_eit_event **head;
+	size_t size;
+
+	size = offsetof(struct dvb_table_eit, event);
+	if (p + size > endbuf) {
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - p, size);
+		return -1;
+	}
+
+	if ((buf[0] != DVB_TABLE_EIT && buf[0] != DVB_TABLE_EIT_OTHER) &&
+		!(buf[0] >= DVB_TABLE_EIT_SCHEDULE && buf[0] <= DVB_TABLE_EIT_SCHEDULE + 0xF) &&
+		!(buf[0] >= DVB_TABLE_EIT_SCHEDULE_OTHER && buf[0] <= DVB_TABLE_EIT_SCHEDULE_OTHER + 0xF)) {
+		dvb_logerr("%s: invalid marker 0x%02x, sould be 0x%02x, 0x%02x or between 0x%02x and 0x%02x or 0x%02x and 0x%02x",
+				__func__, buf[0], DVB_TABLE_EIT, DVB_TABLE_EIT_OTHER,
+				DVB_TABLE_EIT_SCHEDULE, DVB_TABLE_EIT_SCHEDULE + 0xF,
+				DVB_TABLE_EIT_SCHEDULE_OTHER, DVB_TABLE_EIT_SCHEDULE_OTHER + 0xF);
+		return -2;
+	}
 
 	if (*table_length > 0) {
 		memcpy(eit, p, sizeof(struct dvb_table_eit) - sizeof(eit->event));
@@ -39,7 +58,6 @@ ssize_t dvb_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, ss
 			head = &(*head)->next;
 	} else {
 		memcpy(eit, p, sizeof(struct dvb_table_eit) - sizeof(eit->event));
-		*table_length = sizeof(struct dvb_table_eit);
 
 		bswap16(eit->transport_id);
 		bswap16(eit->network_id);
@@ -47,23 +65,20 @@ ssize_t dvb_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, ss
 		eit->event = NULL;
 		head = &eit->event;
 	}
-	p += sizeof(struct dvb_table_eit) - sizeof(eit->event);
-
-	struct dvb_table_eit_event *last = NULL;
-	while ((uint8_t *) p < buf + buflen - 4) {
-		struct dvb_table_eit_event *event = (struct dvb_table_eit_event *) malloc(sizeof(struct dvb_table_eit_event));
-		memcpy(event, p, sizeof(struct dvb_table_eit_event) -
-				 sizeof(event->descriptor) -
-				 sizeof(event->next) -
-				 sizeof(event->start) -
-				 sizeof(event->duration) -
-				 sizeof(event->service_id));
-		p += sizeof(struct dvb_table_eit_event) -
-		     sizeof(event->descriptor) -
-		     sizeof(event->next) -
-		     sizeof(event->start) -
-		     sizeof(event->duration) -
-		     sizeof(event->service_id);
+	p += size;
+
+	/* get the event entries */
+	size = offsetof(struct dvb_table_eit_event, descriptor);
+	while (p + size <= endbuf) {
+		struct dvb_table_eit_event *event;
+
+		event = malloc(sizeof(struct dvb_table_eit_event));
+		if (!event) {
+			dvb_logerr("%s: out of memory", __func__);
+			return -3;
+		}
+		memcpy(event, p, size);
+		p += size;
 
 		bswap16(event->event_id);
 		bswap16(event->bitfield1);
@@ -77,18 +92,27 @@ ssize_t dvb_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, ss
 
 		event->service_id = eit->header.id;
 
-		if(!*head)
-			*head = event;
-		if(last)
-			last->next = event;
-
-		/* get the descriptors for each program */
-		struct dvb_desc **head_desc = &event->descriptor;
-		dvb_parse_descriptors(parms, p, event->section_length, head_desc);
-
-		p += event->section_length;
-		last = event;
+		*head = event;
+		head = &(*head)->next;
+
+		/* parse the descriptors */
+		if (event->desc_length > 0) {
+			uint16_t desc_length = event->desc_length;
+			if (p + desc_length > endbuf) {
+				dvb_logwarn("%s: decsriptors short read %zd/%d bytes", __func__,
+					   endbuf - p, desc_length);
+				desc_length = endbuf - p;
+			}
+			if (dvb_parse_descriptors(parms, p, desc_length,
+					      &event->descriptor) != 0) {
+				return -4;
+			}
+			p += desc_length;
+		}
 	}
+	if (p < endbuf)
+		dvb_logwarn("%s: %zu spurious bytes at the end",
+			   __func__, endbuf - p);
 	*table_length = p - buf;
 	return p - buf;
 }
diff --git a/lib/libdvbv5/descriptors/mgt.c b/lib/libdvbv5/descriptors/mgt.c
index 4d34740..b12d586 100644
--- a/lib/libdvbv5/descriptors/mgt.c
+++ b/lib/libdvbv5/descriptors/mgt.c
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2013 - Andre Roth <neolynx@gmail.com>
+ * Copyright (c) 2013-2014 - Andre Roth <neolynx@gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -19,25 +19,36 @@
  */
 
 #include <libdvbv5/mgt.h>
+#include <libdvbv5/descriptors.h>
 #include <libdvbv5/dvb-fe.h>
 
 ssize_t atsc_table_mgt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		ssize_t buflen, struct atsc_table_mgt *mgt, ssize_t *table_length)
 {
 	const uint8_t *p = buf, *endbuf = buf + buflen - 4; /* minus CRC */
-	struct dvb_desc **head_desc;
 	struct atsc_table_mgt_table **head;
+	struct dvb_desc **head_desc;
+	size_t size;
 	int i = 0;
-	struct atsc_table_mgt_table *last = NULL;
-	size_t size = offsetof(struct atsc_table_mgt, table);
 
+	size = offsetof(struct atsc_table_mgt, table);
 	if (p + size > endbuf) {
 		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
-			   size, endbuf - p);
+			   endbuf - p, size);
 		return -1;
 	}
 
+	if (buf[0] != ATSC_TABLE_MGT) {
+		dvb_logerr("%s: invalid marker 0x%02x, sould be 0x%02x",
+				__func__, buf[0], ATSC_TABLE_MGT);
+		return -2;
+	}
+
 	if (*table_length > 0) {
+		memcpy(mgt, p, size);
+
+		bswap16(mgt->tables);
+
 		/* find end of curent lists */
 		head_desc = &mgt->descriptor;
 		while (*head_desc != NULL)
@@ -45,11 +56,8 @@ ssize_t atsc_table_mgt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		head = &mgt->table;
 		while (*head != NULL)
 			head = &(*head)->next;
-
-		/* FIXME: read current mgt->tables for loop below */
 	} else {
 		memcpy(mgt, p, size);
-		*table_length = sizeof(struct atsc_table_mgt);
 
 		bswap16(mgt->tables);
 
@@ -66,10 +74,14 @@ ssize_t atsc_table_mgt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		size = offsetof(struct atsc_table_mgt_table, descriptor);
 		if (p + size > endbuf) {
 			dvb_logerr("%s: short read %zd/%zd bytes", __func__,
-				   size, endbuf - p);
+				   endbuf - p, size);
 			return -2;
 		}
 		table = (struct atsc_table_mgt_table *) malloc(sizeof(struct atsc_table_mgt_table));
+		if (!table) {
+			dvb_logerr("%s: out of memory", __func__);
+			return -3;
+		}
 		memcpy(table, p, size);
 		p += size;
 
@@ -80,22 +92,19 @@ ssize_t atsc_table_mgt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		table->descriptor = NULL;
 		table->next = NULL;
 
-		if(!*head)
-			*head = table;
-		if(last)
-			last->next = table;
+		*head = table;
+		head = &(*head)->next;
 
 		/* get the descriptors for each table */
 		size = table->desc_length;
 		if (p + size > endbuf) {
 			dvb_logerr("%s: short read %zd/%zd bytes", __func__,
-				   size, endbuf - p);
+				   endbuf - p, size);
 			return -3;
 		}
 		dvb_parse_descriptors(parms, p, size, &table->descriptor);
 
 		p += size;
-		last = table;
 	}
 
 	/* TODO: parse MGT descriptors here into head_desc */
@@ -109,7 +118,7 @@ void atsc_table_mgt_free(struct atsc_table_mgt *mgt)
 	struct atsc_table_mgt_table *table = mgt->table;
 
 	dvb_free_descriptors((struct dvb_desc **) &mgt->descriptor);
-	while(table) {
+	while (table) {
 		struct atsc_table_mgt_table *tmp = table;
 
 		dvb_free_descriptors((struct dvb_desc **) &table->descriptor);
@@ -127,7 +136,7 @@ void atsc_table_mgt_print(struct dvb_v5_fe_parms *parms, struct atsc_table_mgt *
 	dvb_log("MGT");
 	ATSC_TABLE_HEADER_PRINT(parms, mgt);
 	dvb_log("| tables           %d", mgt->tables);
-	while(table) {
+	while (table) {
                 dvb_log("|- type %04x    %d", table->type, table->pid);
                 dvb_log("|  one          %d", table->one);
                 dvb_log("|  one2         %d", table->one2);
diff --git a/lib/libdvbv5/descriptors/nit.c b/lib/libdvbv5/descriptors/nit.c
index 7749ee1..aadebc0 100644
--- a/lib/libdvbv5/descriptors/nit.c
+++ b/lib/libdvbv5/descriptors/nit.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2011-2012 - Mauro Carvalho Chehab
- * Copyright (c) 2012 - Andre Roth <neolynx@gmail.com>
+ * Copyright (c) 2012-2014 - Andre Roth <neolynx@gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -26,50 +26,55 @@ ssize_t dvb_table_nit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 			ssize_t buflen, struct dvb_table_nit *nit, ssize_t *table_length)
 {
 	const uint8_t *p = buf, *endbuf = buf + buflen - 4;
-	struct dvb_desc **head_desc = &nit->descriptor;
-	struct dvb_table_nit_transport **head = &nit->transport;
+	struct dvb_table_nit_transport **head;
+	struct dvb_desc **head_desc;
 	size_t size;
 
+	size = offsetof(struct dvb_table_nit, descriptor);
+	if (p + size > endbuf) {
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - p, size);
+		return -1;
+	}
+
+	if (buf[0] != DVB_TABLE_NIT) {
+		dvb_logerr("%s: invalid marker 0x%02x, sould be 0x%02x",
+				__func__, buf[0], DVB_TABLE_NIT);
+		return -2;
+	}
+
 	if (*table_length > 0) {
 		struct dvb_table_nit *t;
 
 		/* find end of current lists */
+		head_desc = &nit->descriptor;
 		while (*head_desc != NULL)
 			head_desc = &(*head_desc)->next;
+		head = &nit->transport;
 		while (*head != NULL)
 			head = &(*head)->next;
 
-		size = offsetof(struct dvb_table_nit, descriptor);
-		if (p + size > endbuf) {
-			dvb_logerr("NIT table (cont) was truncated");
-			return -1;
-		}
 		p += size;
 		t = (struct dvb_table_nit *)buf;
 
 		bswap16(t->bitfield);
 		size = t->desc_length;
 	} else {
-		size = offsetof(struct dvb_table_nit, descriptor);
-		if (p + size > endbuf) {
-			dvb_logerr("NIT table was truncated while filling dvb_table_nit. Need %zu bytes, but has only %zu.",
-				   size, buflen);
-			return -2;
-		}
 		memcpy(nit, p, size);
 		p += size;
 
-		*table_length = sizeof(struct dvb_table_nit);
+		head = &nit->transport;
 
 		nit->descriptor = NULL;
 		nit->transport = NULL;
 
 		bswap16(nit->bitfield);
 		size = nit->desc_length;
+		head_desc = &nit->descriptor;
 	}
 	if (p + size > endbuf) {
-		dvb_logerr("NIT table was truncated while getting NIT descriptors. Need %zu bytes, but has only %zu.",
-			   size, endbuf - p);
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - p, size);
 		return -3;
 	}
 	dvb_parse_descriptors(parms, p, size, head_desc);
@@ -77,8 +82,8 @@ ssize_t dvb_table_nit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 
 	size = sizeof(union dvb_table_nit_transport_header);
 	if (p + size > endbuf) {
-		dvb_logerr("NIT table was truncated while getting NIT transports. Need %zu bytes, but has only %zu.",
-			   size, endbuf - p);
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - p, size);
 		return -4;
 	}
 	p += size;
@@ -89,7 +94,7 @@ ssize_t dvb_table_nit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 
 		transport = malloc(sizeof(struct dvb_table_nit_transport));
 		if (!transport) {
-			dvb_perror(__func__);
+			dvb_logerr("%s: out of memory", __func__);
 			return -5;
 		}
 		memcpy(transport, p, size);
@@ -104,20 +109,24 @@ ssize_t dvb_table_nit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		*head = transport;
 		head = &(*head)->next;
 
-		/* get the descriptors for each transport */
-		head_desc = &transport->descriptor;
-
-		if (p + transport->section_length > endbuf) {
-			dvb_logerr("NIT table was truncated while getting NIT transport descriptors. Need %u bytes, but has only %zu.",
-				   transport->section_length, endbuf - p);
-			return -6;
+		/* parse the descriptors */
+		if (transport->desc_length > 0) {
+			uint16_t desc_length = transport->desc_length;
+			if (p + desc_length > endbuf) {
+				dvb_logwarn("%s: decsriptors short read %zd/%d bytes", __func__,
+					   endbuf - p, desc_length);
+				desc_length = endbuf - p;
+			}
+			if (dvb_parse_descriptors(parms, p, desc_length,
+					      &transport->descriptor) != 0) {
+				return -6;
+			}
+			p += desc_length;
 		}
-		dvb_parse_descriptors(parms, p, transport->section_length, head_desc);
-		p += transport->section_length;
 	}
 	if (endbuf - p)
-		dvb_logerr("NIT table has %zu spurious bytes at the end.",
-			   endbuf - p);
+		dvb_logwarn("%s: %zu spurious bytes at the end",
+			   __func__, endbuf - p);
 	*table_length = p - buf;
 	return p - buf;
 }
diff --git a/lib/libdvbv5/descriptors/pat.c b/lib/libdvbv5/descriptors/pat.c
index 1bb7781..efa6811 100644
--- a/lib/libdvbv5/descriptors/pat.c
+++ b/lib/libdvbv5/descriptors/pat.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2011-2012 - Mauro Carvalho Chehab
- * Copyright (c) 2012 - Andre Roth <neolynx@gmail.com>
+ * Copyright (c) 2012-2014 - Andre Roth <neolynx@gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -26,64 +26,77 @@
 ssize_t dvb_table_pat_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 			ssize_t buflen, struct dvb_table_pat *pat, ssize_t *table_length)
 {
-	struct dvb_table_pat_program **head = &pat->program;
 	const uint8_t *p = buf, *endbuf = buf + buflen - 4;
+	struct dvb_table_pat_program **head;
 	size_t size;
 
+	size = offsetof(struct dvb_table_pat, programs);
+	if (p + size > endbuf) {
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - p, size);
+		return -1;
+	}
+
+	if (buf[0] != DVB_TABLE_PAT) {
+		dvb_logerr("%s: invalid marker 0x%02x, sould be 0x%02x",
+				__func__, buf[0], DVB_TABLE_PAT);
+		return -2;
+	}
+
 	if (*table_length > 0) {
 		/* find end of current list */
+		head = &pat->program;
 		while (*head != NULL)
 			head = &(*head)->next;
 	} else {
-		size = offsetof(struct dvb_table_pat, programs);
-		if (p + size > endbuf) {
-			dvb_logerr("PAT table was truncated. Need %zu bytes, but has only %zu.",
-					size, buflen);
-			return -1;
-		}
 		memcpy(pat, buf, size);
 		p += size;
 		pat->programs = 0;
 		pat->program = NULL;
+		head = &pat->program;
 	}
-	*table_length = sizeof(struct dvb_table_pat_program);
 
 	size = offsetof(struct dvb_table_pat_program, next);
 	while (p + size <= endbuf) {
-		struct dvb_table_pat_program *pgm;
+		struct dvb_table_pat_program *prog;
 
-		pgm = malloc(sizeof(struct dvb_table_pat_program));
-		if (!pgm) {
+		prog = malloc(sizeof(struct dvb_table_pat_program));
+		if (!prog) {
 			dvb_perror("Out of memory");
-			return -2;
+			return -3;
 		}
 
-		memcpy(pgm, p, size);
+		memcpy(prog, p, size);
 		p += size;
 
-		bswap16(pgm->service_id);
-		bswap16(pgm->bitfield);
+		bswap16(prog->service_id);
+
+		if (prog->pid == 0x1fff) { /* ignore null packets */
+			free(prog);
+			break;
+		}
+		bswap16(prog->bitfield);
 		pat->programs++;
 
-		pgm->next = NULL;
+		prog->next = NULL;
 
-		*head = pgm;
+		*head = prog;
 		head = &(*head)->next;
 	}
 	if (endbuf - p)
-		dvb_logerr("PAT table has %zu spurious bytes at the end.",
-			   endbuf - p);
+		dvb_logwarn("%s: %zu spurious bytes at the end",
+			   __func__, endbuf - p);
 	*table_length = p - buf;
 	return p - buf;
 }
 
 void dvb_table_pat_free(struct dvb_table_pat *pat)
 {
-	struct dvb_table_pat_program *pgm = pat->program;
+	struct dvb_table_pat_program *prog = pat->program;
 
-	while (pgm) {
-		struct dvb_table_pat_program *tmp = pgm;
-		pgm = pgm->next;
+	while (prog) {
+		struct dvb_table_pat_program *tmp = prog;
+		prog = prog->next;
 		free(tmp);
 	}
 	free(pat);
@@ -91,15 +104,15 @@ void dvb_table_pat_free(struct dvb_table_pat *pat)
 
 void dvb_table_pat_print(struct dvb_v5_fe_parms *parms, struct dvb_table_pat *pat)
 {
-	struct dvb_table_pat_program *pgm = pat->program;
+	struct dvb_table_pat_program *prog = pat->program;
 
-	dvb_log("PAT");
+	dvb_loginfo("PAT");
 	dvb_table_header_print(parms, &pat->header);
-	dvb_log("|\\ %d program%s", pat->programs, pat->programs != 1 ? "s" : "");
+	dvb_loginfo("|\\ %d program pid%s", pat->programs, pat->programs != 1 ? "s" : "");
 
-	while (pgm) {
-		dvb_log("|- program 0x%04x  ->  service 0x%04x", pgm->pid, pgm->service_id);
-		pgm = pgm->next;
+	while (prog) {
+		dvb_loginfo("|  pid 0x%04x: service 0x%04x", prog->pid, prog->service_id);
+		prog = prog->next;
 	}
 }
 
diff --git a/lib/libdvbv5/descriptors/pmt.c b/lib/libdvbv5/descriptors/pmt.c
index 52bfa29..e1f07f8 100644
--- a/lib/libdvbv5/descriptors/pmt.c
+++ b/lib/libdvbv5/descriptors/pmt.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2011-2012 - Mauro Carvalho Chehab
- * Copyright (c) 2012-2013 - Andre Roth <neolynx@gmail.com>
+ * Copyright (c) 2012-2014 - Andre Roth <neolynx@gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -29,46 +29,69 @@ ssize_t dvb_table_pmt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 			ssize_t buflen, struct dvb_table_pmt *pmt, ssize_t *table_length)
 {
 	const uint8_t *p = buf, *endbuf = buf + buflen - 4;
-	struct dvb_table_pmt_stream **head = &pmt->stream;
+	struct dvb_table_pmt_stream **head;
+	struct dvb_desc **head_desc;
 	size_t size;
 
-	if (buf[0] != DVB_TABLE_PMT) {
-		dvb_logerr("%s: invalid marker 0x%02x, sould be 0x%02x", __func__, buf[0], DVB_TABLE_PMT);
-		*table_length = 0;
+	size = offsetof(struct dvb_table_pmt, dvb_pmt_field_last);
+	if (p + size > endbuf) {
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - p, size);
 		return -1;
 	}
 
+	if (buf[0] != DVB_TABLE_PMT) {
+		dvb_logerr("%s: invalid marker 0x%02x, sould be 0x%02x",
+				__func__, buf[0], DVB_TABLE_PMT);
+		return -2;
+	}
+
 	if (*table_length > 0) {
+		memcpy(pmt, p, size);
+		bswap16(pmt->bitfield);
+		bswap16(pmt->bitfield2);
+
 		/* find end of current list */
+		head = &pmt->stream;
 		while (*head != NULL)
 			head = &(*head)->next;
+		head_desc = &pmt->descriptor;
+		while (*head_desc != NULL)
+			head_desc = &(*head_desc)->next;
 	} else {
-		size = offsetof(struct dvb_table_pmt, dvb_pmt_field_last);
-		if (p + size > endbuf) {
-			dvb_logerr("%s: short read %zd/%zd bytes", __func__,
-				   size, endbuf - p);
-			return -2;
-		}
 		memcpy(pmt, p, size);
-		p += size;
-
 		bswap16(pmt->bitfield);
 		bswap16(pmt->bitfield2);
+
 		pmt->descriptor = NULL;
 		pmt->stream = NULL;
 
-		/* parse the descriptors */
-		if (pmt->desc_length > 0 ) {
-			size = pmt->desc_length;
-			if (p + size > endbuf) {
-				dvb_logwarn("%s: decsriptors short read %zd/%zd bytes", __func__,
-					   size, endbuf - p);
-				size = endbuf - p;
-			}
-			dvb_parse_descriptors(parms, p, size,
-					      &pmt->descriptor);
-			p += size;
+		head = &pmt->stream;
+		head_desc = &pmt->descriptor;
+	}
+	p += size;
+
+	size = pmt->header.section_length + 3 - 4; /* plus header, minus CRC */
+	if (buf + size > endbuf) {
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - buf, size);
+		return -3;
+	}
+	endbuf = buf + size;
+
+	/* parse the descriptors */
+	if (pmt->desc_length > 0 ) {
+		uint16_t desc_length = pmt->desc_length;
+		if (p + desc_length > endbuf) {
+			dvb_logwarn("%s: decsriptors short read %d/%zd bytes", __func__,
+				   desc_length, endbuf - p);
+			desc_length = endbuf - p;
 		}
+		if (dvb_parse_descriptors(parms, p, desc_length,
+				      head_desc) != 0) {
+			return -3;
+		}
+		p += desc_length;
 	}
 
 	/* get the stream entries */
@@ -77,7 +100,10 @@ ssize_t dvb_table_pmt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		struct dvb_table_pmt_stream *stream;
 
 		stream = malloc(sizeof(struct dvb_table_pmt_stream));
-
+		if (!stream) {
+			dvb_logerr("%s: out of memory", __func__);
+			return -3;
+		}
 		memcpy(stream, p, size);
 		p += size;
 
@@ -91,16 +117,17 @@ ssize_t dvb_table_pmt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 
 		/* parse the descriptors */
 		if (stream->desc_length > 0) {
-			size = stream->desc_length;
-			if (p + size > endbuf) {
-				dvb_logwarn("%s: decsriptors short read %zd/%zd bytes", __func__,
-					   size, endbuf - p);
-				size = endbuf - p;
+			uint16_t desc_length = stream->desc_length;
+			if (p + desc_length > endbuf) {
+				dvb_logwarn("%s: decsriptors short read %zd/%d bytes", __func__,
+					   endbuf - p, desc_length);
+				desc_length = endbuf - p;
 			}
-			dvb_parse_descriptors(parms, p, size,
-					      &stream->descriptor);
-
-			p += size;
+			if (dvb_parse_descriptors(parms, p, desc_length,
+					      &stream->descriptor) != 0) {
+				return -4;
+			}
+			p += desc_length;
 		}
 	}
 	if (p < endbuf)
diff --git a/lib/libdvbv5/descriptors/sdt.c b/lib/libdvbv5/descriptors/sdt.c
index 4fb6826..8cee315 100644
--- a/lib/libdvbv5/descriptors/sdt.c
+++ b/lib/libdvbv5/descriptors/sdt.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2011-2012 - Mauro Carvalho Chehab
- * Copyright (c) 2012 - Andre Roth <neolynx@gmail.com>
+ * Copyright (c) 2012-2014 - Andre Roth <neolynx@gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -20,40 +20,64 @@
  */
 
 #include <libdvbv5/sdt.h>
+#include <libdvbv5/descriptors.h>
 #include <libdvbv5/dvb-fe.h>
 
 ssize_t dvb_table_sdt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 			ssize_t buflen, struct dvb_table_sdt *sdt, ssize_t *table_length)
 {
 	const uint8_t *p = buf, *endbuf = buf + buflen - 4;
-	struct dvb_table_sdt_service **head = &sdt->service;
-	size_t size = offsetof(struct dvb_table_sdt, service);
+	struct dvb_table_sdt_service **head;
+	size_t size;
+
+	size = offsetof(struct dvb_table_sdt, service);
+	if (p + size > endbuf) {
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - p, size);
+		return -1;
+	}
+
+	if (buf[0] != DVB_TABLE_SDT && buf[0] != DVB_TABLE_SDT2) {
+		dvb_logerr("%s: invalid marker 0x%02x, sould be 0x%02x or 0x%02x",
+				__func__, buf[0], DVB_TABLE_SDT, DVB_TABLE_SDT2);
+		return -2;
+	}
 
 	if (*table_length > 0) {
+		memcpy(sdt, p, size);
+		bswap16(sdt->network_id);
+
 		/* find end of curent list */
+		head = &sdt->service;
 		while (*head != NULL)
 			head = &(*head)->next;
 	} else {
-		if (p + size > endbuf) {
-			dvb_logerr("SDT table was truncated. Need %zu bytes, but has only %zu.",
-					size, buflen);
-			return -1;
-		}
 		memcpy(sdt, p, size);
-		*table_length = sizeof(struct dvb_table_sdt);
-
 		bswap16(sdt->network_id);
 
 		sdt->service = NULL;
+		head = &sdt->service;
 	}
 	p += size;
 
+	size = sdt->header.section_length + 3 - 4; /* plus header, minus CRC */
+	if (buf + size > endbuf) {
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - buf, size);
+		return -3;
+	}
+	endbuf = buf + size;
+
+	/* get the event entries */
 	size = offsetof(struct dvb_table_sdt_service, descriptor);
 	while (p + size <= endbuf) {
 		struct dvb_table_sdt_service *service;
 
 		service = malloc(sizeof(struct dvb_table_sdt_service));
-
+		if (!service) {
+			dvb_logerr("%s: out of memory", __func__);
+			return -5;
+		}
 		memcpy(service, p, size);
 		p += size;
 
@@ -65,15 +89,25 @@ ssize_t dvb_table_sdt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		*head = service;
 		head = &(*head)->next;
 
-		/* get the descriptors for each program */
-		dvb_parse_descriptors(parms, p, service->section_length,
-				      &service->descriptor);
+		/* parse the descriptors */
+		if (service->desc_length > 0) {
+			uint16_t desc_length = service->desc_length;
+			if (p + desc_length > endbuf) {
+				dvb_logwarn("%s: decsriptors short read %zd/%d bytes", __func__,
+					   endbuf - p, desc_length);
+				desc_length = endbuf - p;
+			}
+			if (dvb_parse_descriptors(parms, p, desc_length,
+					      &service->descriptor) != 0) {
+				return -4;
+			}
+			p += desc_length;
+		}
 
-		p += service->section_length;
 	}
 	if (endbuf - p)
-		dvb_logerr("SDT table has %zu spurious bytes at the end.",
-			   endbuf - p);
+		dvb_logwarn("%s: %zu spurious bytes at the end",
+			   __func__, endbuf - p);
 
 	*table_length = p - buf;
 	return p - buf;
diff --git a/lib/libdvbv5/descriptors/vct.c b/lib/libdvbv5/descriptors/vct.c
index c0d531a..39d44f4 100644
--- a/lib/libdvbv5/descriptors/vct.c
+++ b/lib/libdvbv5/descriptors/vct.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2013 - Mauro Carvalho Chehab <m.chehab@samsung.com>
- * Copyright (c) 2013 - Andre Roth <neolynx@gmail.com>
+ * Copyright (c) 2013-2014 - Andre Roth <neolynx@gmail.com>
  *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of the GNU General Public License
@@ -20,6 +20,7 @@
  */
 
 #include <libdvbv5/vct.h>
+#include <libdvbv5/descriptors.h>
 #include <libdvbv5/dvb-fe.h>
 #include <parse_string.h>
 
@@ -27,27 +28,35 @@ ssize_t atsc_table_vct_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 			ssize_t buflen, struct atsc_table_vct *vct, ssize_t *table_length)
 {
 	const uint8_t *p = buf, *endbuf = buf + buflen - 4;
-	struct atsc_table_vct_channel **head = &vct->channel;
+	struct atsc_table_vct_channel **head;
+	size_t size;
 	int i, n;
-	size_t size = offsetof(struct atsc_table_vct, channel);
 
+	size = offsetof(struct atsc_table_vct, channel);
 	if (p + size > endbuf) {
-		dvb_logerr("VCT table was truncated. Need %zu bytes, but has only %zu.",
-			   size, buflen);
+		dvb_logerr("%s: short read %zd/%zd bytes", __func__,
+			   endbuf - p, size);
 		return -1;
 	}
 
+	if (buf[0] != ATSC_TABLE_TVCT && buf[0] != ATSC_TABLE_CVCT) {
+		dvb_logerr("%s: invalid marker 0x%02x, sould be 0x%02x or 0x%02x",
+				__func__, buf[0], ATSC_TABLE_TVCT, ATSC_TABLE_CVCT);
+		return -2;
+	}
+
 	if (*table_length > 0) {
 		/* find end of curent list */
+		head = &vct->channel;
 		while (*head != NULL)
 			head = &(*head)->next;
 	} else {
 		memcpy(vct, p, size);
 
-		*table_length = sizeof(struct atsc_table_vct);
-
 		vct->channel = NULL;
 		vct->descriptor = NULL;
+
+		head = &vct->channel;
 	}
 	p += size;
 
@@ -56,13 +65,17 @@ ssize_t atsc_table_vct_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		struct atsc_table_vct_channel *channel;
 
 		if (p + size > endbuf) {
-			dvb_logerr("VCT channel table is missing %d elements",
-				   vct->num_channels_in_section - n + 1);
+			dvb_logerr("%s: channel table is missing %d elements",
+				   __func__, vct->num_channels_in_section - n + 1);
 			vct->num_channels_in_section = n;
 			break;
 		}
 
 		channel = malloc(sizeof(struct atsc_table_vct_channel));
+		if (!channel) {
+			dvb_logerr("%s: out of memory", __func__);
+			return -3;
+		}
 
 		memcpy(channel, p, size);
 		p += size;
@@ -123,8 +136,8 @@ ssize_t atsc_table_vct_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 				      &vct->descriptor);
 	}
 	if (endbuf - p)
-		dvb_logerr("VCT table has %zu spurious bytes at the end.",
-			   endbuf - p);
+		dvb_logwarn("%s: %zu spurious bytes at the end",
+			   __func__, endbuf - p);
 	*table_length = p - buf;
 	return p - buf;
 }
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 6/7] libdvbv5: cleanup printing of tables and descriptors
  2014-04-09 22:26 [PATCH 1/7] libdvbv5: reunite atsc_table_header and dvb_table_header André Roth
                   ` (3 preceding siblings ...)
  2014-04-09 22:26 ` [PATCH 5/7] libdvbv5: cleanup table parsers André Roth
@ 2014-04-09 22:26 ` André Roth
  2014-04-09 22:27 ` [PATCH 7/7] libdvbv5: rename descriptor functions André Roth
  5 siblings, 0 replies; 7+ messages in thread
From: André Roth @ 2014-04-09 22:26 UTC (permalink / raw)
  To: linux-media; +Cc: André Roth

- use log info for table and descpritor printing
- cleanup 'out of memory' logs
- fix error condition in desc_ts_info

Signed-off-by: André Roth <neolynx@gmail.com>
---
 lib/include/libdvbv5/atsc_header.h                 |    2 +-
 lib/libdvbv5/descriptors.c                         |    4 +-
 lib/libdvbv5/descriptors/atsc_eit.c                |   18 ++++----
 lib/libdvbv5/descriptors/cat.c                     |    2 +-
 .../descriptors/desc_atsc_service_location.c       |   12 +++---
 lib/libdvbv5/descriptors/desc_ca.c                 |    6 +--
 lib/libdvbv5/descriptors/desc_ca_identifier.c      |    2 +-
 lib/libdvbv5/descriptors/desc_cable_delivery.c     |   12 +++---
 lib/libdvbv5/descriptors/desc_event_extended.c     |    2 +-
 lib/libdvbv5/descriptors/desc_event_short.c        |    6 +--
 lib/libdvbv5/descriptors/desc_extension.c          |    4 +-
 lib/libdvbv5/descriptors/desc_frequency_list.c     |    4 +-
 lib/libdvbv5/descriptors/desc_hierarchy.c          |    8 ++--
 lib/libdvbv5/descriptors/desc_isdbt_delivery.c     |    8 ++--
 lib/libdvbv5/descriptors/desc_language.c           |    2 +-
 lib/libdvbv5/descriptors/desc_logical_channel.c    |    8 ++--
 lib/libdvbv5/descriptors/desc_network_name.c       |    2 +-
 lib/libdvbv5/descriptors/desc_partial_reception.c  |    4 +-
 lib/libdvbv5/descriptors/desc_sat.c                |   14 +++---
 lib/libdvbv5/descriptors/desc_service.c            |    6 +--
 lib/libdvbv5/descriptors/desc_service_list.c       |    4 +-
 lib/libdvbv5/descriptors/desc_service_location.c   |    8 ++--
 lib/libdvbv5/descriptors/desc_t2_delivery.c        |   28 ++++++------
 .../descriptors/desc_terrestrial_delivery.c        |   26 +++++------
 lib/libdvbv5/descriptors/desc_ts_info.c            |   16 ++++---
 lib/libdvbv5/descriptors/eit.c                     |   26 +++++------
 lib/libdvbv5/descriptors/header.c                  |   22 +++++-----
 lib/libdvbv5/descriptors/mgt.c                     |   22 +++++-----
 lib/libdvbv5/descriptors/mpeg_es.c                 |   30 ++++++-------
 lib/libdvbv5/descriptors/mpeg_pes.c                |    2 +-
 lib/libdvbv5/descriptors/mpeg_ts.c                 |   38 ++++++++---------
 lib/libdvbv5/descriptors/nit.c                     |   17 ++++----
 lib/libdvbv5/descriptors/pat.c                     |    2 +-
 lib/libdvbv5/descriptors/sdt.c                     |   22 +++++-----
 lib/libdvbv5/descriptors/vct.c                     |   45 ++++++++++----------
 lib/libdvbv5/dvb-scan.c                            |    4 +-
 36 files changed, 222 insertions(+), 216 deletions(-)

diff --git a/lib/include/libdvbv5/atsc_header.h b/lib/include/libdvbv5/atsc_header.h
index 12e7379..96bfc11 100644
--- a/lib/include/libdvbv5/atsc_header.h
+++ b/lib/include/libdvbv5/atsc_header.h
@@ -34,7 +34,7 @@
 
 #define ATSC_TABLE_HEADER_PRINT(_parms, _table) \
 	dvb_table_header_print(_parms, &_table->header); \
-	dvb_log("| protocol_version %d", _table->protocol_version); \
+	dvb_loginfo("| protocol_version %d", _table->protocol_version); \
 
 
 #endif
diff --git a/lib/libdvbv5/descriptors.c b/lib/libdvbv5/descriptors.c
index 54ce933..539f824 100644
--- a/lib/libdvbv5/descriptors.c
+++ b/lib/libdvbv5/descriptors.c
@@ -178,7 +178,7 @@ void dvb_print_descriptors(struct dvb_v5_fe_parms *parms, struct dvb_desc *desc)
 		dvb_desc_print_func print = dvb_descriptors[desc->type].print;
 		if (!print)
 			print = dvb_desc_default_print;
-		dvb_log("|        0x%02x: %s", desc->type, dvb_descriptors[desc->type].name);
+		dvb_loginfo("|        0x%02x: %s", desc->type, dvb_descriptors[desc->type].name);
 		print(parms, desc);
 		desc = desc->next;
 	}
@@ -1374,6 +1374,6 @@ void hexdump(struct dvb_v5_fe_parms *parms, const char *prefix, const unsigned c
 		for (i = strlen(hex); i < 49; i++)
 			strncat(spaces, " ", sizeof(spaces));
 		ascii[j] = '\0';
-		dvb_log("%s%s %s %s", prefix, hex, spaces, ascii);
+		dvb_loginfo("%s%s %s %s", prefix, hex, spaces, ascii);
 	}
 }
diff --git a/lib/libdvbv5/descriptors/atsc_eit.c b/lib/libdvbv5/descriptors/atsc_eit.c
index 2b446bb..985b055 100644
--- a/lib/libdvbv5/descriptors/atsc_eit.c
+++ b/lib/libdvbv5/descriptors/atsc_eit.c
@@ -138,7 +138,7 @@ void atsc_table_eit_free(struct atsc_table_eit *eit)
 
 void atsc_table_eit_print(struct dvb_v5_fe_parms *parms, struct atsc_table_eit *eit)
 {
-	dvb_log("EIT");
+	dvb_loginfo("EIT");
 	ATSC_TABLE_HEADER_PRINT(parms, eit);
 	const struct atsc_table_eit_event *event = eit->event;
 	uint16_t events = 0;
@@ -147,18 +147,18 @@ void atsc_table_eit_print(struct dvb_v5_fe_parms *parms, struct atsc_table_eit *
 		char start[255];
 
 		strftime(start, sizeof(start), "%F %T", &event->start);
-		dvb_log("|-  event %7d", event->event_id);
-		dvb_log("|   Source                %d", event->source_id);
-		dvb_log("|   Starttime             %d", event->start_time);
-		dvb_log("|   Start                 %s UTC", start);
-		dvb_log("|   Duration              %dh %dm %ds", event->duration / 3600, (event->duration % 3600) / 60, event->duration % 60);
-		dvb_log("|   ETM                   %d", event->etm);
-		dvb_log("|   title length          %d", event->title_length);
+		dvb_loginfo("|-  event %7d", event->event_id);
+		dvb_loginfo("|   Source                %d", event->source_id);
+		dvb_loginfo("|   Starttime             %d", event->start_time);
+		dvb_loginfo("|   Start                 %s UTC", start);
+		dvb_loginfo("|   Duration              %dh %dm %ds", event->duration / 3600, (event->duration % 3600) / 60, event->duration % 60);
+		dvb_loginfo("|   ETM                   %d", event->etm);
+		dvb_loginfo("|   title length          %d", event->title_length);
 		dvb_print_descriptors(parms, event->descriptor);
 		event = event->next;
 		events++;
 	}
-	dvb_log("|_  %d events", events);
+	dvb_loginfo("|_  %d events", events);
 }
 
 void atsc_time(const uint32_t start_time, struct tm *tm)
diff --git a/lib/libdvbv5/descriptors/cat.c b/lib/libdvbv5/descriptors/cat.c
index 04b9416..a8fb00b 100644
--- a/lib/libdvbv5/descriptors/cat.c
+++ b/lib/libdvbv5/descriptors/cat.c
@@ -88,7 +88,7 @@ void dvb_table_cat_free(struct dvb_table_cat *cat)
 
 void dvb_table_cat_print(struct dvb_v5_fe_parms *parms, struct dvb_table_cat *cat)
 {
-	dvb_log("CAT");
+	dvb_loginfo("CAT");
 	dvb_table_header_print(parms, &cat->header);
 	dvb_print_descriptors(parms, cat->descriptor);
 }
diff --git a/lib/libdvbv5/descriptors/desc_atsc_service_location.c b/lib/libdvbv5/descriptors/desc_atsc_service_location.c
index a654adc..3f19e72 100644
--- a/lib/libdvbv5/descriptors/desc_atsc_service_location.c
+++ b/lib/libdvbv5/descriptors/desc_atsc_service_location.c
@@ -64,13 +64,13 @@ void atsc_desc_service_location_print(struct dvb_v5_fe_parms *parms, const struc
 	struct atsc_desc_service_location_elementary *el = s_loc->elementary;
 	int i;
 
-	dvb_log("|           pcr PID               %d", s_loc->pcr_pid);
-	dvb_log("|\\ elementary service - %d elementaries", s_loc->number_elements);
+	dvb_loginfo("|           pcr PID               %d", s_loc->pcr_pid);
+	dvb_loginfo("|\\ elementary service - %d elementaries", s_loc->number_elements);
 	for (i = 0; i < s_loc->number_elements; i++) {
-		dvb_log("|-  elementary %d", i);
-		dvb_log("|-      | stream type 0x%02x", el[i].stream_type);
-		dvb_log("|-      | PID         %d", el[i].elementary_pid);
-		dvb_log("|-      | Language    %c%c%c",
+		dvb_loginfo("|-  elementary %d", i);
+		dvb_loginfo("|-      | stream type 0x%02x", el[i].stream_type);
+		dvb_loginfo("|-      | PID         %d", el[i].elementary_pid);
+		dvb_loginfo("|-      | Language    %c%c%c",
 			el[i].ISO_639_language_code[0],
 			el[i].ISO_639_language_code[1],
 			el[i].ISO_639_language_code[2]);
diff --git a/lib/libdvbv5/descriptors/desc_ca.c b/lib/libdvbv5/descriptors/desc_ca.c
index 791bda2..fa18814 100644
--- a/lib/libdvbv5/descriptors/desc_ca.c
+++ b/lib/libdvbv5/descriptors/desc_ca.c
@@ -48,9 +48,9 @@ int dvb_desc_ca_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, struct d
 void dvb_desc_ca_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 {
 	const struct dvb_desc_ca *d = (const struct dvb_desc_ca *) desc;
-	dvb_log("|           ca_id             0x%04x", d->ca_id);
-	dvb_log("|           ca_pid            0x%04x", d->ca_pid);
-	dvb_log("|           privdata length   %d", d->privdata_len);
+	dvb_loginfo("|           ca_id             0x%04x", d->ca_id);
+	dvb_loginfo("|           ca_pid            0x%04x", d->ca_pid);
+	dvb_loginfo("|           privdata length   %d", d->privdata_len);
 	if (d->privdata)
 		hexdump(parms, "|           privdata          ", d->privdata, d->privdata_len);
 }
diff --git a/lib/libdvbv5/descriptors/desc_ca_identifier.c b/lib/libdvbv5/descriptors/desc_ca_identifier.c
index 3102d01..23c8e89 100644
--- a/lib/libdvbv5/descriptors/desc_ca_identifier.c
+++ b/lib/libdvbv5/descriptors/desc_ca_identifier.c
@@ -46,7 +46,7 @@ void dvb_desc_ca_identifier_print(struct dvb_v5_fe_parms *parms, const struct dv
 	int i;
 
 	for (i = 0; i < d->caid_count; i++)
-		dvb_log("|           caid %d            0x%04x", i, d->caids[i]);
+		dvb_loginfo("|           caid %d            0x%04x", i, d->caids[i]);
 }
 
 void dvb_desc_ca_identifier_free(struct dvb_desc *desc)
diff --git a/lib/libdvbv5/descriptors/desc_cable_delivery.c b/lib/libdvbv5/descriptors/desc_cable_delivery.c
index 2ba0ce6..852c79e 100644
--- a/lib/libdvbv5/descriptors/desc_cable_delivery.c
+++ b/lib/libdvbv5/descriptors/desc_cable_delivery.c
@@ -41,12 +41,12 @@ int dvb_desc_cable_delivery_init(struct dvb_v5_fe_parms *parms, const uint8_t *b
 void dvb_desc_cable_delivery_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 {
 	const struct dvb_desc_cable_delivery *cable = (const struct dvb_desc_cable_delivery *) desc;
-	dvb_log("|           length            %d", cable->length);
-	dvb_log("|           frequency         %d", cable->frequency);
-	dvb_log("|           fec outer         %d", cable->fec_outer);
-	dvb_log("|           modulation        %d", cable->modulation);
-	dvb_log("|           symbol_rate       %d", cable->symbol_rate);
-	dvb_log("|           fec inner         %d", cable->fec_inner);
+	dvb_loginfo("|           length            %d", cable->length);
+	dvb_loginfo("|           frequency         %d", cable->frequency);
+	dvb_loginfo("|           fec outer         %d", cable->fec_outer);
+	dvb_loginfo("|           modulation        %d", cable->modulation);
+	dvb_loginfo("|           symbol_rate       %d", cable->symbol_rate);
+	dvb_loginfo("|           fec inner         %d", cable->fec_inner);
 }
 
 const unsigned dvbc_fec_table[] = {
diff --git a/lib/libdvbv5/descriptors/desc_event_extended.c b/lib/libdvbv5/descriptors/desc_event_extended.c
index 346a71c..d0865f9 100644
--- a/lib/libdvbv5/descriptors/desc_event_extended.c
+++ b/lib/libdvbv5/descriptors/desc_event_extended.c
@@ -74,6 +74,6 @@ void dvb_desc_event_extended_free(struct dvb_desc *desc)
 void dvb_desc_event_extended_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 {
 	const struct dvb_desc_event_extended *event = (const struct dvb_desc_event_extended *) desc;
-	dvb_log("|           '%s'", event->text);
+	dvb_loginfo("|           '%s'", event->text);
 }
 
diff --git a/lib/libdvbv5/descriptors/desc_event_short.c b/lib/libdvbv5/descriptors/desc_event_short.c
index e9d7bd7..535e656 100644
--- a/lib/libdvbv5/descriptors/desc_event_short.c
+++ b/lib/libdvbv5/descriptors/desc_event_short.c
@@ -67,8 +67,8 @@ void dvb_desc_event_short_free(struct dvb_desc *desc)
 void dvb_desc_event_short_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 {
 	const struct dvb_desc_event_short *event = (const struct dvb_desc_event_short *) desc;
-	dvb_log("|           name          '%s'", event->name);
-	dvb_log("|           language      '%s'", event->language);
-	dvb_log("|           sescription   '%s'", event->text);
+	dvb_loginfo("|           name          '%s'", event->name);
+	dvb_loginfo("|           language      '%s'", event->language);
+	dvb_loginfo("|           sescription   '%s'", event->text);
 }
 
diff --git a/lib/libdvbv5/descriptors/desc_extension.c b/lib/libdvbv5/descriptors/desc_extension.c
index 0aaeba8..7d9337c 100644
--- a/lib/libdvbv5/descriptors/desc_extension.c
+++ b/lib/libdvbv5/descriptors/desc_extension.c
@@ -138,7 +138,7 @@ int extension_descriptor_init(struct dvb_v5_fe_parms *parms,
 			break;
 		/* fall through */
 	case 3:
-		dvb_log("%sextension descriptor %s type 0x%02x, size %d",
+		dvb_logwarn("%sextension descriptor %s type 0x%02x, size %d",
 			dvb_ext_descriptors[desc_type].init ? "" : "Not handled ",
 			dvb_ext_descriptors[desc_type].name, desc_type, desc_len);
 		hexdump(parms, "content: ", p, desc_len);
@@ -180,7 +180,7 @@ void extension_descriptor_print(struct dvb_v5_fe_parms *parms,
 {
 	struct dvb_extension_descriptor *ext = (void *)desc;
 	uint8_t type = ext->extension_code;
-	dvb_log("|           descriptor %s type 0x%02x",
+	dvb_loginfo("|           descriptor %s type 0x%02x",
 		dvb_ext_descriptors[type].name, type);
 
 	if (dvb_ext_descriptors[type].print)
diff --git a/lib/libdvbv5/descriptors/desc_frequency_list.c b/lib/libdvbv5/descriptors/desc_frequency_list.c
index a9a3b9e..5b235d4 100644
--- a/lib/libdvbv5/descriptors/desc_frequency_list.c
+++ b/lib/libdvbv5/descriptors/desc_frequency_list.c
@@ -59,11 +59,11 @@ int dvb_desc_frequency_list_init(struct dvb_v5_fe_parms *parms, const uint8_t *b
 void dvb_desc_frequency_list_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 {
 	const struct dvb_desc_frequency_list *d = (const struct dvb_desc_frequency_list *) desc;
-	dvb_log("|           type: %d", d->freq_type);
+	dvb_loginfo("|           type: %d", d->freq_type);
 	int i = 0;
 
 	for (i = 0; i < d->frequencies; i++) {
-		dvb_log("|           frequency : %u", d->frequency[i]);
+		dvb_loginfo("|           frequency : %u", d->frequency[i]);
 	}
 }
 
diff --git a/lib/libdvbv5/descriptors/desc_hierarchy.c b/lib/libdvbv5/descriptors/desc_hierarchy.c
index 17b3699..773068f 100644
--- a/lib/libdvbv5/descriptors/desc_hierarchy.c
+++ b/lib/libdvbv5/descriptors/desc_hierarchy.c
@@ -35,9 +35,9 @@ int dvb_desc_hierarchy_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, s
 void dvb_desc_hierarchy_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 {
 	const struct dvb_desc_hierarchy *hierarchy = (const struct dvb_desc_hierarchy *) desc;
-	dvb_log("|           type           %d", hierarchy->hierarchy_type);
-	dvb_log("|           layer          %d", hierarchy->layer);
-	dvb_log("|           embedded_layer %d", hierarchy->embedded_layer);
-	dvb_log("|           channel        %d", hierarchy->channel);
+	dvb_loginfo("|           type           %d", hierarchy->hierarchy_type);
+	dvb_loginfo("|           layer          %d", hierarchy->layer);
+	dvb_loginfo("|           embedded_layer %d", hierarchy->embedded_layer);
+	dvb_loginfo("|           channel        %d", hierarchy->channel);
 }
 
diff --git a/lib/libdvbv5/descriptors/desc_isdbt_delivery.c b/lib/libdvbv5/descriptors/desc_isdbt_delivery.c
index 336ca85..e25ce46 100644
--- a/lib/libdvbv5/descriptors/desc_isdbt_delivery.c
+++ b/lib/libdvbv5/descriptors/desc_isdbt_delivery.c
@@ -83,14 +83,14 @@ void isdbt_desc_delivery_print(struct dvb_v5_fe_parms *parms, const struct dvb_d
 	const struct isdbt_desc_terrestrial_delivery_system *d = (const void *) desc;
 	int i;
 
-	dvb_log("|           transmission mode %s (%d)",
+	dvb_loginfo("|           transmission mode %s (%d)",
 		tm_name[d->transmission_mode], d->transmission_mode);
-	dvb_log("|           guard interval    %s (%d)",
+	dvb_loginfo("|           guard interval    %s (%d)",
 		interval_name[d->guard_interval], d->guard_interval);
-	dvb_log("|           area code         %d", d->area_code);
+	dvb_loginfo("|           area code         %d", d->area_code);
 
 	for (i = 0; i < d->num_freqs; i++) {
-		dvb_log("|           frequency[%d]      %ld Hz", i, d->frequency[i] * 1000000l / 7);
+		dvb_loginfo("|           frequency[%d]      %ld Hz", i, d->frequency[i] * 1000000l / 7);
 	}
 }
 
diff --git a/lib/libdvbv5/descriptors/desc_language.c b/lib/libdvbv5/descriptors/desc_language.c
index 7504dd5..617fcc7 100644
--- a/lib/libdvbv5/descriptors/desc_language.c
+++ b/lib/libdvbv5/descriptors/desc_language.c
@@ -37,6 +37,6 @@ int dvb_desc_language_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, st
 void dvb_desc_language_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 {
 	const struct dvb_desc_language *lang = (const struct dvb_desc_language *) desc;
-	dvb_log("|           lang: %s (type: %d)", lang->language, lang->audio_type);
+	dvb_loginfo("|           lang: %s (type: %d)", lang->language, lang->audio_type);
 }
 
diff --git a/lib/libdvbv5/descriptors/desc_logical_channel.c b/lib/libdvbv5/descriptors/desc_logical_channel.c
index 7137c57..99a4507 100644
--- a/lib/libdvbv5/descriptors/desc_logical_channel.c
+++ b/lib/libdvbv5/descriptors/desc_logical_channel.c
@@ -36,7 +36,7 @@ int dvb_desc_logical_channel_init(struct dvb_v5_fe_parms *parms,
 
 	d->lcn = malloc(d->length);
 	if (!d->lcn) {
-		dvb_perror("Out of memory!");
+		dvb_logerr("%s: out of memory", __func__);
 		return -1;
 	}
 
@@ -60,9 +60,9 @@ void dvb_desc_logical_channel_print(struct dvb_v5_fe_parms *parms, const struct
 	len = d->length / sizeof(d->lcn);
 
 	for (i = 0; i < len; i++) {
-		dvb_log("|           service ID[%d]     %d", i, d->lcn[i].service_id);
-		dvb_log("|           LCN             %d", d->lcn[i].logical_channel_number);
-		dvb_log("|           visible service %d", d->lcn[i].visible_service_flag);
+		dvb_loginfo("|           service ID[%d]     %d", i, d->lcn[i].service_id);
+		dvb_loginfo("|           LCN             %d", d->lcn[i].logical_channel_number);
+		dvb_loginfo("|           visible service %d", d->lcn[i].visible_service_flag);
 	}
 }
 
diff --git a/lib/libdvbv5/descriptors/desc_network_name.c b/lib/libdvbv5/descriptors/desc_network_name.c
index 0fa456f..a34a27f 100644
--- a/lib/libdvbv5/descriptors/desc_network_name.c
+++ b/lib/libdvbv5/descriptors/desc_network_name.c
@@ -42,7 +42,7 @@ void dvb_desc_network_name_print(struct dvb_v5_fe_parms *parms, const struct dvb
 {
 	const struct dvb_desc_network_name *net = (const struct dvb_desc_network_name *) desc;
 
-	dvb_log("|           network name: '%s'", net->network_name);
+	dvb_loginfo("|           network name: '%s'", net->network_name);
 }
 
 void dvb_desc_network_name_free(struct dvb_desc *desc)
diff --git a/lib/libdvbv5/descriptors/desc_partial_reception.c b/lib/libdvbv5/descriptors/desc_partial_reception.c
index 0e4d25c..390080c 100644
--- a/lib/libdvbv5/descriptors/desc_partial_reception.c
+++ b/lib/libdvbv5/descriptors/desc_partial_reception.c
@@ -33,7 +33,7 @@ int isdb_desc_partial_reception_init(struct dvb_v5_fe_parms *parms,
 
 	d->partial_reception = malloc(d->length);
 	if (!d->partial_reception) {
-		dvb_perror("Out of memory!");
+		dvb_logerr("%s: out of memory", __func__);
 		return -1;
 	}
 
@@ -62,6 +62,6 @@ void isdb_desc_partial_reception_print(struct dvb_v5_fe_parms *parms, const stru
 	len = d->length / sizeof(d->partial_reception);
 
 	for (i = 0; i < len; i++) {
-		dvb_log("|           service ID[%d]     %d", i, d->partial_reception[i].service_id);
+		dvb_loginfo("|           service ID[%d]     %d", i, d->partial_reception[i].service_id);
 	}
 }
diff --git a/lib/libdvbv5/descriptors/desc_sat.c b/lib/libdvbv5/descriptors/desc_sat.c
index 5494799..f7fb8f1 100644
--- a/lib/libdvbv5/descriptors/desc_sat.c
+++ b/lib/libdvbv5/descriptors/desc_sat.c
@@ -57,13 +57,13 @@ void dvb_desc_sat_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *de
 			pol = 'R';
 			break;
 	}
-	dvb_log("|           modulation_system %s", sat->modulation_system ? "DVB-S2" : "DVB-S");
-	dvb_log("|           frequency         %d %c", sat->frequency, pol);
-	dvb_log("|           symbol_rate       %d", sat->symbol_rate);
-	dvb_log("|           fec               %d", sat->fec);
-	dvb_log("|           modulation_type   %d", sat->modulation_type);
-	dvb_log("|           roll_off          %d", sat->roll_off);
-	dvb_log("|           orbit             %.1f %c", (float) sat->orbit / 10.0, sat->west_east ? 'E' : 'W');
+	dvb_loginfo("|           modulation_system %s", sat->modulation_system ? "DVB-S2" : "DVB-S");
+	dvb_loginfo("|           frequency         %d %c", sat->frequency, pol);
+	dvb_loginfo("|           symbol_rate       %d", sat->symbol_rate);
+	dvb_loginfo("|           fec               %d", sat->fec);
+	dvb_loginfo("|           modulation_type   %d", sat->modulation_type);
+	dvb_loginfo("|           roll_off          %d", sat->roll_off);
+	dvb_loginfo("|           orbit             %.1f %c", (float) sat->orbit / 10.0, sat->west_east ? 'E' : 'W');
 }
 
 const unsigned dvbs_dvbc_dvbs_freq_inner[] = {
diff --git a/lib/libdvbv5/descriptors/desc_service.c b/lib/libdvbv5/descriptors/desc_service.c
index 7289219..069317a 100644
--- a/lib/libdvbv5/descriptors/desc_service.c
+++ b/lib/libdvbv5/descriptors/desc_service.c
@@ -62,8 +62,8 @@ void dvb_desc_service_free(struct dvb_desc *desc)
 void dvb_desc_service_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 {
 	const struct dvb_desc_service *service = (const struct dvb_desc_service *) desc;
-	dvb_log("|           service type  %d", service->service_type);
-	dvb_log("|           name          '%s'", service->name);
-	dvb_log("|           provider      '%s'", service->provider);
+	dvb_loginfo("|           service type  %d", service->service_type);
+	dvb_loginfo("|           provider      '%s'", service->provider);
+	dvb_loginfo("|           name          '%s'", service->name);
 }
 
diff --git a/lib/libdvbv5/descriptors/desc_service_list.c b/lib/libdvbv5/descriptors/desc_service_list.c
index 3e7e603..4cd4018 100644
--- a/lib/libdvbv5/descriptors/desc_service_list.c
+++ b/lib/libdvbv5/descriptors/desc_service_list.c
@@ -48,8 +48,8 @@ void dvb_desc_service_list_print(struct dvb_v5_fe_parms *parms, const struct dvb
 	/*const struct dvb_desc_service_list *slist = (const struct dvb_desc_service_list *) desc;*/
 	/*int i = 0;*/
 	/*while(slist->services[i].service_id != 0) {*/
-		/*dvb_log("|           service id   : '%d'", slist->services[i].service_id);*/
-		/*dvb_log("|           service type : '%d'", slist->services[i].service_type);*/
+		/*dvb_loginfo("|           service id   : '%d'", slist->services[i].service_id);*/
+		/*dvb_loginfo("|           service type : '%d'", slist->services[i].service_type);*/
 		/*++i;*/
 	/*}*/
 }
diff --git a/lib/libdvbv5/descriptors/desc_service_location.c b/lib/libdvbv5/descriptors/desc_service_location.c
index 3a571fd..95cb342 100644
--- a/lib/libdvbv5/descriptors/desc_service_location.c
+++ b/lib/libdvbv5/descriptors/desc_service_location.c
@@ -65,11 +65,11 @@ void dvb_desc_service_location_print(struct dvb_v5_fe_parms *parms, const struct
 	struct dvb_desc_service_location_element *element = service_location->element;
 	int i;
 
-	dvb_log("|    pcr pid      %d", service_location->pcr_pid);
-	dvb_log("|    streams:");
+	dvb_loginfo("|    pcr pid      %d", service_location->pcr_pid);
+	dvb_loginfo("|    streams:");
 	for (i = 0; i < service_location->elements; i++)
-		dvb_log("|      pid %d, type %d: %s", element[i].elementary_pid, element[i].stream_type, element[i].language);
-	dvb_log("| 	%d elements", service_location->elements);
+		dvb_loginfo("|      pid %d, type %d: %s", element[i].elementary_pid, element[i].stream_type, element[i].language);
+	dvb_loginfo("| 	%d elements", service_location->elements);
 }
 
 void dvb_desc_service_location_free(struct dvb_desc *desc)
diff --git a/lib/libdvbv5/descriptors/desc_t2_delivery.c b/lib/libdvbv5/descriptors/desc_t2_delivery.c
index 0d5cab6..498c707 100644
--- a/lib/libdvbv5/descriptors/desc_t2_delivery.c
+++ b/lib/libdvbv5/descriptors/desc_t2_delivery.c
@@ -66,7 +66,7 @@ int dvb_desc_t2_delivery_init(struct dvb_v5_fe_parms *parms,
 	d->centre_frequency = calloc(d->frequency_loop_length,
 				     sizeof(*d->centre_frequency));
 	if (!d->centre_frequency) {
-		dvb_perror("Out of memory");
+		dvb_logerr("%s: out of memory", __func__);
 		return -3;
 	}
 
@@ -81,7 +81,7 @@ int dvb_desc_t2_delivery_init(struct dvb_v5_fe_parms *parms,
 
 	d->subcell = calloc(d->subcel_info_loop_length, sizeof(*d->subcell));
 	if (!d->subcell) {
-		dvb_perror("Out of memory");
+		dvb_logerr("%s: out of memory", __func__);
 		return -4;
 	}
 	memcpy(d->subcell, p, sizeof(*d->subcell) * d->subcel_info_loop_length);
@@ -98,26 +98,26 @@ void dvb_desc_t2_delivery_print(struct dvb_v5_fe_parms *parms,
 	const struct dvb_desc_t2_delivery *d = desc;
 	int i;
 
-	dvb_log("|           plp_id                    %d", d->plp_id);
-	dvb_log("|           system_id                 %d", d->system_id);
+	dvb_loginfo("|           plp_id                    %d", d->plp_id);
+	dvb_loginfo("|           system_id                 %d", d->system_id);
 
 	if (ext->length - 1 <= 4)
 		return;
 
-	dvb_log("|           tfs_flag                  %d", d->tfs_flag);
-	dvb_log("|           other_frequency_flag      %d", d->other_frequency_flag);
-	dvb_log("|           transmission_mode         %d", d->transmission_mode);
-	dvb_log("|           guard_interval            %d", d->guard_interval);
-	dvb_log("|           reserved                  %d", d->reserved);
-	dvb_log("|           bandwidth                 %d", d->bandwidth);
-	dvb_log("|           SISO MISO                 %d", d->SISO_MISO);
+	dvb_loginfo("|           tfs_flag                  %d", d->tfs_flag);
+	dvb_loginfo("|           other_frequency_flag      %d", d->other_frequency_flag);
+	dvb_loginfo("|           transmission_mode         %d", d->transmission_mode);
+	dvb_loginfo("|           guard_interval            %d", d->guard_interval);
+	dvb_loginfo("|           reserved                  %d", d->reserved);
+	dvb_loginfo("|           bandwidth                 %d", d->bandwidth);
+	dvb_loginfo("|           SISO MISO                 %d", d->SISO_MISO);
 
 	for (i = 0; i < d->frequency_loop_length; i++)
-		dvb_log("|           centre frequency[%d]   %d", i, d->centre_frequency[i]);
+		dvb_loginfo("|           centre frequency[%d]   %d", i, d->centre_frequency[i]);
 
 	for (i = 0; i < d->subcel_info_loop_length; i++) {
-		dvb_log("|           cell_id_extension[%d]  %d", i, d->subcell[i].cell_id_extension);
-		dvb_log("|           transposer frequency   %d", d->subcell[i].transposer_frequency);
+		dvb_loginfo("|           cell_id_extension[%d]  %d", i, d->subcell[i].cell_id_extension);
+		dvb_loginfo("|           transposer frequency   %d", d->subcell[i].transposer_frequency);
 	}
 }
 
diff --git a/lib/libdvbv5/descriptors/desc_terrestrial_delivery.c b/lib/libdvbv5/descriptors/desc_terrestrial_delivery.c
index 8b6a92d..8df1a53 100644
--- a/lib/libdvbv5/descriptors/desc_terrestrial_delivery.c
+++ b/lib/libdvbv5/descriptors/desc_terrestrial_delivery.c
@@ -39,19 +39,19 @@ int dvb_desc_terrestrial_delivery_init(struct dvb_v5_fe_parms *parms, const uint
 void dvb_desc_terrestrial_delivery_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc *desc)
 {
 	const struct dvb_desc_terrestrial_delivery *tdel = (const struct dvb_desc_terrestrial_delivery *) desc;
-	dvb_log("|           length                %d", tdel->length);
-	dvb_log("|           centre frequency      %d", tdel->centre_frequency * 10);
-	dvb_log("|           mpe_fec_indicator     %d", tdel->mpe_fec_indicator);
-	dvb_log("|           time_slice_indicator  %d", tdel->time_slice_indicator);
-	dvb_log("|           priority              %d", tdel->priority);
-	dvb_log("|           bandwidth             %d", tdel->bandwidth);
-	dvb_log("|           code_rate_hp_stream   %d", tdel->code_rate_hp_stream);
-	dvb_log("|           hierarchy_information %d", tdel->hierarchy_information);
-	dvb_log("|           constellation         %d", tdel->constellation);
-	dvb_log("|           other_frequency_flag  %d", tdel->other_frequency_flag);
-	dvb_log("|           transmission_mode     %d", tdel->transmission_mode);
-	dvb_log("|           guard_interval        %d", tdel->guard_interval);
-	dvb_log("|           code_rate_lp_stream   %d", tdel->code_rate_lp_stream);
+	dvb_loginfo("|           length                %d", tdel->length);
+	dvb_loginfo("|           centre frequency      %d", tdel->centre_frequency * 10);
+	dvb_loginfo("|           mpe_fec_indicator     %d", tdel->mpe_fec_indicator);
+	dvb_loginfo("|           time_slice_indicator  %d", tdel->time_slice_indicator);
+	dvb_loginfo("|           priority              %d", tdel->priority);
+	dvb_loginfo("|           bandwidth             %d", tdel->bandwidth);
+	dvb_loginfo("|           code_rate_hp_stream   %d", tdel->code_rate_hp_stream);
+	dvb_loginfo("|           hierarchy_information %d", tdel->hierarchy_information);
+	dvb_loginfo("|           constellation         %d", tdel->constellation);
+	dvb_loginfo("|           other_frequency_flag  %d", tdel->other_frequency_flag);
+	dvb_loginfo("|           transmission_mode     %d", tdel->transmission_mode);
+	dvb_loginfo("|           guard_interval        %d", tdel->guard_interval);
+	dvb_loginfo("|           code_rate_lp_stream   %d", tdel->code_rate_lp_stream);
 }
 
 const unsigned dvbt_bw[] = {
diff --git a/lib/libdvbv5/descriptors/desc_ts_info.c b/lib/libdvbv5/descriptors/desc_ts_info.c
index 7a6e520..75501af 100644
--- a/lib/libdvbv5/descriptors/desc_ts_info.c
+++ b/lib/libdvbv5/descriptors/desc_ts_info.c
@@ -49,8 +49,10 @@ int dvb_desc_ts_info_init(struct dvb_v5_fe_parms *parms,
 	t = &d->transmission_type;
 
 	d->service_id = malloc(sizeof(*d->service_id) * t->num_of_service);
-	if (!d->service_id)
-		dvb_perror("Out of memory!");
+	if (!d->service_id) {
+		dvb_logerr("%s: out of memory", __func__);
+		return -1;
+	}
 
 	memcpy(d->service_id, p, sizeof(*d->service_id) * t->num_of_service);
 
@@ -69,13 +71,13 @@ void dvb_desc_ts_info_print(struct dvb_v5_fe_parms *parms, const struct dvb_desc
 
 	t = &d->transmission_type;
 
-	dvb_log("|           remote key ID     %d", d->remote_control_key_id);
-	dvb_log("|           name              %s", d->ts_name);
-	dvb_log("|           emphasis name     %s", d->ts_name_emph);
-	dvb_log("|           transmission type %s", d->ts_name_emph);
+	dvb_loginfo("|           remote key ID     %d", d->remote_control_key_id);
+	dvb_loginfo("|           name              %s", d->ts_name);
+	dvb_loginfo("|           emphasis name     %s", d->ts_name_emph);
+	dvb_loginfo("|           transmission type %s", d->ts_name_emph);
 
 	for (i = 0; i < t->num_of_service; i++)
-		dvb_log("|           service ID[%d]     %d", i, d->service_id[i]);
+		dvb_loginfo("|           service ID[%d]     %d", i, d->service_id[i]);
 }
 
 void dvb_desc_ts_info_free(struct dvb_desc *desc)
diff --git a/lib/libdvbv5/descriptors/eit.c b/lib/libdvbv5/descriptors/eit.c
index 5197491..d66d492 100644
--- a/lib/libdvbv5/descriptors/eit.c
+++ b/lib/libdvbv5/descriptors/eit.c
@@ -131,29 +131,29 @@ void dvb_table_eit_free(struct dvb_table_eit *eit)
 
 void dvb_table_eit_print(struct dvb_v5_fe_parms *parms, struct dvb_table_eit *eit)
 {
-	dvb_log("EIT");
+	dvb_loginfo("EIT");
 	dvb_table_header_print(parms, &eit->header);
-	dvb_log("|- transport_id       %d", eit->transport_id);
-	dvb_log("|- network_id         %d", eit->network_id);
-	dvb_log("|- last segment       %d", eit->last_segment);
-	dvb_log("|- last table         %d", eit->last_table_id);
-	dvb_log("|\\  event_id");
+	dvb_loginfo("|- transport_id       %d", eit->transport_id);
+	dvb_loginfo("|- network_id         %d", eit->network_id);
+	dvb_loginfo("|- last segment       %d", eit->last_segment);
+	dvb_loginfo("|- last table         %d", eit->last_table_id);
+	dvb_loginfo("|\\  event_id");
 	const struct dvb_table_eit_event *event = eit->event;
 	uint16_t events = 0;
 	while (event) {
 		char start[255];
 		strftime(start, sizeof(start), "%F %T", &event->start);
-		dvb_log("|- %7d", event->event_id);
-		dvb_log("|   Service               %d", event->service_id);
-		dvb_log("|   Start                 %s UTC", start);
-		dvb_log("|   Duration              %dh %dm %ds", event->duration / 3600, (event->duration % 3600) / 60, event->duration % 60);
-		dvb_log("|   free CA mode          %d", event->free_CA_mode);
-		dvb_log("|   running status        %d: %s", event->running_status, dvb_eit_running_status_name[event->running_status] );
+		dvb_loginfo("|- %7d", event->event_id);
+		dvb_loginfo("|   Service               %d", event->service_id);
+		dvb_loginfo("|   Start                 %s UTC", start);
+		dvb_loginfo("|   Duration              %dh %dm %ds", event->duration / 3600, (event->duration % 3600) / 60, event->duration % 60);
+		dvb_loginfo("|   free CA mode          %d", event->free_CA_mode);
+		dvb_loginfo("|   running status        %d: %s", event->running_status, dvb_eit_running_status_name[event->running_status] );
 		dvb_print_descriptors(parms, event->descriptor);
 		event = event->next;
 		events++;
 	}
-	dvb_log("|_  %d events", events);
+	dvb_loginfo("|_  %d events", events);
 }
 
 void dvb_time(const uint8_t data[5], struct tm *tm)
diff --git a/lib/libdvbv5/descriptors/header.c b/lib/libdvbv5/descriptors/header.c
index 3df73af..883283f 100644
--- a/lib/libdvbv5/descriptors/header.c
+++ b/lib/libdvbv5/descriptors/header.c
@@ -32,16 +32,16 @@ int dvb_table_header_init(struct dvb_table_header *t)
 
 void dvb_table_header_print(struct dvb_v5_fe_parms *parms, const struct dvb_table_header *t)
 {
-	dvb_log("| table_id            %d", t->table_id);
-	dvb_log("| section_length      %d", t->section_length);
-	dvb_log("| one                 %d", t->one);
-	dvb_log("| zero                %d", t->zero);
-	dvb_log("| syntax              %d", t->syntax);
-	dvb_log("| transport_stream_id %d", t->id);
-	dvb_log("| current_next        %d", t->current_next);
-	dvb_log("| version             %d", t->version);
-	dvb_log("| one2                %d", t->one2);
-	dvb_log("| section_number      %d", t->section_id);
-	dvb_log("| last_section_number %d", t->last_section);
+	dvb_loginfo("| table_id         0x%02x", t->table_id);
+	dvb_loginfo("| section_length      %d", t->section_length);
+	dvb_loginfo("| one                 %d", t->one);
+	dvb_loginfo("| zero                %d", t->zero);
+	dvb_loginfo("| syntax              %d", t->syntax);
+	dvb_loginfo("| transport_stream_id %d", t->id);
+	dvb_loginfo("| current_next        %d", t->current_next);
+	dvb_loginfo("| version             %d", t->version);
+	dvb_loginfo("| one2                %d", t->one2);
+	dvb_loginfo("| section_number      %d", t->section_id);
+	dvb_loginfo("| last_section_number %d", t->last_section);
 }
 
diff --git a/lib/libdvbv5/descriptors/mgt.c b/lib/libdvbv5/descriptors/mgt.c
index b12d586..29172c3 100644
--- a/lib/libdvbv5/descriptors/mgt.c
+++ b/lib/libdvbv5/descriptors/mgt.c
@@ -95,7 +95,7 @@ ssize_t atsc_table_mgt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		*head = table;
 		head = &(*head)->next;
 
-		/* get the descriptors for each table */
+		/* parse the descriptors */
 		size = table->desc_length;
 		if (p + size > endbuf) {
 			dvb_logerr("%s: short read %zd/%zd bytes", __func__,
@@ -133,21 +133,21 @@ void atsc_table_mgt_print(struct dvb_v5_fe_parms *parms, struct atsc_table_mgt *
 	const struct atsc_table_mgt_table *table = mgt->table;
 	uint16_t tables = 0;
 
-	dvb_log("MGT");
+	dvb_loginfo("MGT");
 	ATSC_TABLE_HEADER_PRINT(parms, mgt);
-	dvb_log("| tables           %d", mgt->tables);
+	dvb_loginfo("| tables           %d", mgt->tables);
 	while (table) {
-                dvb_log("|- type %04x    %d", table->type, table->pid);
-                dvb_log("|  one          %d", table->one);
-                dvb_log("|  one2         %d", table->one2);
-                dvb_log("|  type version %d", table->type_version);
-                dvb_log("|  size         %d", table->size);
-                dvb_log("|  one3         %d", table->one3);
-                dvb_log("|  desc_length  %d", table->desc_length);
+                dvb_loginfo("|- type %04x    %d", table->type, table->pid);
+                dvb_loginfo("|  one          %d", table->one);
+                dvb_loginfo("|  one2         %d", table->one2);
+                dvb_loginfo("|  type version %d", table->type_version);
+                dvb_loginfo("|  size         %d", table->size);
+                dvb_loginfo("|  one3         %d", table->one3);
+                dvb_loginfo("|  desc_length  %d", table->desc_length);
 		dvb_print_descriptors(parms, table->descriptor);
 		table = table->next;
 		tables++;
 	}
-	dvb_log("|_  %d tables", tables);
+	dvb_loginfo("|_  %d tables", tables);
 }
 
diff --git a/lib/libdvbv5/descriptors/mpeg_es.c b/lib/libdvbv5/descriptors/mpeg_es.c
index f9cfbd7..e7d750f 100644
--- a/lib/libdvbv5/descriptors/mpeg_es.c
+++ b/lib/libdvbv5/descriptors/mpeg_es.c
@@ -35,17 +35,17 @@ int dvb_mpeg_es_seq_start_init(const uint8_t *buf, ssize_t buflen, struct dvb_mp
 
 void dvb_mpeg_es_seq_start_print(struct dvb_v5_fe_parms *parms, struct dvb_mpeg_es_seq_start *seq_start)
 {
-	dvb_log("MPEG ES SEQ START");
-        dvb_log(" - width       %d", seq_start->width);
-        dvb_log(" - height      %d", seq_start->height);
-        dvb_log(" - aspect      %d", seq_start->aspect);
-        dvb_log(" - framerate   %d", seq_start->framerate);
-        dvb_log(" - bitrate     %d", seq_start->bitrate);
-        dvb_log(" - one         %d", seq_start->one);
-        dvb_log(" - vbv         %d", seq_start->vbv);
-        dvb_log(" - constrained %d", seq_start->constrained);
-        dvb_log(" - qm_intra    %d", seq_start->qm_intra);
-        dvb_log(" - qm_nonintra %d", seq_start->qm_nonintra);
+	dvb_loginfo("MPEG ES SEQ START");
+        dvb_loginfo(" - width       %d", seq_start->width);
+        dvb_loginfo(" - height      %d", seq_start->height);
+        dvb_loginfo(" - aspect      %d", seq_start->aspect);
+        dvb_loginfo(" - framerate   %d", seq_start->framerate);
+        dvb_loginfo(" - bitrate     %d", seq_start->bitrate);
+        dvb_loginfo(" - one         %d", seq_start->one);
+        dvb_loginfo(" - vbv         %d", seq_start->vbv);
+        dvb_loginfo(" - constrained %d", seq_start->constrained);
+        dvb_loginfo(" - qm_intra    %d", seq_start->qm_intra);
+        dvb_loginfo(" - qm_nonintra %d", seq_start->qm_nonintra);
 }
 
 const char *dvb_mpeg_es_frame_names[5] = {
@@ -68,8 +68,8 @@ int dvb_mpeg_es_pic_start_init(const uint8_t *buf, ssize_t buflen, struct dvb_mp
 
 void dvb_mpeg_es_pic_start_print(struct dvb_v5_fe_parms *parms, struct dvb_mpeg_es_pic_start *pic_start)
 {
-	dvb_log("MPEG ES PIC START");
-        dvb_log(" - temporal_ref %d", pic_start->temporal_ref);
-        dvb_log(" - coding_type  %d (%s-frame)", pic_start->coding_type, dvb_mpeg_es_frame_names[pic_start->coding_type]);
-        dvb_log(" - vbv_delay    %d", pic_start->vbv_delay);
+	dvb_loginfo("MPEG ES PIC START");
+        dvb_loginfo(" - temporal_ref %d", pic_start->temporal_ref);
+        dvb_loginfo(" - coding_type  %d (%s-frame)", pic_start->coding_type, dvb_mpeg_es_frame_names[pic_start->coding_type]);
+        dvb_loginfo(" - vbv_delay    %d", pic_start->vbv_delay);
 }
diff --git a/lib/libdvbv5/descriptors/mpeg_pes.c b/lib/libdvbv5/descriptors/mpeg_pes.c
index 43a12d8..939c53c 100644
--- a/lib/libdvbv5/descriptors/mpeg_pes.c
+++ b/lib/libdvbv5/descriptors/mpeg_pes.c
@@ -109,7 +109,7 @@ void dvb_mpeg_pes_print(struct dvb_v5_fe_parms *parms, struct dvb_mpeg_pes *pes)
 		   pes->stream_id == DVB_MPEG_STREAM_DIRECTORY ||
 		   pes->stream_id == DVB_MPEG_STREAM_DSMCC ||
 		   pes->stream_id == DVB_MPEG_STREAM_H222E ) {
-		dvb_log("  mpeg pes unsupported stream type 0x%04x", pes->stream_id);
+		dvb_logwarn("  mpeg pes unsupported stream type 0x%04x", pes->stream_id);
 	} else {
 		dvb_loginfo("  mpeg pes optional");
 		dvb_loginfo("   - two                      %d", pes->optional->two);
diff --git a/lib/libdvbv5/descriptors/mpeg_ts.c b/lib/libdvbv5/descriptors/mpeg_ts.c
index e846b3e..df32484 100644
--- a/lib/libdvbv5/descriptors/mpeg_ts.c
+++ b/lib/libdvbv5/descriptors/mpeg_ts.c
@@ -55,25 +55,25 @@ void dvb_mpeg_ts_free(struct dvb_mpeg_ts *ts)
 
 void dvb_mpeg_ts_print(struct dvb_v5_fe_parms *parms, struct dvb_mpeg_ts *ts)
 {
-	dvb_log("MPEG TS");
-	dvb_log(" - sync byte        0x%02x", ts->sync_byte);
-	dvb_log(" - tei                %d", ts->tei);
-	dvb_log(" - payload_start      %d", ts->payload_start);
-	dvb_log(" - priority           %d", ts->priority);
-	dvb_log(" - pid              0x%04x", ts->pid);
-	dvb_log(" - scrambling         %d", ts->scrambling);
-	dvb_log(" - adaptation_field   %d", ts->adaptation_field);
-	dvb_log(" - continuity_counter %d", ts->continuity_counter);
+	dvb_loginfo("MPEG TS");
+	dvb_loginfo(" - sync            0x%02x", ts->sync_byte);
+	dvb_loginfo(" - tei                %d", ts->tei);
+	dvb_loginfo(" - payload_start      %d", ts->payload_start);
+	dvb_loginfo(" - priority           %d", ts->priority);
+	dvb_loginfo(" - pid           0x%04x", ts->pid);
+	dvb_loginfo(" - scrambling         %d", ts->scrambling);
+	dvb_loginfo(" - adaptation_field   %d", ts->adaptation_field);
+	dvb_loginfo(" - continuity_counter %d", ts->continuity_counter);
 	if (ts->adaptation_field & 0x2) {
-		dvb_log(" Adaption Field");
-                dvb_log("   - length         %d", ts->adaption->length);
-                dvb_log("   - discontinued   %d", ts->adaption->discontinued);
-                dvb_log("   - random_access  %d", ts->adaption->random_access);
-                dvb_log("   - priority       %d", ts->adaption->priority);
-                dvb_log("   - PCR            %d", ts->adaption->PCR);
-                dvb_log("   - OPCR           %d", ts->adaption->OPCR);
-                dvb_log("   - splicing_point %d", ts->adaption->splicing_point);
-                dvb_log("   - private_data   %d", ts->adaption->private_data);
-                dvb_log("   - extension      %d", ts->adaption->extension);
+		dvb_loginfo(" Adaption Field");
+                dvb_loginfo("   - length         %d", ts->adaption->length);
+                dvb_loginfo("   - discontinued   %d", ts->adaption->discontinued);
+                dvb_loginfo("   - random_access  %d", ts->adaption->random_access);
+                dvb_loginfo("   - priority       %d", ts->adaption->priority);
+                dvb_loginfo("   - PCR            %d", ts->adaption->PCR);
+                dvb_loginfo("   - OPCR           %d", ts->adaption->OPCR);
+                dvb_loginfo("   - splicing_point %d", ts->adaption->splicing_point);
+                dvb_loginfo("   - private_data   %d", ts->adaption->private_data);
+                dvb_loginfo("   - extension      %d", ts->adaption->extension);
 	}
 }
diff --git a/lib/libdvbv5/descriptors/nit.c b/lib/libdvbv5/descriptors/nit.c
index aadebc0..c2c55a4 100644
--- a/lib/libdvbv5/descriptors/nit.c
+++ b/lib/libdvbv5/descriptors/nit.c
@@ -135,7 +135,7 @@ void dvb_table_nit_free(struct dvb_table_nit *nit)
 {
 	struct dvb_table_nit_transport *transport = nit->transport;
 	dvb_free_descriptors((struct dvb_desc **) &nit->descriptor);
-	while(transport) {
+	while (transport) {
 		dvb_free_descriptors((struct dvb_desc **) &transport->descriptor);
 		struct dvb_table_nit_transport *tmp = transport;
 		transport = transport->next;
@@ -146,19 +146,20 @@ void dvb_table_nit_free(struct dvb_table_nit *nit)
 
 void dvb_table_nit_print(struct dvb_v5_fe_parms *parms, struct dvb_table_nit *nit)
 {
-	dvb_log("NIT");
-	dvb_table_header_print(parms, &nit->header);
-	dvb_log("| desc_length   %d", nit->desc_length);
-	dvb_print_descriptors(parms, nit->descriptor);
 	const struct dvb_table_nit_transport *transport = nit->transport;
 	uint16_t transports = 0;
-	while(transport) {
-		dvb_log("|- transport %04x network %04x", transport->transport_id, transport->network_id);
+
+	dvb_loginfo("NIT");
+	dvb_table_header_print(parms, &nit->header);
+	dvb_loginfo("| desc_length   %d", nit->desc_length);
+	dvb_print_descriptors(parms, nit->descriptor);
+	while (transport) {
+		dvb_loginfo("|- transport %04x network %04x", transport->transport_id, transport->network_id);
 		dvb_print_descriptors(parms, transport->descriptor);
 		transport = transport->next;
 		transports++;
 	}
-	dvb_log("|_  %d transports", transports);
+	dvb_loginfo("|_  %d transports", transports);
 }
 
 void nit_descriptor_handler(struct dvb_v5_fe_parms *parms,
diff --git a/lib/libdvbv5/descriptors/pat.c b/lib/libdvbv5/descriptors/pat.c
index efa6811..1a79bca 100644
--- a/lib/libdvbv5/descriptors/pat.c
+++ b/lib/libdvbv5/descriptors/pat.c
@@ -62,7 +62,7 @@ ssize_t dvb_table_pat_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 
 		prog = malloc(sizeof(struct dvb_table_pat_program));
 		if (!prog) {
-			dvb_perror("Out of memory");
+			dvb_logerr("%s: out of memory", __func__);
 			return -3;
 		}
 
diff --git a/lib/libdvbv5/descriptors/sdt.c b/lib/libdvbv5/descriptors/sdt.c
index 8cee315..c0d32e4 100644
--- a/lib/libdvbv5/descriptors/sdt.c
+++ b/lib/libdvbv5/descriptors/sdt.c
@@ -127,22 +127,24 @@ void dvb_table_sdt_free(struct dvb_table_sdt *sdt)
 
 void dvb_table_sdt_print(struct dvb_v5_fe_parms *parms, struct dvb_table_sdt *sdt)
 {
-	dvb_log("SDT");
+	dvb_loginfo("SDT");
 	dvb_table_header_print(parms, &sdt->header);
-	dvb_log("|- network_id         %d", sdt->network_id);
-	dvb_log("|\\");
+	dvb_loginfo("| network_id          %d", sdt->network_id);
+	dvb_loginfo("| reserved            %d", sdt->reserved);
+	dvb_loginfo("|\\");
 	const struct dvb_table_sdt_service *service = sdt->service;
 	uint16_t services = 0;
-	while(service) {
-		dvb_log("|- service 0x%04x", service->service_id);
-		dvb_log("|   EIT schedule          %d", service->EIT_schedule);
-		dvb_log("|   EIT present following %d", service->EIT_present_following);
-		dvb_log("|   free CA mode          %d", service->free_CA_mode);
-		dvb_log("|   running status        %d", service->running_status);
+	while (service) {
+		dvb_loginfo("|- service 0x%04x", service->service_id);
+		dvb_loginfo("|   EIT schedule          %d", service->EIT_schedule);
+		dvb_loginfo("|   EIT present following %d", service->EIT_present_following);
+		dvb_loginfo("|   free CA mode          %d", service->free_CA_mode);
+		dvb_loginfo("|   running status        %d", service->running_status);
+		dvb_loginfo("|   descriptor length     %d", service->desc_length);
 		dvb_print_descriptors(parms, service->descriptor);
 		service = service->next;
 		services++;
 	}
-	dvb_log("|_  %d services", services);
+	dvb_loginfo("|_  %d services", services);
 }
 
diff --git a/lib/libdvbv5/descriptors/vct.c b/lib/libdvbv5/descriptors/vct.c
index 39d44f4..6b64144 100644
--- a/lib/libdvbv5/descriptors/vct.c
+++ b/lib/libdvbv5/descriptors/vct.c
@@ -145,7 +145,7 @@ ssize_t atsc_table_vct_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 void atsc_table_vct_free(struct atsc_table_vct *vct)
 {
 	struct atsc_table_vct_channel *channel = vct->channel;
-	while(channel) {
+	while (channel) {
 		dvb_free_descriptors((struct dvb_desc **) &channel->descriptor);
 		struct atsc_table_vct_channel *tmp = channel;
 		channel = channel->next;
@@ -158,42 +158,43 @@ void atsc_table_vct_free(struct atsc_table_vct *vct)
 
 void atsc_table_vct_print(struct dvb_v5_fe_parms *parms, struct atsc_table_vct *vct)
 {
+	const struct atsc_table_vct_channel *channel = vct->channel;
+	uint16_t channels = 0;
+
 	if (vct->header.table_id == ATSC_TABLE_CVCT)
-		dvb_log("CVCT");
+		dvb_loginfo("CVCT");
 	else
-		dvb_log("TVCT");
+		dvb_loginfo("TVCT");
 
 	ATSC_TABLE_HEADER_PRINT(parms, vct);
 
-	dvb_log("|- #channels        %d", vct->num_channels_in_section);
-	dvb_log("|\\  channel_id");
-	const struct atsc_table_vct_channel *channel = vct->channel;
-	uint16_t channels = 0;
-	while(channel) {
-		dvb_log("|- Channel                %d.%d: %s",
+	dvb_loginfo("|- #channels        %d", vct->num_channels_in_section);
+	dvb_loginfo("|\\  channel_id");
+	while (channel) {
+		dvb_loginfo("|- Channel                %d.%d: %s",
 			channel->major_channel_number,
 			channel->minor_channel_number,
 			channel->short_name);
-		dvb_log("|   modulation mode       %d", channel->modulation_mode);
-		dvb_log("|   carrier frequency     %d", channel->carrier_frequency);
-		dvb_log("|   TS ID                 %d", channel->channel_tsid);
-		dvb_log("|   program number        %d", channel->program_number);
+		dvb_loginfo("|   modulation mode       %d", channel->modulation_mode);
+		dvb_loginfo("|   carrier frequency     %d", channel->carrier_frequency);
+		dvb_loginfo("|   TS ID                 %d", channel->channel_tsid);
+		dvb_loginfo("|   program number        %d", channel->program_number);
 
-		dvb_log("|   ETM location          %d", channel->ETM_location);
-		dvb_log("|   access controlled     %d", channel->access_controlled);
-		dvb_log("|   hidden                %d", channel->hidden);
+		dvb_loginfo("|   ETM location          %d", channel->ETM_location);
+		dvb_loginfo("|   access controlled     %d", channel->access_controlled);
+		dvb_loginfo("|   hidden                %d", channel->hidden);
 
 		if (vct->header.table_id == ATSC_TABLE_CVCT) {
-			dvb_log("|   path select           %d", channel->path_select);
-			dvb_log("|   out of band           %d", channel->out_of_band);
+			dvb_loginfo("|   path select           %d", channel->path_select);
+			dvb_loginfo("|   out of band           %d", channel->out_of_band);
 		}
-		dvb_log("|   hide guide            %d", channel->hide_guide);
-		dvb_log("|   service type          %d", channel->service_type);
-		dvb_log("|   source id            %d", channel->source_id);
+		dvb_loginfo("|   hide guide            %d", channel->hide_guide);
+		dvb_loginfo("|   service type          %d", channel->service_type);
+		dvb_loginfo("|   source id            %d", channel->source_id);
 
 		dvb_print_descriptors(parms, channel->descriptor);
 		channel = channel->next;
 		channels++;
 	}
-	dvb_log("|_  %d channels", channels);
+	dvb_loginfo("|_  %d channels", channels);
 }
diff --git a/lib/libdvbv5/dvb-scan.c b/lib/libdvbv5/dvb-scan.c
index d8b3953..4fbd6d2 100644
--- a/lib/libdvbv5/dvb-scan.c
+++ b/lib/libdvbv5/dvb-scan.c
@@ -147,7 +147,7 @@ static int dvb_parse_section_alloc(struct dvb_v5_fe_parms *parms,
 	*sect->table = NULL;
 	priv = calloc(sizeof(struct dvb_table_filter_priv), 1);
 	if (!priv) {
-		dvb_perror("Out of memory");
+		dvb_logerr("%s: out of memory", __func__);
 		return -1;
 	}
 	priv->last_section = -1;
@@ -280,7 +280,7 @@ int dvb_read_sections(struct dvb_v5_fe_parms *parms, int dmx_fd,
 
 	buf = calloc(DVB_MAX_PAYLOAD_PACKET_SIZE, 1);
 	if (!buf) {
-		dvb_perror("Out of memory");
+		dvb_logerr("%s: out of memory", __func__);
 		dvb_dmx_stop(dmx_fd);
 		dvb_table_filter_free(sect);
 		return -1;
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH 7/7] libdvbv5: rename descriptor functions
  2014-04-09 22:26 [PATCH 1/7] libdvbv5: reunite atsc_table_header and dvb_table_header André Roth
                   ` (4 preceding siblings ...)
  2014-04-09 22:26 ` [PATCH 6/7] libdvbv5: cleanup printing of tables and descriptors André Roth
@ 2014-04-09 22:27 ` André Roth
  5 siblings, 0 replies; 7+ messages in thread
From: André Roth @ 2014-04-09 22:27 UTC (permalink / raw)
  To: linux-media; +Cc: André Roth

prefix the descriptor functions with dvb_desc
for a nice API and code completion support

Signed-off-by: André Roth <neolynx@gmail.com>
---
 lib/include/libdvbv5/descriptors.h  |    6 +++---
 lib/libdvbv5/descriptors.c          |    6 +++---
 lib/libdvbv5/descriptors/atsc_eit.c |    6 +++---
 lib/libdvbv5/descriptors/cat.c      |    6 +++---
 lib/libdvbv5/descriptors/eit.c      |    6 +++---
 lib/libdvbv5/descriptors/mgt.c      |    8 ++++----
 lib/libdvbv5/descriptors/nit.c      |   12 ++++++------
 lib/libdvbv5/descriptors/pmt.c      |   12 ++++++------
 lib/libdvbv5/descriptors/sdt.c      |    6 +++---
 lib/libdvbv5/descriptors/vct.c      |   10 +++++-----
 10 files changed, 39 insertions(+), 39 deletions(-)

diff --git a/lib/include/libdvbv5/descriptors.h b/lib/include/libdvbv5/descriptors.h
index d08ab3e..8b38977 100644
--- a/lib/include/libdvbv5/descriptors.h
+++ b/lib/include/libdvbv5/descriptors.h
@@ -82,9 +82,9 @@ uint32_t bcd(uint32_t bcd);
 
 void hexdump(struct dvb_v5_fe_parms *parms, const char *prefix, const unsigned char *buf, int len);
 
-int dvb_parse_descriptors(struct dvb_v5_fe_parms *parms, const uint8_t *buf, uint16_t section_length, struct dvb_desc **head_desc);
-void dvb_free_descriptors(struct dvb_desc **list);
-void dvb_print_descriptors(struct dvb_v5_fe_parms *parms, struct dvb_desc *desc);
+int  dvb_desc_parse(struct dvb_v5_fe_parms *parms, const uint8_t *buf, uint16_t section_length, struct dvb_desc **head_desc);
+void dvb_desc_free (struct dvb_desc **list);
+void dvb_desc_print(struct dvb_v5_fe_parms *parms, struct dvb_desc *desc);
 
 #ifdef __cplusplus
 }
diff --git a/lib/libdvbv5/descriptors.c b/lib/libdvbv5/descriptors.c
index 539f824..c2b0293 100644
--- a/lib/libdvbv5/descriptors.c
+++ b/lib/libdvbv5/descriptors.c
@@ -98,7 +98,7 @@ const struct dvb_table_init dvb_table_initializers[] = {
 char *default_charset = "iso-8859-1";
 char *output_charset = "utf-8";
 
-int dvb_parse_descriptors(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
+int dvb_desc_parse(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 			   uint16_t buflen, struct dvb_desc **head_desc)
 {
 	const uint8_t *ptr = buf, *endbuf = buf + buflen;
@@ -172,7 +172,7 @@ int dvb_parse_descriptors(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 	return 0;
 }
 
-void dvb_print_descriptors(struct dvb_v5_fe_parms *parms, struct dvb_desc *desc)
+void dvb_desc_print(struct dvb_v5_fe_parms *parms, struct dvb_desc *desc)
 {
 	while (desc) {
 		dvb_desc_print_func print = dvb_descriptors[desc->type].print;
@@ -184,7 +184,7 @@ void dvb_print_descriptors(struct dvb_v5_fe_parms *parms, struct dvb_desc *desc)
 	}
 }
 
-void dvb_free_descriptors(struct dvb_desc **list)
+void dvb_desc_free(struct dvb_desc **list)
 {
 	struct dvb_desc *desc = *list;
 	while (desc) {
diff --git a/lib/libdvbv5/descriptors/atsc_eit.c b/lib/libdvbv5/descriptors/atsc_eit.c
index 985b055..38f3810 100644
--- a/lib/libdvbv5/descriptors/atsc_eit.c
+++ b/lib/libdvbv5/descriptors/atsc_eit.c
@@ -113,7 +113,7 @@ ssize_t atsc_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 				   endbuf - p, size);
 			return -5;
 		}
-		dvb_parse_descriptors(parms, p, size, &event->descriptor);
+		dvb_desc_parse(parms, p, size, &event->descriptor);
 
 		p += size;
 	}
@@ -129,7 +129,7 @@ void atsc_table_eit_free(struct atsc_table_eit *eit)
 	while (event) {
 		struct atsc_table_eit_event *tmp = event;
 
-		dvb_free_descriptors((struct dvb_desc **) &event->descriptor);
+		dvb_desc_free((struct dvb_desc **) &event->descriptor);
 		event = event->next;
 		free(tmp);
 	}
@@ -154,7 +154,7 @@ void atsc_table_eit_print(struct dvb_v5_fe_parms *parms, struct atsc_table_eit *
 		dvb_loginfo("|   Duration              %dh %dm %ds", event->duration / 3600, (event->duration % 3600) / 60, event->duration % 60);
 		dvb_loginfo("|   ETM                   %d", event->etm);
 		dvb_loginfo("|   title length          %d", event->title_length);
-		dvb_print_descriptors(parms, event->descriptor);
+		dvb_desc_print(parms, event->descriptor);
 		event = event->next;
 		events++;
 	}
diff --git a/lib/libdvbv5/descriptors/cat.c b/lib/libdvbv5/descriptors/cat.c
index a8fb00b..5acc88e 100644
--- a/lib/libdvbv5/descriptors/cat.c
+++ b/lib/libdvbv5/descriptors/cat.c
@@ -65,7 +65,7 @@ ssize_t dvb_table_cat_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 	/* parse the descriptors */
 	if (endbuf > p) {
 		uint16_t desc_length = endbuf - p;
-		if (dvb_parse_descriptors(parms, p, desc_length,
+		if (dvb_desc_parse(parms, p, desc_length,
 				      head_desc) != 0) {
 			return -4;
 		}
@@ -82,7 +82,7 @@ ssize_t dvb_table_cat_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 
 void dvb_table_cat_free(struct dvb_table_cat *cat)
 {
-	dvb_free_descriptors((struct dvb_desc **) &cat->descriptor);
+	dvb_desc_free((struct dvb_desc **) &cat->descriptor);
 	free(cat);
 }
 
@@ -90,6 +90,6 @@ void dvb_table_cat_print(struct dvb_v5_fe_parms *parms, struct dvb_table_cat *ca
 {
 	dvb_loginfo("CAT");
 	dvb_table_header_print(parms, &cat->header);
-	dvb_print_descriptors(parms, cat->descriptor);
+	dvb_desc_print(parms, cat->descriptor);
 }
 
diff --git a/lib/libdvbv5/descriptors/eit.c b/lib/libdvbv5/descriptors/eit.c
index d66d492..21f7897 100644
--- a/lib/libdvbv5/descriptors/eit.c
+++ b/lib/libdvbv5/descriptors/eit.c
@@ -103,7 +103,7 @@ ssize_t dvb_table_eit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 					   endbuf - p, desc_length);
 				desc_length = endbuf - p;
 			}
-			if (dvb_parse_descriptors(parms, p, desc_length,
+			if (dvb_desc_parse(parms, p, desc_length,
 					      &event->descriptor) != 0) {
 				return -4;
 			}
@@ -121,7 +121,7 @@ void dvb_table_eit_free(struct dvb_table_eit *eit)
 {
 	struct dvb_table_eit_event *event = eit->event;
 	while (event) {
-		dvb_free_descriptors((struct dvb_desc **) &event->descriptor);
+		dvb_desc_free((struct dvb_desc **) &event->descriptor);
 		struct dvb_table_eit_event *tmp = event;
 		event = event->next;
 		free(tmp);
@@ -149,7 +149,7 @@ void dvb_table_eit_print(struct dvb_v5_fe_parms *parms, struct dvb_table_eit *ei
 		dvb_loginfo("|   Duration              %dh %dm %ds", event->duration / 3600, (event->duration % 3600) / 60, event->duration % 60);
 		dvb_loginfo("|   free CA mode          %d", event->free_CA_mode);
 		dvb_loginfo("|   running status        %d: %s", event->running_status, dvb_eit_running_status_name[event->running_status] );
-		dvb_print_descriptors(parms, event->descriptor);
+		dvb_desc_print(parms, event->descriptor);
 		event = event->next;
 		events++;
 	}
diff --git a/lib/libdvbv5/descriptors/mgt.c b/lib/libdvbv5/descriptors/mgt.c
index 29172c3..f32bc2d 100644
--- a/lib/libdvbv5/descriptors/mgt.c
+++ b/lib/libdvbv5/descriptors/mgt.c
@@ -102,7 +102,7 @@ ssize_t atsc_table_mgt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 				   endbuf - p, size);
 			return -3;
 		}
-		dvb_parse_descriptors(parms, p, size, &table->descriptor);
+		dvb_desc_parse(parms, p, size, &table->descriptor);
 
 		p += size;
 	}
@@ -117,11 +117,11 @@ void atsc_table_mgt_free(struct atsc_table_mgt *mgt)
 {
 	struct atsc_table_mgt_table *table = mgt->table;
 
-	dvb_free_descriptors((struct dvb_desc **) &mgt->descriptor);
+	dvb_desc_free((struct dvb_desc **) &mgt->descriptor);
 	while (table) {
 		struct atsc_table_mgt_table *tmp = table;
 
-		dvb_free_descriptors((struct dvb_desc **) &table->descriptor);
+		dvb_desc_free((struct dvb_desc **) &table->descriptor);
 		table = table->next;
 		free(tmp);
 	}
@@ -144,7 +144,7 @@ void atsc_table_mgt_print(struct dvb_v5_fe_parms *parms, struct atsc_table_mgt *
                 dvb_loginfo("|  size         %d", table->size);
                 dvb_loginfo("|  one3         %d", table->one3);
                 dvb_loginfo("|  desc_length  %d", table->desc_length);
-		dvb_print_descriptors(parms, table->descriptor);
+		dvb_desc_print(parms, table->descriptor);
 		table = table->next;
 		tables++;
 	}
diff --git a/lib/libdvbv5/descriptors/nit.c b/lib/libdvbv5/descriptors/nit.c
index c2c55a4..644a861 100644
--- a/lib/libdvbv5/descriptors/nit.c
+++ b/lib/libdvbv5/descriptors/nit.c
@@ -77,7 +77,7 @@ ssize_t dvb_table_nit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 			   endbuf - p, size);
 		return -3;
 	}
-	dvb_parse_descriptors(parms, p, size, head_desc);
+	dvb_desc_parse(parms, p, size, head_desc);
 	p += size;
 
 	size = sizeof(union dvb_table_nit_transport_header);
@@ -117,7 +117,7 @@ ssize_t dvb_table_nit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 					   endbuf - p, desc_length);
 				desc_length = endbuf - p;
 			}
-			if (dvb_parse_descriptors(parms, p, desc_length,
+			if (dvb_desc_parse(parms, p, desc_length,
 					      &transport->descriptor) != 0) {
 				return -6;
 			}
@@ -134,9 +134,9 @@ ssize_t dvb_table_nit_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 void dvb_table_nit_free(struct dvb_table_nit *nit)
 {
 	struct dvb_table_nit_transport *transport = nit->transport;
-	dvb_free_descriptors((struct dvb_desc **) &nit->descriptor);
+	dvb_desc_free((struct dvb_desc **) &nit->descriptor);
 	while (transport) {
-		dvb_free_descriptors((struct dvb_desc **) &transport->descriptor);
+		dvb_desc_free((struct dvb_desc **) &transport->descriptor);
 		struct dvb_table_nit_transport *tmp = transport;
 		transport = transport->next;
 		free(tmp);
@@ -152,10 +152,10 @@ void dvb_table_nit_print(struct dvb_v5_fe_parms *parms, struct dvb_table_nit *ni
 	dvb_loginfo("NIT");
 	dvb_table_header_print(parms, &nit->header);
 	dvb_loginfo("| desc_length   %d", nit->desc_length);
-	dvb_print_descriptors(parms, nit->descriptor);
+	dvb_desc_print(parms, nit->descriptor);
 	while (transport) {
 		dvb_loginfo("|- transport %04x network %04x", transport->transport_id, transport->network_id);
-		dvb_print_descriptors(parms, transport->descriptor);
+		dvb_desc_print(parms, transport->descriptor);
 		transport = transport->next;
 		transports++;
 	}
diff --git a/lib/libdvbv5/descriptors/pmt.c b/lib/libdvbv5/descriptors/pmt.c
index e1f07f8..426c3dc 100644
--- a/lib/libdvbv5/descriptors/pmt.c
+++ b/lib/libdvbv5/descriptors/pmt.c
@@ -87,7 +87,7 @@ ssize_t dvb_table_pmt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 				   desc_length, endbuf - p);
 			desc_length = endbuf - p;
 		}
-		if (dvb_parse_descriptors(parms, p, desc_length,
+		if (dvb_desc_parse(parms, p, desc_length,
 				      head_desc) != 0) {
 			return -3;
 		}
@@ -123,7 +123,7 @@ ssize_t dvb_table_pmt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 					   endbuf - p, desc_length);
 				desc_length = endbuf - p;
 			}
-			if (dvb_parse_descriptors(parms, p, desc_length,
+			if (dvb_desc_parse(parms, p, desc_length,
 					      &stream->descriptor) != 0) {
 				return -4;
 			}
@@ -142,12 +142,12 @@ void dvb_table_pmt_free(struct dvb_table_pmt *pmt)
 {
 	struct dvb_table_pmt_stream *stream = pmt->stream;
 	while(stream) {
-		dvb_free_descriptors((struct dvb_desc **) &stream->descriptor);
+		dvb_desc_free((struct dvb_desc **) &stream->descriptor);
 		struct dvb_table_pmt_stream *tmp = stream;
 		stream = stream->next;
 		free(tmp);
 	}
-	dvb_free_descriptors((struct dvb_desc **) &pmt->descriptor);
+	dvb_desc_free((struct dvb_desc **) &pmt->descriptor);
 	free(pmt);
 }
 
@@ -160,7 +160,7 @@ void dvb_table_pmt_print(struct dvb_v5_fe_parms *parms, const struct dvb_table_p
 	dvb_loginfo("|  descriptor length   %d", pmt->desc_length);
 	dvb_loginfo("|  zero3               %d", pmt->zero3);
 	dvb_loginfo("|  reserved3          %d", pmt->reserved3);
-	dvb_print_descriptors(parms, pmt->descriptor);
+	dvb_desc_print(parms, pmt->descriptor);
 	dvb_loginfo("|\\");
 	const struct dvb_table_pmt_stream *stream = pmt->stream;
 	uint16_t streams = 0;
@@ -168,7 +168,7 @@ void dvb_table_pmt_print(struct dvb_v5_fe_parms *parms, const struct dvb_table_p
 		dvb_loginfo("|- stream 0x%04x: %s (%x)", stream->elementary_pid,
 				pmt_stream_name[stream->type], stream->type);
 		dvb_loginfo("|    descriptor length   %d", stream->desc_length);
-		dvb_print_descriptors(parms, stream->descriptor);
+		dvb_desc_print(parms, stream->descriptor);
 		stream = stream->next;
 		streams++;
 	}
diff --git a/lib/libdvbv5/descriptors/sdt.c b/lib/libdvbv5/descriptors/sdt.c
index c0d32e4..561ec66 100644
--- a/lib/libdvbv5/descriptors/sdt.c
+++ b/lib/libdvbv5/descriptors/sdt.c
@@ -97,7 +97,7 @@ ssize_t dvb_table_sdt_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 					   endbuf - p, desc_length);
 				desc_length = endbuf - p;
 			}
-			if (dvb_parse_descriptors(parms, p, desc_length,
+			if (dvb_desc_parse(parms, p, desc_length,
 					      &service->descriptor) != 0) {
 				return -4;
 			}
@@ -117,7 +117,7 @@ void dvb_table_sdt_free(struct dvb_table_sdt *sdt)
 {
 	struct dvb_table_sdt_service *service = sdt->service;
 	while(service) {
-		dvb_free_descriptors((struct dvb_desc **) &service->descriptor);
+		dvb_desc_free((struct dvb_desc **) &service->descriptor);
 		struct dvb_table_sdt_service *tmp = service;
 		service = service->next;
 		free(tmp);
@@ -141,7 +141,7 @@ void dvb_table_sdt_print(struct dvb_v5_fe_parms *parms, struct dvb_table_sdt *sd
 		dvb_loginfo("|   free CA mode          %d", service->free_CA_mode);
 		dvb_loginfo("|   running status        %d", service->running_status);
 		dvb_loginfo("|   descriptor length     %d", service->desc_length);
-		dvb_print_descriptors(parms, service->descriptor);
+		dvb_desc_print(parms, service->descriptor);
 		service = service->next;
 		services++;
 	}
diff --git a/lib/libdvbv5/descriptors/vct.c b/lib/libdvbv5/descriptors/vct.c
index 6b64144..387c6e8 100644
--- a/lib/libdvbv5/descriptors/vct.c
+++ b/lib/libdvbv5/descriptors/vct.c
@@ -115,7 +115,7 @@ ssize_t atsc_table_vct_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 		}
 
 		/* get the descriptors for each program */
-		dvb_parse_descriptors(parms, p, channel->descriptors_length,
+		dvb_desc_parse(parms, p, channel->descriptors_length,
 				      &channel->descriptor);
 
 		p += channel->descriptors_length;
@@ -132,7 +132,7 @@ ssize_t atsc_table_vct_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf,
 				   d->descriptor_length, endbuf - p);
 			return -3;
 		}
-		dvb_parse_descriptors(parms, p, d->descriptor_length,
+		dvb_desc_parse(parms, p, d->descriptor_length,
 				      &vct->descriptor);
 	}
 	if (endbuf - p)
@@ -146,12 +146,12 @@ void atsc_table_vct_free(struct atsc_table_vct *vct)
 {
 	struct atsc_table_vct_channel *channel = vct->channel;
 	while (channel) {
-		dvb_free_descriptors((struct dvb_desc **) &channel->descriptor);
+		dvb_desc_free((struct dvb_desc **) &channel->descriptor);
 		struct atsc_table_vct_channel *tmp = channel;
 		channel = channel->next;
 		free(tmp);
 	}
-	dvb_free_descriptors((struct dvb_desc **) &vct->descriptor);
+	dvb_desc_free((struct dvb_desc **) &vct->descriptor);
 
 	free(vct);
 }
@@ -192,7 +192,7 @@ void atsc_table_vct_print(struct dvb_v5_fe_parms *parms, struct atsc_table_vct *
 		dvb_loginfo("|   service type          %d", channel->service_type);
 		dvb_loginfo("|   source id            %d", channel->source_id);
 
-		dvb_print_descriptors(parms, channel->descriptor);
+		dvb_desc_print(parms, channel->descriptor);
 		channel = channel->next;
 		channels++;
 	}
-- 
1.7.10.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2014-04-09 22:27 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-04-09 22:26 [PATCH 1/7] libdvbv5: reunite atsc_table_header and dvb_table_header André Roth
2014-04-09 22:26 ` [PATCH 2/7] libdvbv5: fix asprintf compile warning in dvbv5-scan André Roth
2014-04-09 22:26 ` [PATCH 3/7] libdvbv5: make crc32 public André Roth
2014-04-09 22:26 ` [PATCH 4/7] libdvbv5: make dvb_table_filter_free public André Roth
2014-04-09 22:26 ` [PATCH 5/7] libdvbv5: cleanup table parsers André Roth
2014-04-09 22:26 ` [PATCH 6/7] libdvbv5: cleanup printing of tables and descriptors André Roth
2014-04-09 22:27 ` [PATCH 7/7] libdvbv5: rename descriptor functions André Roth

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).