#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define BSIZE 188 int pidt[0x2001]; int main(int argc, char **argv) { int fd, ffd, packets = 0; struct timeval startt; struct dmx_pes_filter_params flt; char *search; unsigned char buffer[BSIZE]; fd = open("/dev/dvb/adapter0/dvr0", O_RDONLY); ioctl(fd, DMX_SET_BUFFER_SIZE, 1024 * 1024); ffd = open("/dev/dvb/adapter0/demux0", O_RDWR); if (ffd < 0) { perror("/dev/dvb/adapter0/demux0"); return -fd; } flt.pid = 0x2000; flt.input = DMX_IN_FRONTEND; flt.output = DMX_OUT_TS_TAP; flt.pes_type = DMX_PES_OTHER; flt.flags = 0; if (ioctl(ffd, DMX_SET_PES_FILTER, &flt) < 0) { perror("DMX_SET_PES_FILTER"); return -1; } if (ioctl(ffd, DMX_START, 0) < 0) { perror("DMX_SET_PES_FILTER"); return -1; } gettimeofday(&startt, 0); if (argc > 1) search = argv[1]; else search = 0; while (1) { int pid, r, ok; if ((r = read(fd, buffer, 188)) <= 0) { perror("read"); break; } if (r != 188) { printf("only read %d\n", r); break; } if (buffer[0] != 0x47) { continue; printf("desync (%x)\n", buffer[0]); while (buffer[0] != 0x47) read(fd, buffer, 1); continue; } ok = 1; pid = ((((unsigned) buffer[1]) << 8) | ((unsigned) buffer[2])) & 0x1FFF; if (search) { int i, sl = strlen(search); ok = 0; if (pid != 0x1fff) { for (i = 0; i < (188 - sl); ++i) { if (!memcmp(buffer + i, search, sl)) ok = 1; } } } if (ok) { pidt[pid]++; pidt[0x2000]++; } packets++; if (!(packets & 0xFF)) { struct timeval now; int diff; gettimeofday(&now, 0); diff = (now.tv_sec - startt.tv_sec) * 1000 + (now.tv_usec - startt.tv_usec) / 1000; if (diff > 1000) { int pid = 0; for (pid = 0; pid < 0x2001; pid++) { if (pidt[pid]) { printf("%04x %5d p/s %5d kb/s %5d kbit\n", pid, pidt[pid] * 1000 / diff, pidt[pid] * 1000 / diff * 188 / 1024, pidt[pid] * 8 * 1000 / diff * 188 / 1000); } pidt[pid] = 0; } printf("-PID--FREQ-----BANDWIDTH-BANDWIDTH-\n"); startt = now; } } } close(ffd); close(fd); return 0; } 019c12b9ec990a69434fc9158b077225031'/>
AgeCommit message (Expand)AuthorFilesLines
2014-12-28Imported Upstream version 0+git20141218.b46a22cupstream/0+git20141218.b46a22cJonathan McCrohan535-639/+317
2014-10-20Release 0+git20141009.d26b627-1debian/0+git20141009.d26b627-1Jonathan McCrohan1-2/+2
2014-10-20Fix up packaging to account for move to DVBv5Jonathan McCrohan2-2/+6
2014-10-20delete d/dtv-scan-files.install; Upstream now supplies a MakefileJonathan McCrohan2-4/+1
2014-10-15d/control: update Standards Version to 3.9.6Jonathan McCrohan2-1/+3
2014-10-15d/control: add Build-Depends on dvb-toolsJonathan McCrohan2-1/+2
2014-10-15New Upstream Snapshot (commit d26b627)Jonathan McCrohan1-0/+10
2014-10-15Imported Upstream version 0+git20141009.d26b627upstream/0+git20141009.d26b627Jonathan McCrohan2010-11120/+159271
2014-07-23Release 0+git20140611.14bd6c7-1debian/0+git20140611.14bd6c7-1Jonathan McCrohan1-2/+2
2014-07-23New Upstream Snapshot (commit 14bd6c7)Jonathan McCrohan1-2/+3
2014-07-23Imported Upstream version 0+git20140611.14bd6c7upstream/0+git20140611.14bd6c7Jonathan McCrohan7-11/+60
2014-05-13New Upstream Snapshot (commit 1246b27)Jonathan McCrohan1-0/+6
2014-05-13Imported Upstream version 0+git20140512.1246b27upstream/0+git20140512.1246b27Jonathan McCrohan391-301/+3983
2014-04-05Release 0+git20140326.cfc2975-1debian/0+git20140326.cfc2975-1Jonathan McCrohan1-2/+2
2014-04-05d/control: update Homepage (upstream has moved from Gitweb to cgit)Jonathan McCrohan2-1/+2
2014-04-05New Upstream Snapshot (commit cfc2975)Jonathan McCrohan1-0/+6
2014-04-05Imported Upstream version 0+git20140326.cfc2975upstream/0+git20140326.cfc2975Jonathan McCrohan118-656/+877
2014-01-16Release 0+git20140107.1850cf8-1debian/0+git20140107.1850cf8-1Jonathan McCrohan1-2/+2
2014-01-16Update Standards Version to 3.9.5Jonathan McCrohan2-1/+9