Signed-off-by: André Roth <neol...@gmail.com>
---
 lib/include/descriptors/mpeg_ts.h  |  4 ++--
 lib/libdvbv5/descriptors/mpeg_ts.c | 11 ++++++++---
 2 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/lib/include/descriptors/mpeg_ts.h 
b/lib/include/descriptors/mpeg_ts.h
index 54fee69..de4fc3f 100644
--- a/lib/include/descriptors/mpeg_ts.h
+++ b/lib/include/descriptors/mpeg_ts.h
@@ -38,7 +38,7 @@ struct dvb_mpeg_ts_adaption {
                uint8_t random_access:1;
                uint8_t discontinued:1;
        } __attribute__((packed));
-
+       uint8_t data[];
 } __attribute__((packed));
 
 struct dvb_mpeg_ts {
@@ -67,7 +67,7 @@ struct dvb_v5_fe_parms;
 extern "C" {
 #endif
 
-void dvb_mpeg_ts_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, 
ssize_t buflen, uint8_t *table, ssize_t *table_length);
+ssize_t dvb_mpeg_ts_init (struct dvb_v5_fe_parms *parms, const uint8_t *buf, 
ssize_t buflen, uint8_t *table, ssize_t *table_length);
 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);
 
diff --git a/lib/libdvbv5/descriptors/mpeg_ts.c 
b/lib/libdvbv5/descriptors/mpeg_ts.c
index d7ec2c4..b06cdf7 100644
--- a/lib/libdvbv5/descriptors/mpeg_ts.c
+++ b/lib/libdvbv5/descriptors/mpeg_ts.c
@@ -22,27 +22,32 @@
 #include "descriptors.h"
 #include "dvb-fe.h"
 
-void dvb_mpeg_ts_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, 
ssize_t buflen, uint8_t *table, ssize_t *table_length)
+ssize_t dvb_mpeg_ts_init(struct dvb_v5_fe_parms *parms, const uint8_t *buf, 
ssize_t buflen, uint8_t *table, ssize_t *table_length)
 {
        if (buf[0] != DVB_MPEG_TS) {
                dvb_logerr("mpeg ts invalid marker %#02x, sould be %#02x", 
buf[0], DVB_MPEG_TS);
                *table_length = 0;
-               return;
+               return 0;
        }
+       ssize_t bytes_read = 0;
        struct dvb_mpeg_ts *ts = (struct dvb_mpeg_ts *) table;
        const uint8_t *p = buf;
        memcpy(table, p, sizeof(struct dvb_mpeg_ts));
        p += sizeof(struct dvb_mpeg_ts);
+       bytes_read += sizeof(struct dvb_mpeg_ts);
        *table_length = sizeof(struct dvb_mpeg_ts);
 
        bswap16(ts->bitfield);
 
        if (ts->adaptation_field & 0x2) {
                memcpy(table + *table_length, p, sizeof(struct 
dvb_mpeg_ts_adaption));
-               p += sizeof(struct dvb_mpeg_ts);
+               p += sizeof(struct dvb_mpeg_ts_adaption);
+               bytes_read += sizeof(struct dvb_mpeg_ts_adaption);
                *table_length += ts->adaption->length + 1;
+               /* FIXME: copy adaption->lenght bytes */
        }
        /*hexdump(parms, "TS: ", buf, buflen);*/
+       return bytes_read;
 }
 
 void dvb_mpeg_ts_free(struct dvb_mpeg_ts *ts)
-- 
1.8.3.2

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to