From 6e40287e2f39a80fc72bd8d0fbc1a8334d688c2d Mon Sep 17 00:00:00 2001 From: etobi Date: Tue, 3 Sep 2013 09:48:38 +0200 Subject: Imported Upstream version 1.1.0 --- test/setpid.c | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 test/setpid.c (limited to 'test/setpid.c') diff --git a/test/setpid.c b/test/setpid.c new file mode 100644 index 0000000..fa0333c --- /dev/null +++ b/test/setpid.c @@ -0,0 +1,87 @@ +/* + * Set video and audio PIDs in the demux; useful only if you have + * a hardware MPEG decoder and you're tuned to a transport stream. + * + * usage: DEMUX=/dev/dvb/adapterX/demuxX setpid video_pid audio_pid + */ + +#include +#include +#include +#include +#include +#include +#include +#include + + +static +int setup_demux (char *dmxdev, int video_pid, int audio_pid) +{ + int vfd, afd; + struct dmx_pes_filter_params pesfilter; + + printf ("video_pid == 0x%04x\n", video_pid); + printf ("audio_pid == 0x%04x\n", audio_pid); + + if ((vfd = open (dmxdev, O_RDWR)) < 0) { + perror("open 1"); + return -1; + } + + pesfilter.pid = video_pid; + pesfilter.input = DMX_IN_FRONTEND; + pesfilter.output = DMX_OUT_DECODER; + pesfilter.pes_type = DMX_PES_VIDEO; + pesfilter.flags = DMX_IMMEDIATE_START; + + if (ioctl (vfd, DMX_SET_PES_FILTER, &pesfilter) < 0) { + perror("ioctl DMX_SET_PES_FILTER (video)"); + return -1; + } + + close (vfd); + + if ((afd = open (dmxdev, O_RDWR)) < 0) { + perror("open 1"); + return -1; + } + + pesfilter.pid = audio_pid; + pesfilter.input = DMX_IN_FRONTEND; + pesfilter.output = DMX_OUT_DECODER; + pesfilter.pes_type = DMX_PES_AUDIO; + pesfilter.flags = DMX_IMMEDIATE_START; + + if (ioctl (afd, DMX_SET_PES_FILTER, &pesfilter) < 0) { + perror("ioctl DMX_SET_PES_FILTER (audio)"); + return -1; + } + + close (afd); + return 0; +} + + +int main (int argc, char **argv) +{ + char *dmxdev = "/dev/dvb/adapter0/demux0"; + int video_pid, audio_pid; + + if (argc != 3) { + printf ("\nusage: %s