亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? parsezap.c

?? linux下的dvb收看解析軟件代碼; 帶參考程序
?? C
字號:
/*
Copyright (C) 2006  Adam Charrett
 
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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
 
parsezap.c
 
Parse channels.conf file and add services to the database.
 
Majority of the parsing code taken from the xine input_dvb plugin code.
 
*/
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include "multiplexes.h"
#include "services.h"
#include "logging.h"

typedef struct
{
    char *name;
    int value;
}
Param;

static const Param inversion_list [] =
    {
        { "INVERSION_OFF", INVERSION_OFF },
        { "INVERSION_ON", INVERSION_ON },
        { "INVERSION_AUTO", INVERSION_AUTO },
        { NULL, 0 }
    };

static const Param bw_list [] =
    {
        { "BANDWIDTH_6_MHZ", BANDWIDTH_6_MHZ },
        { "BANDWIDTH_7_MHZ", BANDWIDTH_7_MHZ },
        { "BANDWIDTH_8_MHZ", BANDWIDTH_8_MHZ },
        { NULL, 0 }
    };

static const Param fec_list [] =
    {
        { "FEC_1_2", FEC_1_2 },
        { "FEC_2_3", FEC_2_3 },
        { "FEC_3_4", FEC_3_4 },
        { "FEC_4_5", FEC_4_5 },
        { "FEC_5_6", FEC_5_6 },
        { "FEC_6_7", FEC_6_7 },
        { "FEC_7_8", FEC_7_8 },
        { "FEC_8_9", FEC_8_9 },
        { "FEC_AUTO", FEC_AUTO },
        { "FEC_NONE", FEC_NONE },
        { NULL, 0 }
    };

static const Param guard_list [] =
    {
        {"GUARD_INTERVAL_1_16", GUARD_INTERVAL_1_16},
        {"GUARD_INTERVAL_1_32", GUARD_INTERVAL_1_32},
        {"GUARD_INTERVAL_1_4", GUARD_INTERVAL_1_4},
        {"GUARD_INTERVAL_1_8", GUARD_INTERVAL_1_8},
        { NULL, 0 }
    };

static const Param hierarchy_list [] =
    {
        { "HIERARCHY_1", HIERARCHY_1 },
        { "HIERARCHY_2", HIERARCHY_2 },
        { "HIERARCHY_4", HIERARCHY_4 },
        { "HIERARCHY_NONE", HIERARCHY_NONE },
        { NULL, 0 }
    };

static const Param qam_list [] =
    {
        { "QPSK", QPSK },
        { "QAM_128", QAM_128 },
        { "QAM_16", QAM_16 },
        { "QAM_256", QAM_256 },
        { "QAM_32", QAM_32 },
        { "QAM_64", QAM_64 },
        { NULL, 0 }
    };

static const Param transmissionmode_list [] =
    {
        { "TRANSMISSION_MODE_2K", TRANSMISSION_MODE_2K },
        { "TRANSMISSION_MODE_8K", TRANSMISSION_MODE_8K },
        { NULL, 0 }
    };

static int find_param(const Param *list, const char *name)
{
    while (list->name && strcmp(list->name, name))
        list++;
    return list->value;;
}

