⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dvbaudio.cc

📁 传输流分析
💻 CC
字号:
/* * dvbaudio - set pid and transform DVB audio * Copyright (C) Marcus Metzler 2002  * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. *   * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. *   * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Or, point your browser to http://www.gnu.org/copyleft/gpl.html *   * The author can be reached at mocm@metzlerbros.de,   */#include <getopt.h>#include <stdlib.h>#include <transform.h>#include <DVB.hh>#define SFREQ 11700000#define LHI 10600000#define LLO 9750000#define IPACKS 2048void write_es(uint8_t *buf, int count,void  *priv){        ipack *p = (ipack *) priv;        uint8_t payl = buf[8]+9+p->start-1;        write(p->fd, buf+payl, count-payl);        p->start = 1;}void handle_es(uint8_t *buf, int count,void  *priv){}void usage(char *progname){        fprintf(stderr,"usage: %s [options] <pid>\n",progname);        fprintf(stderr,"options:\n");        fprintf(stderr,"--help,     -h         show this message\n");        fprintf(stderr,"--adapter,  -a  <nb>   set adapter number (default 0)\n");        fprintf(stderr,"--ipacks,   -i  <size> set internal buffer (default %d)\n", IPACKS);        fprintf(stderr,"--demux,    -d  <dmx>  set demux (default 0)\n");        fprintf(stderr,"--dvr,      -v  <dvr>  set dvr (default 0)\n");        fprintf(stderr,"--frontend, -e  <fend> set frontend (default 0)\n");        fprintf(stderr,"--freq,     -f  <freq> set frequency (default 0 = no tune)\n");        fprintf(stderr,"--pol,      -p  <pol>  set polarisation (V or H)\n");        fprintf(stderr,"--srate,    -s  <sr>   set signal rate\n");        fprintf(stderr,"--fec,      -c  <fec>  set FEC (default auto)\n");        fprintf(stderr,"--sat,      -t  <sat>  set diseqc nb. (default no diseqc)\n");        fprintf(stderr,"\n");        exit(1);}int main(int argc, char **argv){        int pid=0,fd1,fd_dvr,fdf;        char dmx[80];        char dvr[80];        char front[80];        int a=0,d=0,v=0,e=0;        char *pola;        int c;        int freq, pol, sr , snum, fec;        int decode=0;        ipack p;        int ipacks=IPACKS;        snum = -1;        fec = FEC_AUTO;        sr = 0;        pol = 0;        freq = 0;        if (argc < 2) {                usage(argv[0]);                exit(1);        }        while (1) {                int option_index = 0;                static struct option long_options[] = {                                                              {"adapter", required_argument, NULL, 'a'                                                              },                                                              {"ipacks", required_argument, NULL, 'i'},                                                              {"demux", required_argument, NULL, 'd'},                                                              {"front", required_argument, NULL, 'e'},                                                              {"dvr", required_argument, NULL, 'v'},                                                              {"freq", required_argument, NULL, 'f'},                                                              {"pol", required_argument, NULL, 'p'},                                                              {"srate", required_argument, NULL, 's'},                                                              {"fec", required_argument, NULL, 'c'},                                                              {"sat", required_argument, NULL, 't'},                                                              {"mpg2", required_argument, NULL, 'm'},                                                              {"help", no_argument , NULL, 'h'},                                                              {0, 0, 0, 0}                                                      };                c = getopt_long (argc, argv, "ha:i:d:v:e:f:p:s:c:t:m",                                 long_options, &option_index);                if (c == -1)                        break;                switch (c) {                case 'i':                        ipacks=strtol(optarg,(char **)NULL,0);                        break;                case 'm':                        decode=1;                        break;                case 'a':                        a = strtol(optarg,(char **)NULL,0);                        break;                case 'd':                        d = strtol(optarg,(char **)NULL,0);                        break;                case 'e':                        e = strtol(optarg,(char **)NULL,0);                        break;                case 'v':                        v = strtol(optarg,(char **)NULL,0);                        break;                case 'f':                        freq = strtol(optarg,(char **)NULL,0);                        break;                case 'p':                        pola = optarg;                        switch(pola[0]) {                        case 'V':                        case 'v':                                pol = 0;                                break;                        case 'H':                        case 'h':                                pol = 1;                                break;                        }                        break;                case 's':                        sr = strtol(optarg,(char **)NULL,0);                        break;                case 'c':                        fec = strtol(optarg,(char **)NULL,0);                        break;                case 't':                        snum = strtol(optarg,(char **)NULL,0);                        break;                case 'h':                default:                        usage(argv[0]);                }        }        if (optind) {                pid = strtol(argv[optind],(char **)NULL,0);        } else                usage(argv[0]);        if (!pid)                usage(argv[0]);        sprintf(dmx,"/dev/dvb/adapter%d/demux%d",a,d);        sprintf(dvr,"/dev/dvb/adapter%d/dvr%d",a,v);        sprintf(front,"/dev/dvb/adapter%d/frontend%d",a,v);        if((fd1 = open(dmx,O_RDWR)) < 0) {                perror("DEMUX DEVICE 1: ");                return -1;        }        if((fd_dvr = open(dvr,O_RDONLY)) < 0) {                perror("DVR DEVICE: ");                return -1;        }        if (freq>0) {                if((fdf = open(front,O_RDWR)) < 0) {                        perror("FRONTEND DEVICE: ");                        return -1;                }                set_sfront(fdf, freq, pol, sr , snum, (fe_code_rate_t) fec);        }        set_pes_filt(fd1,pid);        if (decode)                init_ipack(&p, ipacks, handle_es, 0);        else                init_ipack(&p, ipacks, write_es, 0);        p.fd = STDOUT_FILENO;        p.data = (void *)&p;        ts2es_opt(fd_dvr, pid, &p, 0);        return(0);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -