Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
dvb psi reorganize - create parsing library
  • Loading branch information
perexg committed Mar 23, 2015
1 parent 30f5c44 commit 6547bbe
Show file tree
Hide file tree
Showing 6 changed files with 395 additions and 364 deletions.
7 changes: 4 additions & 3 deletions Makefile
Expand Up @@ -225,13 +225,15 @@ SRCS += src/muxer.c \
# Optional code
#

# MPEGTS core
# MPEGTS core, order by usage (psi lib, tsdemux)
SRCS-$(CONFIG_MPEGTS) += \
src/descrambler/descrambler.c \
src/descrambler/caclient.c \
src/input/mpegts.c \
src/input/mpegts/mpegts_pid.c \
src/input/mpegts/mpegts_input.c \
src/input/mpegts/tsdemux.c \
src/input/mpegts/dvb_psi_lib.c \
src/input/mpegts/mpegts_network.c \
src/input/mpegts/mpegts_mux.c \
src/input/mpegts/mpegts_service.c \
Expand All @@ -240,9 +242,8 @@ SRCS-$(CONFIG_MPEGTS) += \
src/input/mpegts/dvb_charset.c \
src/input/mpegts/dvb_psi.c \
src/input/mpegts/fastscan.c \
src/input/mpegts/tsdemux.c \
src/input/mpegts/mpegts_mux_sched.c \
src/input/mpegts/mpegts_network_scan.c \
src/input/mpegts/mpegts_network_scan.c

# MPEGTS DVB
SRCS-${CONFIG_MPEGTS_DVB} += \
Expand Down
45 changes: 27 additions & 18 deletions src/input/mpegts.h
Expand Up @@ -32,7 +32,6 @@

#define MPEGTS_ONID_NONE 0xFFFF
#define MPEGTS_TSID_NONE 0xFFFF
#define MPEGTS_PSI_SECTION_SIZE 5000
#define MPEGTS_FULLMUX_PID 0x2000
#define MPEGTS_TABLES_PID 0x2001
#define MPEGTS_PID_NONE 0xFFFF
Expand Down Expand Up @@ -119,23 +118,13 @@ struct mpegts_packet
typedef int (*mpegts_table_callback_t)
( mpegts_table_t*, const uint8_t *buf, int len, int tableid );

typedef void (*mpegts_psi_section_callback_t)
( const uint8_t *tsb, size_t len, void *opaque );

struct mpegts_table_mux_cb
{
int tag;
int (*cb) ( mpegts_table_t*, mpegts_mux_t *mm, uint16_t nbid,
const uint8_t dtag, const uint8_t *dptr, int dlen );
};

struct mpegts_psi_section
{
int ps_offset;
int ps_lock;
uint8_t ps_data[MPEGTS_PSI_SECTION_SIZE];
};

typedef struct mpegts_table_state
{
int tableid;
Expand Down Expand Up @@ -267,13 +256,6 @@ struct mpegts_table_feed {
uint8_t mtf_tsb[0];
};

/*
* Assemble SI section
*/
void mpegts_psi_section_reassemble
( mpegts_psi_section_t *ps, const uint8_t *tsb, int crc, int ccerr,
mpegts_psi_section_callback_t cb, void *opaque );

/* **************************************************************************
* Logical network
* *************************************************************************/
Expand Down Expand Up @@ -963,6 +945,33 @@ void mpegts_table_destroy ( mpegts_table_t *mt );

void mpegts_table_consistency_check( mpegts_mux_t *mm );

void dvb_bat_destroy
(struct mpegts_table *mt);

int dvb_pat_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_cat_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_pmt_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tabelid);
int dvb_nit_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_bat_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_fs_sdt_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_sdt_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_tdt_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int atsc_vct_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);

void psi_tables_default ( struct mpegts_mux *mm );
void psi_tables_dvb ( struct mpegts_mux *mm );
void psi_tables_atsc_t ( struct mpegts_mux *mm );
void psi_tables_atsc_c ( struct mpegts_mux *mm );

mpegts_service_t *mpegts_service_create0
( mpegts_service_t *ms, const idclass_t *class, const char *uuid,
mpegts_mux_t *mm, uint16_t sid, uint16_t pmt_pid, htsmsg_t *conf );
Expand Down
49 changes: 23 additions & 26 deletions src/input/mpegts/dvb.h
Expand Up @@ -199,6 +199,29 @@ do {\
DVB_LOOP_INIT(ptr, len, off, lptr, llen);\
DVB_DESC_EACH(lptr, llen, dtag, dlen, dptr)\

/*
* SI typedefs
*/

#define MPEGTS_PSI_SECTION_SIZE 5000

typedef struct mpegts_psi_section
{
int ps_offset;
int ps_lock;
uint8_t ps_data[MPEGTS_PSI_SECTION_SIZE];
} mpegts_psi_section_t;

typedef void (*mpegts_psi_section_callback_t)
( const uint8_t *tsb, size_t len, void *opaque );

/*
* Assemble SI section
*/
void mpegts_psi_section_reassemble
( mpegts_psi_section_t *ps, const uint8_t *tsb, int crc, int ccerr,
mpegts_psi_section_callback_t cb, void *opaque );

/* PSI table callbacks */

int dvb_table_end
Expand All @@ -209,32 +232,6 @@ int dvb_table_begin
struct mpegts_table_state **st, int *sect, int *last, int *ver);
void dvb_table_reset
(struct mpegts_table *mt);
void dvb_bat_destroy
(struct mpegts_table *mt);

int dvb_pat_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_cat_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_pmt_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tabelid);
int dvb_nit_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_bat_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_fs_sdt_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_sdt_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int dvb_tdt_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);
int atsc_vct_callback
(struct mpegts_table *mt, const uint8_t *ptr, int len, int tableid);

void psi_tables_default ( struct mpegts_mux *mm );
void psi_tables_dvb ( struct mpegts_mux *mm );
void psi_tables_atsc_t ( struct mpegts_mux *mm );
void psi_tables_atsc_c ( struct mpegts_mux *mm );

extern htsmsg_t *satellites;

Expand Down

0 comments on commit 6547bbe

Please sign in to comment.