static int parsezapline(char * str, fe_type_t fe_type)
{
    /*
		try to extract channel data from a string in the following format
		(DVBS) QPSK: <channel name>:<frequency>:<polarisation>:<sat_no>:<sym_rate>:<vpid>:<apid>
		(DVBC) QAM: <channel name>:<frequency>:<inversion>:<sym_rate>:<fec>:<qam>:<vpid>:<apid>
		(DVBT) OFDM: <channel name>:<frequency>:<inversion>:
						<bw>:<fec_hp>:<fec_lp>:<qam>:
						<transmissionm>:<guardlist>:<hierarchinfo>:<vpid>:<apid>
		
		<channel name> = any string not containing ':'
		<frequency>    = unsigned long
		<polarisation> = 'v' or 'h'
		<sat_no>       = unsigned long, usually 0 :D
		<sym_rate>     = symbol rate in MSyms/sec
		
		
		<inversion>    = INVERSION_ON | INVERSION_OFF | INVERSION_AUTO
		<fec>          = FEC_1_2, FEC_2_3, FEC_3_4 .... FEC_AUTO ... FEC_NONE
		<qam>          = QPSK, QAM_128, QAM_16 ...

		<bw>           = BANDWIDTH_6_MHZ, BANDWIDTH_7_MHZ, BANDWIDTH_8_MHZ
		<fec_hp>       = <fec>
		<fec_lp>       = <fec>
		<transmissionm> = TRANSMISSION_MODE_2K, TRANSMISSION_MODE_8K
		<vpid>         = video program id
		<apid>         = audio program id


    */
    Multiplex_t *multiplex;
    unsigned long freq;
    char *field, *tmp;
    struct dvb_frontend_parameters   front_param;
    char *name;
    int id;

    tmp = str;
#define NEXTFIELD() if(!(field = strsep(&tmp, ":")))return -1

    /* find the channel name */
    NEXTFIELD();
    name = strdup(field);

    /* find the frequency */
    NEXTFIELD();
    freq = strtoul(field,NULL,0);
	
	
	switch(fe_type)
	{
		case FE_QPSK:
			/*
			if(freq > 11700)
			{
				front_param.frequency = (freq - 10600)*1000;
				diseqcsettings->tone = 1;
			} else {
				front_param.frequency = (freq - 9750)*1000;
				diseqcsettings->tone = 0;
			}*/
			front_param.frequency = freq;
			front_param.inversion = INVERSION_AUTO;
	  
			/* find out the polarisation */ 
			NEXTFIELD();
			/*diseqcsettings->pol = (field[0] == 'h' ? 0 : 1);*/

			/* satellite number */
			NEXTFIELD();
			/*diseqcsettings->sat_no = strtoul(field, NULL, 0);*/

			/* symbol rate */
			NEXTFIELD();
			front_param.u.qpsk.symbol_rate = strtoul(field, NULL, 0) * 1000;

			front_param.u.qpsk.fec_inner = FEC_AUTO;
		break;
		case FE_QAM:
			front_param.frequency = freq;
			
			/* find out the inversion */
			NEXTFIELD();
			front_param.inversion = find_param(inversion_list, field);

			/* find out the symbol rate */
			NEXTFIELD();
			front_param.u.qam.symbol_rate = strtoul(field, NULL, 0);

			/* find out the fec */
			NEXTFIELD();
			front_param.u.qam.fec_inner = find_param(fec_list, field);

			/* find out the qam */
			NEXTFIELD();
			front_param.u.qam.modulation = find_param(qam_list, field);
		break;
		case FE_OFDM:
		    /* DVB-T frequency is in kHz - workaround broken channels.confs */
		    if (freq < 1000000)
		    {
		        freq*=1000;
		    }
		    front_param.frequency = freq;

		    /* find out the inversion */
		    NEXTFIELD();
		    front_param.inversion = find_param(inversion_list, field);

		    /* find out the bandwidth */
		    NEXTFIELD();
		    front_param.u.ofdm.bandwidth = find_param(bw_list, field);

		    /* find out the fec_hp */
		    NEXTFIELD();
		    front_param.u.ofdm.code_rate_HP = find_param(fec_list, field);

		    /* find out the fec_lp */
		    NEXTFIELD();
		    front_param.u.ofdm.code_rate_LP = find_param(fec_list, field);

		    /* find out the qam */
		    NEXTFIELD();
		    front_param.u.ofdm.constellation = find_param(qam_list, field);

		    /* find out the transmission mode */
		    NEXTFIELD();
		    front_param.u.ofdm.transmission_mode = find_param(transmissionmode_list, field);

		    /* guard list */
		    NEXTFIELD();
		    front_param.u.ofdm.guard_interval = find_param(guard_list, field);

		    NEXTFIELD();
		    front_param.u.ofdm.hierarchy_information = find_param(hierarchy_list, field);
			break;
		default:
			break;
	}
	multiplex = MultiplexFind(front_param.frequency);
    if (multiplex == NULL)
    {
        printlog(LOG_DEBUGV,"Adding frequency %d (type %d)\n", front_param.frequency, fe_type);
        MultiplexAdd(fe_type, &front_param);
    }
    else
    {
        free(multiplex);
    }
	
    /* Video PID - not used but we'll take it anyway */
    NEXTFIELD();
    /* Audio PID - it's only for mpegaudio so we don't use it anymore */
    NEXTFIELD();
    /* service ID */
    NEXTFIELD();
    id = strtoul(field, NULL, 0);
    printlog(LOG_DEBUGV, "Adding service \"%s\" %d\n", name, id);
    ServiceAdd(front_param.frequency, name, id, -1, -1);
    return 0;
}

