* [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 +-
| 39 ++++++--------------------
| 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 +-
| 47 --------------------------------
| 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));
--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
--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);
-}
-
--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>
---
| 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 +++++------
| 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(-)
--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)
--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).