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

📄 main.cc

📁 传输流分析
💻 CC
📖 第 1 页 / 共 3 页
字号:
        int fd;        int progn;        int err = 0;        for (progn = 0; progn < PROGS+1; progn ++)                if (!strcmp(basename(argv[0]), prognames[progn]))                        break;        if (progn == PROGS+1 && argc > 1)                for (progn = 0; progn < PROGS+1; progn ++)                        if (!strcmp(basename(argv[1]), prognames[progn])) {                                argc--;                                argv++;                                break;                        }        if (progn == PROGS+1) {                for (progn = 0; progn < PROGS;progn++) {                        usage(progn);                        cerr << endl;                }                exit(1);        }        cerr << prognames[progn] << endl;        if (argc >=2 && !strcmp(argv[1],"-h")) {                usage(progn);                exit(1);        }        if(argc <=2) {                if (progn == get_http_) {                        if (argc < 2) {                                usage(progn);                                exit(1);                        }                        int sock = http_open(argv[1]);                        if (sock >= 0) {                                int count = 1;                                uint8_t buf[SIZE];                                while (count > 0) {                                        count = read(sock,buf,SIZE);                                        write(STDOUT_FILENO,buf, count);                                }                        }                        exit(0);                }                if (argc == 2 && progn != pes_repack_ && progn != ts2es_                                && progn != extract_pes_                                && progn != extract_pes_payload_) {                        if ((fd = open(argv[1],O_RDONLY|O_LARGEFILE))< 0) {                                perror(argv[1]);                                exit(1);                        }                } else {                        fd = STDIN_FILENO;                }                switch( progn ) {                case streamtype_: {                                char *streams[4] = { "PS_STREAM", "TS_STREAM"                                                     , "PES_STREAM"};                                char *tv_form[3] = {"DUNNO", "PAL", "NTSC"};                                int f;                                if (fd == STDIN_FILENO) {                                        cout << streams[stream_type(cin)] << endl;                                        f=tv_norm(cin);                                } else {                                        close(fd);                                        if (argc < 2) {                                                usage(progn);                                                exit(1);                                        }                                        ifstream fin(argv[1]);                                        cout << streams[stream_type(fin)] << endl;                                        f=tv_norm(fin);                                }                                cout << tv_form[int(f&0x0F)] << endl;                                cout << "MPEG" << int((f>>4)&0x0F) << endl;                        }                        break;                case insert_pat_pmt_:                        insert_pat_pmt( fd, STDOUT_FILENO);                        break;                case extract_pes_payload_: {                                if (argc < 2) {                                        usage(progn);                                        exit(1);                                }                                istringstream arg(argv[1]);                                int id;                                arg >> hex >> id;                                extract_from_pes(fd, STDOUT_FILENO, id, 1);                                break;                        }                case extract_pes_: {                                if (argc < 2) {                                        usage(progn);                                        exit(1);                                }                                istringstream arg(argv[1]);                                int id;                                arg >> hex >> id;                                extract_from_pes(fd, STDOUT_FILENO, id, 0);                                break;                        }                case pes2vid_:                        extract_from_pes(fd, STDOUT_FILENO, 0xE0, 0);                        break;                case pes2aud_:                        extract_from_pes(fd, STDOUT_FILENO, 0xC0, 0);                        break;                case pes2vid_es_:                        extract_from_pes(fd, STDOUT_FILENO, 0xE0, 1);                        break;                case pes2aud_es_:                        extract_from_pes(fd, STDOUT_FILENO, 0xC0, 1);                        break;                case pes2ts_: {                                p2t_t p;                                uint8_t buf[SIZE];                                init_p2t(&p,NULL);                                int count = 1;                                while (count > 0) {                                        count = read(fd,buf,SIZE);                                        pes_to_ts(buf, count, 160, &p);                                }                        }                        break;                case ts_demux_:                        cerr << "Opening stderr for audio" << endl;                        cerr << "Opening stdout for video" << endl;                        ts_demux(fd,STDOUT_FILENO,STDERR_FILENO,0,0,0);                        break;                case tspids_:                        if (fd == STDIN_FILENO) {                                TS_PIDS(cin,cout);                        } else {                                close(fd);                                if (argc < 2) {                                        usage(progn);                                        exit(1);                                }                                ifstream fin(argv[1]);                                TS_PIDS(cin,cout);                        }                        break;                case analyze_:                        if (fd == STDIN_FILENO) {                                analyze(cin);                        } else {                                close(fd);                                if (argc < 2) {                                        usage(progn);                                        exit(1);                                }                                ifstream fin(argv[1]);                                analyze(fin);                        }                        break;                case change_aspect_1_1_:                        change_aspect( fd, STDOUT_FILENO, 0x10);                        break;                case change_aspect_4_3_:                        change_aspect( fd, STDOUT_FILENO, 0x20);                        break;                case change_aspect_16_9_:                        change_aspect( fd, STDOUT_FILENO, 0x30);                        break;                case change_aspect_221_1_:                        change_aspect( fd, STDOUT_FILENO, 0x40);                        break;                case pes_repack_: {                                uint8_t buf[SIZE];                                int count = 1;                                if (argc < 2) {                                        usage(progn);                                        exit(1);                                }                                int size = strtol(argv[1],(char **)NULL,0);                                //			p2p p;                                ipack p;                                if (fd != STDIN_FILENO) {                                        usage(progn);                                        exit(1);                                }                                cerr << "Repacking int size " << size << endl;                                //			init_p2p(&p, write_it, size);                                init_ipack(&p, size, write_it2, 0);                                while (count > 0) {                                        count = read(fd,buf,SIZE);                                        //				get_pes(buf,count,&p,pes_repack);                                        instant_repack(buf,count,&p);                                }                        }                        break;                case ts2es_:                        if (fd != STDIN_FILENO || argc < 2) {                                usage(progn);                                exit(1);                        }                        ts2es(fd, strtol(argv[1],(char **)NULL,0));                        break;                case pesplot_: {                                PES_Packet pes;                                long int apts=0;                                long int vpts=0;                                if (fd == STDIN_FILENO) {                                        cerr << "Can't read from stdin" << endl;                                        exit(1);                                }                                close(fd);                                if (argc < 2) {                                        usage(progn);                                        exit(1);                                }                                ifstream fin(argv[1]);                                while(!fin.eof()) {                                        streampos pos=fin.tellg();                                        fin >> pes;                                        if(pes.has_pts()) {                                                switch(pes.Stream_ID()) {                                                case AUDIO_STREAM_S ... AUDIO_STREAM_E:                                                        apts = ntohl(*((unsigned int *)                                                                       pes.P()->pts));                                                        break;                                                case VIDEO_STREAM_S ... VIDEO_STREAM_E:

⌨️ 快捷键说明

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