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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? findmheg.c

?? Red-Button
?? C
字號:
/* * findmheg.c *//* * Copyright (C) 2005, Simon Kilvington * * 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 St, Fifth Floor, Boston, MA  02110-1301 USA */#include <stdio.h>#include <stdint.h>#include <stdbool.h>#include <netinet/in.h>#include "carousel.h"#include "table.h"#include "assoc.h"#include "utils.h"/* Programme Association Table and Section */#define PID_PAT		0x0000#define TID_PAT		0x00/* Programme Map Section */#define TID_PMT		0x02/* stream_types we are interested in */#define STREAM_TYPE_VIDEO_MPEG2		0x02#define STREAM_TYPE_AUDIO_MPEG1		0x03#define STREAM_TYPE_AUDIO_MPEG2		0x04#define STREAM_TYPE_ISO13818_6_B	0x0b/* descriptors we want */#define TAG_LANGUAGE_DESCRIPTOR		0x0a#define TAG_CAROUSEL_ID_DESCRIPTOR	0x13#define TAG_STREAM_ID_DESCRIPTOR	0x52/* bits of the descriptors we care about */struct carousel_id_descriptor{	uint32_t carousel_id;};struct stream_id_descriptor{	uint8_t component_tag;};struct language_descriptor{	char language_code[3];	uint8_t audio_type;} __attribute__((__packed__));boolis_audio_stream(uint8_t stream_type){	switch(stream_type)	{	case STREAM_TYPE_AUDIO_MPEG1:	case STREAM_TYPE_AUDIO_MPEG2:		return true;	default:		return false;	}}/* * fills in a struct carousel based on the given service_id * returns a ptr to a static struct that will be overwritten be the next call to this routine */static struct carousel _car;struct carousel *find_mheg(unsigned int adapter, unsigned int timeout, uint16_t service_id, int carousel_id){	unsigned char *pat;	uint16_t section_length;	uint16_t offset;	uint16_t map_pid = 0;	bool found;	unsigned char *pmt;	uint8_t stream_type;	uint16_t elementary_pid;	uint16_t info_length;	uint8_t desc_tag;	uint8_t desc_length;	uint16_t component_tag;	/* carousel data we know so far */	snprintf(_car.demux_device, sizeof(_car.demux_device), DEMUX_DEVICE, adapter);	snprintf(_car.dvr_device, sizeof(_car.dvr_device), DVR_DEVICE, adapter);	_car.timeout = timeout;	_car.service_id = service_id;	/* unknown */	_car.carousel_id = 0;	_car.audio_pid = 0;	_car.audio_type = 0;	_car.video_pid = 0;	_car.video_type = 0;	_car.current_pid = 0;	/* map between stream_id_descriptors and elementary_PIDs */	init_assoc(&_car.assoc);	/* no PIDs yet */	_car.npids = 0;	_car.pids = NULL;	/* no modules loaded yet */	_car.got_dsi = false;	_car.nmodules = 0;	_car.modules = NULL;	/* get the PAT */	if((pat = read_table(_car.demux_device, PID_PAT, TID_PAT, timeout)) == NULL)		fatal("Unable to read PAT");	section_length = 3 + (((pat[1] & 0x0f) << 8) + pat[2]);	/* find the PMT for this service_id */	found = false;	offset = 8;	/* -4 for the CRC at the end */	while((offset < (section_length - 4)) && !found)	{		if((pat[offset] << 8) + pat[offset+1] == service_id)		{			map_pid = ((pat[offset+2] & 0x1f) << 8) + pat[offset+3];			found = true;		}		else		{			offset += 4;		}	}	if(!found)		fatal("Unable to find programme_map_PID for service_id %u", service_id);	vverbose("programme_map_PID: 0x%x", map_pid);	/* get the PMT */	if((pmt = read_table(_car.demux_device, map_pid, TID_PMT, timeout)) == NULL)		fatal("Unable to read PMT");	section_length = 3 + (((pmt[1] & 0x0f) << 8) + pmt[2]);	/* skip the program_info descriptors */	offset = 10;	info_length = ((pmt[offset] & 0x0f) << 8) + pmt[offset+1];	offset += 2 + info_length;	/*	 *  find the Descriptor Tags we are interested in	 */	while(offset < (section_length - 4))	{		stream_type = pmt[offset];		offset += 1;		elementary_pid = ((pmt[offset] & 0x1f) << 8) + pmt[offset+1];		offset += 2;		/* is it the default video stream for this service */		if(stream_type == STREAM_TYPE_VIDEO_MPEG2)		{			_car.video_pid = elementary_pid;			_car.video_type = stream_type;		}		/* read the descriptors */		info_length = ((pmt[offset] & 0x0f) << 8) + pmt[offset+1];		offset += 2;		while(info_length != 0)		{			desc_tag = pmt[offset];			desc_length = pmt[offset+1];			offset += 2;			info_length -= 2;			if(desc_tag == TAG_CAROUSEL_ID_DESCRIPTOR)			{				struct carousel_id_descriptor *desc;				desc = (struct carousel_id_descriptor *) &pmt[offset];				if(carousel_id == -1 || carousel_id == (ntohl(desc->carousel_id)))				{					_car.carousel_id = ntohl(desc->carousel_id);					add_dsmcc_pid(&_car, elementary_pid);					vverbose("pid=0x%x carousel_id=%u", elementary_pid, _car.carousel_id);				}			}			else if(desc_tag == TAG_STREAM_ID_DESCRIPTOR)			{				struct stream_id_descriptor *desc;				desc = (struct stream_id_descriptor *) &pmt[offset];				component_tag = desc->component_tag;				vverbose("pid=0x%x component_tag=0x%x", elementary_pid, component_tag);				add_assoc(&_car.assoc, elementary_pid, desc->component_tag, stream_type);			}			else if(desc_tag == TAG_LANGUAGE_DESCRIPTOR && is_audio_stream(stream_type))			{				struct language_descriptor *desc;				desc = (struct language_descriptor *) &pmt[offset];				/* only remember the normal audio stream (not visually impaired stream) */				if(desc->audio_type == 0)				{					_car.audio_pid = elementary_pid;					_car.audio_type = stream_type;				}			}			else			{				vverbose("pid=0x%x descriptor=0x%x", elementary_pid, desc_tag);				vhexdump(&pmt[offset], desc_length);			}			offset += desc_length;			info_length -= desc_length;		}	}	/* did we find a DSM-CC stream */	if(_car.npids == 0)		fatal("Unable to find Carousel Descriptor in PMT");	return &_car;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费视频一区| 欧美一级电影网站| 韩国av一区二区三区四区| 激情文学综合插| 99久久精品一区| 中文字幕在线观看一区| 久久精品国产在热久久| 日韩亚洲欧美高清| 国产成人aaa| 亚洲综合丝袜美腿| 欧美国产一区二区在线观看| 99久久精品国产网站| 蜜乳av一区二区| 国产精品欧美经典| 精品日韩欧美在线| 国产成人精品免费看| 国产日韩影视精品| 国产福利一区二区三区在线视频| 欧美大尺度电影在线| 亚洲国产婷婷综合在线精品| 色婷婷av一区二区三区之一色屋| 亚洲男同性恋视频| 91精品国产欧美日韩| 激情五月播播久久久精品| 久久久精品2019中文字幕之3| 经典三级视频一区| 亚洲欧美日韩在线不卡| 欧美精品在线观看一区二区| 精品一区二区三区在线播放视频| 国产精品久久综合| 欧美一区二区三区四区五区 | 精品国产91亚洲一区二区三区婷婷| 国产成人啪免费观看软件| 亚洲一区二区视频在线观看| 国产精品高潮呻吟| 中文字幕亚洲不卡| 精品国产第一区二区三区观看体验| 欧美少妇xxx| 日韩一区二区三区电影在线观看| 91麻豆福利精品推荐| 日本不卡一区二区| 国产精品88888| 91亚洲精品久久久蜜桃| 欧美午夜在线观看| 欧美日韩国产小视频在线观看| 91麻豆国产精品久久| 成人午夜激情影院| 久久精品国产亚洲a| 一区在线观看免费| 久久精品免费在线观看| 欧美日本在线视频| 91免费版在线| 国产91精品欧美| 国产精品一区二区x88av| 亚洲午夜久久久久久久久电影网 | 在线观看亚洲精品| 精品国产一区二区精华| 亚洲免费av观看| 国内一区二区在线| 欧美熟乱第一页| 精品国产精品网麻豆系列 | 欧美一区二区在线观看| 久久蜜桃av一区二区天堂| 亚洲人成人一区二区在线观看| 一区二区三区在线免费| 天天av天天翘天天综合网 | 看国产成人h片视频| 不卡电影免费在线播放一区| 在线亚洲人成电影网站色www| 91精品婷婷国产综合久久 | 91福利在线看| 亚洲一区二区在线视频| 国产成人亚洲综合a∨婷婷图片| 成人av资源在线观看| 精品久久久网站| 狠狠色综合色综合网络| 日韩欧美中文一区| 国产麻豆欧美日韩一区| 精品国产91亚洲一区二区三区婷婷| 亚洲成人精品影院| 91精品国产欧美一区二区| 香蕉加勒比综合久久| 欧美日韩国产综合久久| 亚洲无人区一区| 成人黄色软件下载| 精品国产区一区| 亚洲精品自拍动漫在线| 色综合欧美在线视频区| 欧美激情综合在线| 99视频一区二区| 精品国产a毛片| 午夜国产精品一区| 色婷婷狠狠综合| 亚洲尤物视频在线| 欧美日本精品一区二区三区| 亚洲精选免费视频| 精品久久久久久久一区二区蜜臀| 国内精品伊人久久久久av一坑| 26uuu精品一区二区在线观看| 国内精品第一页| 亚洲男同性视频| 欧美一三区三区四区免费在线看| 亚洲.国产.中文慕字在线| 日韩精品中午字幕| 成人激情开心网| 国产精品毛片大码女人| 波多野结衣中文一区| 中文字幕色av一区二区三区| 99国产精品视频免费观看| 久久婷婷成人综合色| 成人精品电影在线观看| 国产精品久久精品日日| 欧美日韩在线播| 国产精品白丝jk白祙喷水网站| 欧美国产禁国产网站cc| 日韩欧美一级精品久久| 91麻豆国产福利在线观看| 免费成人小视频| 欧美bbbbb| 国产乱子轮精品视频| 亚洲在线免费播放| 一区二区三区在线免费| 69av一区二区三区| 国产suv精品一区二区三区| 国产欧美精品日韩区二区麻豆天美| 3atv一区二区三区| 色噜噜久久综合| eeuss国产一区二区三区| 国产精品一区二区久久不卡| 日韩成人午夜精品| 日本三级韩国三级欧美三级| 亚洲午夜成aⅴ人片| 亚洲成av人片一区二区| 天堂午夜影视日韩欧美一区二区| 三级久久三级久久久| 蜜臀av性久久久久蜜臀av麻豆 | caoporn国产一区二区| 欧美亚洲国产一区二区三区va| 在线观看网站黄不卡| 欧美精品自拍偷拍| 国产婷婷色一区二区三区四区| 国产欧美日韩精品在线| 亚洲最新视频在线观看| 久久电影网电视剧免费观看| 高清不卡在线观看| 欧美一级高清大全免费观看| 国产欧美精品区一区二区三区| 午夜国产精品一区| 色94色欧美sute亚洲线路二 | 国产91富婆露脸刺激对白| 欧美精品乱码久久久久久| 亚洲黄色小视频| 欧美制服丝袜第一页| 精品电影一区二区| 日韩精品成人一区二区在线| 国产福利一区二区三区| 99久久精品费精品国产一区二区| 精品国产99国产精品| 日本亚洲三级在线| 欧美午夜一区二区| 国产精品久久久久一区二区三区 | 91精品国产aⅴ一区二区| 亚洲欧美日韩一区二区三区在线观看| 麻豆国产精品视频| 91麻豆精品国产91久久久 | 日韩不卡一二三区| 精品视频123区在线观看| 亚洲福利视频一区二区| 91蝌蚪porny成人天涯| 《视频一区视频二区| 99视频在线精品| 亚洲精品日韩综合观看成人91| 国产河南妇女毛片精品久久久 | 视频一区二区三区中文字幕| 91精品国产综合久久久蜜臀粉嫩| 国内精品在线播放| 亚洲国产一区二区三区| 亚洲精品在线一区二区| 成人免费视频caoporn| 亚洲午夜av在线| 久久综合色婷婷| 欧美视频中文字幕| 国产精品一区二区x88av| 亚洲成av人综合在线观看| 国产精品美女www爽爽爽| 91麻豆精品国产91久久久久 | 欧美日韩在线综合| 成人综合在线观看| 国产精品一区一区三区| 一级中文字幕一区二区| 久久久精品2019中文字幕之3| 99久久久免费精品国产一区二区 | 日本大香伊一区二区三区| 亚洲自拍另类综合| 国产欧美日韩综合| 日韩午夜激情视频| 在线播放91灌醉迷j高跟美女 | 丁香一区二区三区| 日韩福利视频导航| 视频一区二区欧美|