summaryrefslogtreecommitdiffstats
path: root/util/dvbtraffic
diff options
context:
space:
mode:
authoretobi <git@e-tobi.net>2013-09-03 09:48:38 +0200
committeretobi <git@e-tobi.net>2013-09-03 09:48:38 +0200
commit6e40287e2f39a80fc72bd8d0fbc1a8334d688c2d (patch)
tree024bef311226653bdd1da4fa588becf5098bcff7 /util/dvbtraffic
downloadlinux-dvb-apps-6e40287e2f39a80fc72bd8d0fbc1a8334d688c2d.tar.gz
Imported Upstream version 1.1.0upstream/1.1.0
Diffstat (limited to 'util/dvbtraffic')
-rw-r--r--util/dvbtraffic/Makefile6
-rw-r--r--util/dvbtraffic/dvbtraffic.c130
2 files changed, 136 insertions, 0 deletions
diff --git a/util/dvbtraffic/Makefile b/util/dvbtraffic/Makefile
new file mode 100644
index 0000000..c29be40
--- /dev/null
+++ b/util/dvbtraffic/Makefile
@@ -0,0 +1,6 @@
+
+dvbtraffic: dvbtraffic.c
+ gcc -MD -g -O2 -Wall -I../../include $< -o $@
+
+clean:
+ rm -f *.o *.d dvbtraffic
diff --git a/util/dvbtraffic/dvbtraffic.c b/util/dvbtraffic/dvbtraffic.c
new file mode 100644
index 0000000..8add053
--- /dev/null
+++ b/util/dvbtraffic/dvbtraffic.c
@@ -0,0 +1,130 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/ioctl.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <time.h>
+#include <sys/poll.h>
+#include <sys/time.h>
+#include <string.h>
+
+#include <linux/dvb/dmx.h>
+#include <linux/dvb/frontend.h>
+#include <linux/dvb/video.h>
+
+#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;
+}
+
6b627'>upstream/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 No changes required