|
|
@ -79,11 +79,11 @@ struct MpegTSFilter { |
|
|
|
}; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
#define MAX_PIDS_PER_PROGRAM 64 |
|
|
|
#define MAX_PIDS_PER_PROGRAM 64 |
|
|
|
typedef struct { |
|
|
|
struct Program { |
|
|
|
unsigned int id; //program id/service id
|
|
|
|
unsigned int id; //program id/service id
|
|
|
|
unsigned int nb_pids; |
|
|
|
unsigned int nb_pids; |
|
|
|
unsigned int pids[MAX_PIDS_PER_PROGRAM]; |
|
|
|
unsigned int pids[MAX_PIDS_PER_PROGRAM]; |
|
|
|
} Program_t; |
|
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
struct MpegTSContext { |
|
|
|
struct MpegTSContext { |
|
|
|
/* user data */ |
|
|
|
/* user data */ |
|
|
@ -113,7 +113,7 @@ struct MpegTSContext { |
|
|
|
/* scan context */ |
|
|
|
/* scan context */ |
|
|
|
/** structure to keep track of Program->pids mapping */ |
|
|
|
/** structure to keep track of Program->pids mapping */ |
|
|
|
unsigned int nb_prg; |
|
|
|
unsigned int nb_prg; |
|
|
|
Program_t *prg; |
|
|
|
struct Program *prg; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** filters for various streams specified by PMT + for the PAT and PMT */ |
|
|
|
/** filters for various streams specified by PMT + for the PAT and PMT */ |
|
|
@ -168,8 +168,8 @@ static void clear_programs(MpegTSContext *ts) |
|
|
|
|
|
|
|
|
|
|
|
static void add_pat_entry(MpegTSContext *ts, unsigned int programid) |
|
|
|
static void add_pat_entry(MpegTSContext *ts, unsigned int programid) |
|
|
|
{ |
|
|
|
{ |
|
|
|
Program_t *p; |
|
|
|
struct Program *p; |
|
|
|
void *tmp = av_realloc(ts->prg, (ts->nb_prg+1)*sizeof(Program_t)); |
|
|
|
void *tmp = av_realloc(ts->prg, (ts->nb_prg+1)*sizeof(struct Program)); |
|
|
|
if(!tmp) |
|
|
|
if(!tmp) |
|
|
|
return; |
|
|
|
return; |
|
|
|
ts->prg = tmp; |
|
|
|
ts->prg = tmp; |
|
|
@ -182,7 +182,7 @@ static void add_pat_entry(MpegTSContext *ts, unsigned int programid) |
|
|
|
static void add_pid_to_pmt(MpegTSContext *ts, unsigned int programid, unsigned int pid) |
|
|
|
static void add_pid_to_pmt(MpegTSContext *ts, unsigned int programid, unsigned int pid) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int i; |
|
|
|
int i; |
|
|
|
Program_t *p = NULL; |
|
|
|
struct Program *p = NULL; |
|
|
|
for(i=0; i<ts->nb_prg; i++) { |
|
|
|
for(i=0; i<ts->nb_prg; i++) { |
|
|
|
if(ts->prg[i].id == programid) { |
|
|
|
if(ts->prg[i].id == programid) { |
|
|
|
p = &ts->prg[i]; |
|
|
|
p = &ts->prg[i]; |
|
|
@ -209,7 +209,7 @@ static int discard_pid(MpegTSContext *ts, unsigned int pid) |
|
|
|
{ |
|
|
|
{ |
|
|
|
int i, j, k; |
|
|
|
int i, j, k; |
|
|
|
int used = 0, discarded = 0; |
|
|
|
int used = 0, discarded = 0; |
|
|
|
Program_t *p; |
|
|
|
struct Program *p; |
|
|
|
for(i=0; i<ts->nb_prg; i++) { |
|
|
|
for(i=0; i<ts->nb_prg; i++) { |
|
|
|
p = &ts->prg[i]; |
|
|
|
p = &ts->prg[i]; |
|
|
|
for(j=0; j<p->nb_pids; j++) { |
|
|
|
for(j=0; j<p->nb_pids; j++) { |
|
|
|