From: <ni...@us...> - 2007-03-19 02:40:49
|
Update of /cvsroot/dvbtools/dvbstream In directory sc8-pr-cvs12.sourceforge.net:/tmp/cvs-serv23643 Modified Files: dvbstream.c Log Message: added an array to keep track of the system information pids; added code in parse_ts_packet() to call parse_pmt() with the appropriate parameters Index: dvbstream.c =================================================================== RCS file: /cvsroot/dvbtools/dvbstream/dvbstream.c,v retrieving revision 1.42 retrieving revision 1.43 diff -C2 -d -r1.42 -r1.43 *** dvbstream.c 17 Mar 2007 00:26:21 -0000 1.42 --- dvbstream.c 17 Mar 2007 00:45:37 -0000 1.43 *************** *** 451,454 **** --- 451,456 ---- } PMT; + static unsigned char SI_PIDS[8192]; + static int collect_section(section_t *section, int pusi, unsigned char *buf, unsigned int len) { *************** *** 500,503 **** --- 502,507 ---- return 1; + memset(&SI_PIDS, 0, sizeof(SI_PIDS)); + SI_PIDS[0] = 1; seclen = ((buf[1] & 0x0F) << 8) | buf[2]; num = (seclen - 9) / 4; *************** *** 517,520 **** --- 521,525 ---- PAT.entries[j].program = (buf[i] << 8) | buf[i+1]; PAT.entries[j].pmt_pid = ((buf[i+2] & 0x1F) << 8) | buf[i+3]; + SI_PIDS[PAT.entries[j].pmt_pid] = 1; i += 4; //fprintf(stderr, "PROGRAM: %d, pmt_pid: %d\n", PAT.entries[j].program, PAT.entries[j].pmt_pid); *************** *** 591,594 **** --- 596,611 ---- if(pid == 0) parse_pat(pusi, &buf[l], TS_SIZE - l); + else + { + int i; + + for(i=0; i<PAT.entries_cnt; i++) + { + if(pid==PAT.entries[i].pmt_pid) + { + parse_pmt(pusi, &PMT.entries[i], &buf[l], TS_SIZE - l); + } + } + } } *************** *** 642,645 **** --- 659,664 ---- PAT.section.pos = SECTION_LEN+1; memset(&PMT, 0, sizeof(PMT)); + memset(&SI_PIDS, 0, sizeof(SI_PIDS)); + SI_PIDS[0] = 1; /* Set default IP and port */ |