int parsezapfile(char *path, fe_type_t fe_type)
{
    FILE      *f;
    char       str[255];
    int        result;

    f = fopen(path, "rb");
    if (!f)
    {
        fprintf( stderr, "Failed to open dvb channel file '%s'\n", path);
        return 0;
    }

    while ( fgets (str, sizeof(str), f))
    {
        result = parsezapline(str, fe_type);
    }

    return 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美在线观看视频在线| 亚洲日本乱码在线观看| 日韩一级精品视频在线观看| 欧美日韩视频在线第一区| 欧美在线综合视频| 在线免费视频一区二区| 欧美丝袜自拍制服另类| 欧美三级蜜桃2在线观看| 91高清在线观看| 在线免费观看视频一区| 欧美人与性动xxxx| 日韩欧美国产不卡| 久久久久国产精品麻豆| 国产精品乱人伦| 亚洲男人的天堂av| 五月综合激情日本mⅴ| 奇米888四色在线精品| 另类小说图片综合网| 国产老肥熟一区二区三区| 成人午夜视频免费看| 99re热这里只有精品免费视频| 99v久久综合狠狠综合久久| 色欧美88888久久久久久影院| 99vv1com这只有精品| 欧美日韩精品一区二区在线播放| 日韩三级中文字幕| 久久精品一区二区三区四区| 中文字幕在线不卡一区二区三区| 亚洲综合一区在线| 九九九久久久精品| 不卡一区二区三区四区| 欧美色倩网站大全免费| 337p日本欧洲亚洲大胆精品 | 91精品国产免费| 日韩一级二级三级| 国产欧美精品日韩区二区麻豆天美| 亚洲欧洲在线观看av| 丝袜美腿亚洲色图| 国产·精品毛片| 欧美伊人久久大香线蕉综合69| 日韩片之四级片| 国产精品短视频| 日韩精品成人一区二区在线| 国产高清亚洲一区| 欧美日韩一区二区不卡| 久久久国产综合精品女国产盗摄| 亚洲精品中文字幕在线观看| 日本不卡免费在线视频| 成人激情小说乱人伦| 欧美一级欧美一级在线播放| 中文字幕不卡在线播放| 午夜视频一区在线观看| 国产大片一区二区| 欧美日韩视频在线观看一区二区三区| 久久久精品免费免费| 亚洲超碰精品一区二区| 成人一区二区三区| 欧美一区二区在线免费播放| 亚洲特黄一级片| 久久99久久99| 欧美日韩国产免费一区二区| 国产精品久久久久久久久图文区 | 免费观看在线综合| 91在线一区二区三区| 91精品国产高清一区二区三区| 中文字幕av不卡| 六月丁香婷婷久久| 欧美特级限制片免费在线观看| 日本一区二区三区久久久久久久久不| 亚洲国产成人高清精品| 不卡av电影在线播放| 欧美哺乳videos| 午夜日韩在线电影| 91精品福利视频| 成人欧美一区二区三区黑人麻豆| 精品一区中文字幕| 91精品国产一区二区三区蜜臀| 亚洲男同性恋视频| 99久久婷婷国产综合精品| 精品黑人一区二区三区久久| 日韩国产欧美三级| 欧美在线观看视频一区二区| 亚洲视频 欧洲视频| 国产麻豆午夜三级精品| 日韩免费视频一区二区| 首页国产欧美日韩丝袜| 欧美日韩一本到| 一区二区在线看| 91国产丝袜在线播放| 亚洲手机成人高清视频| 风间由美一区二区av101| 久久综合九色综合久久久精品综合 | 久久精品男人天堂av| 久久er99热精品一区二区| 91精品综合久久久久久| 日韩不卡在线观看日韩不卡视频| 欧美性极品少妇| 亚洲大片精品永久免费| 欧美视频三区在线播放| 亚洲蜜桃精久久久久久久| 91精品国产综合久久久久久久| 亚洲另类一区二区| 一本色道a无线码一区v| 亚洲精品视频在线看| 色综合久久综合网欧美综合网| 中文字幕五月欧美| 91亚洲资源网| 亚洲国产欧美在线| 欧美日韩国产高清一区| 日本女人一区二区三区| 日韩精品综合一本久道在线视频| 日本不卡高清视频| 久久亚洲精品小早川怜子| 精品写真视频在线观看| xvideos.蜜桃一区二区| 国产一区二区在线观看免费 | 久久激情综合网| 久久久久国产精品人| 高清久久久久久| 国产精品家庭影院| 在线视频观看一区| 日韩国产精品久久| 精品国产乱码久久| 成人久久视频在线观看| 亚洲欧美一区二区三区国产精品 | 91久久香蕉国产日韩欧美9色| 一级女性全黄久久生活片免费| 欧美私人免费视频| 麻豆极品一区二区三区| 国产蜜臀av在线一区二区三区| 99精品桃花视频在线观看| 亚洲亚洲人成综合网络| 91精品一区二区三区在线观看| 寂寞少妇一区二区三区| 亚洲欧洲无码一区二区三区| 欧美三级电影在线看| 精品在线免费观看| 亚洲日本在线视频观看| 欧美日韩国产一级片| 久久99国产乱子伦精品免费| 国产精品二区一区二区aⅴ污介绍| 91福利视频网站| 韩国av一区二区三区四区| 亚洲欧洲日韩一区二区三区| 欧美高清性hdvideosex| 国产a级毛片一区| 亚洲福利一二三区| 国产网站一区二区三区| 91电影在线观看| 久久成人免费电影| 亚洲精品午夜久久久| 精品国产乱码久久久久久牛牛 | 在线成人免费观看| 国产成人综合视频| 香蕉成人啪国产精品视频综合网| 精品日韩在线一区| 在线精品视频免费观看| 国产精品一区二区果冻传媒| 亚洲一区二区三区小说| 久久久精品黄色| 777xxx欧美| 色欧美日韩亚洲| 国产ts人妖一区二区| 污片在线观看一区二区| 成人欧美一区二区三区1314| 欧美va在线播放| 欧美日韩国产另类一区| 99热99精品| 国产一区二区毛片| 视频精品一区二区| 136国产福利精品导航| 久久一留热品黄| 日韩一区和二区| 欧美在线观看一区二区| 成人av电影免费在线播放| 紧缚捆绑精品一区二区| 日产国产欧美视频一区精品| 亚洲综合av网| 亚洲免费在线视频一区 二区| 国产亚洲美州欧州综合国| 精品日韩99亚洲| 欧美高清激情brazzers| 91国产成人在线| 91蜜桃传媒精品久久久一区二区| 国产寡妇亲子伦一区二区| 久久99在线观看| 日本vs亚洲vs韩国一区三区 | 视频一区视频二区中文字幕| 亚洲欧美色图小说| 国产精品免费视频观看| 久久综合久色欧美综合狠狠| 欧美一区二区三区人| 欧美日韩综合色| 在线观看免费成人| 色婷婷综合久色| 91丨porny丨户外露出| 99热国产精品| 99国产精品99久久久久久| 99国产欧美另类久久久精品| 91一区二区在线|