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

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

?? servicefilter.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

servicefilter.c

Filter all packets for a service include the PMT, rewriting the PAT sent out in
the output to only include this service.

*/
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <stdint.h>
#include <assert.h>
#include <dvbpsi/dvbpsi.h>
#include <dvbpsi/psi.h>
#include <dvbpsi/pat.h>

#include "multiplexes.h"
#include "services.h"
#include "dvb.h"
#include "ts.h"
#include "main.h"
#include "cache.h"
#include "logging.h"

typedef struct ServiceFilter_t
{
    Multiplex_t  *multiplex;
    Service_t    *nextservice;
    Service_t    *service;
    bool          rewritepat;
    unsigned int  version;
    unsigned char packetcounter;
    TSPacket_t    patpacket;
}ServiceFilter_t;

static int ServiceFilterFilterPacket(PIDFilter_t *pidfilter, void *arg, uint16_t pid, TSPacket_t *packet);
static TSPacket_t *ServiceFilterProcessPacket(PIDFilter_t *pidfilter, void *arg, TSPacket_t *packet);
static void ServiceFilterPATRewrite(TSPacket_t *packet, int tsid, int version, int serviceid, int pmtpid);

PIDFilter_t *ServiceFilterCreate(TSFilter_t *tsfilter, PacketOutput outputpacket,void *oparg)
{
    PIDFilter_t *result = NULL;
    ServiceFilter_t *state = calloc(1, sizeof(ServiceFilter_t));
    if (state)
    {
        result = PIDFilterSetup(tsfilter,
                    ServiceFilterFilterPacket, state,
                    ServiceFilterProcessPacket, state,
                    outputpacket, oparg);
        if (result == NULL)
        {
            free(state);
        }
    }
    return result;
}

void ServiceFilterDestroy(PIDFilter_t *filter)
{
    ServiceFilter_t *state = (ServiceFilter_t *)filter->pparg;
    assert(filter->filterpacket == ServiceFilterFilterPacket);
    PIDFilterFree(filter);
    free(state);
}

void ServiceFilterServiceSet(PIDFilter_t *filter, Service_t *service)
{
    ServiceFilter_t *state = (ServiceFilter_t *)filter->fparg;
    assert(filter->filterpacket == ServiceFilterFilterPacket);
    state->nextservice = service;
}

Service_t *ServiceFilterServiceGet(PIDFilter_t *filter)
{
    ServiceFilter_t *state = (ServiceFilter_t *)filter->fparg;
    assert(filter->filterpacket == ServiceFilterFilterPacket);
    return state->service;
}

static int ServiceFilterFilterPacket(PIDFilter_t *pidfilter, void *arg, uint16_t pid, TSPacket_t *packet)
{
    int i;
    ServiceFilter_t *state = (ServiceFilter_t *)arg;

    if (state->service != state->nextservice)
    {
        state->service = state->nextservice;
        state->multiplex = CurrentMultiplex;
        state->rewritepat = TRUE;
    }

    if (state->service)
    {
        int count;
        PID_t *pids;

        /* Handle PAT and PMT pids */
        if ((pid == 0) || (pid == state->service->pmtpid))
        {
            return 1;
        }

        pids = CachePIDsGet(state->service, &count);
        for (i = 0; i < count; i ++)
        {
            if (pid == pids[i].pid)
            {
                return 1;
            }
        }
    }
    return 0;
}

static TSPacket_t *ServiceFilterProcessPacket(PIDFilter_t *pidfilter, void *arg, TSPacket_t *packet)
{
    ServiceFilter_t *state = (ServiceFilter_t *)arg;
    unsigned short pid = TSPACKET_GETPID(*packet);
    /* If this is the PAT PID we need to rewrite it! */
    if (pid == 0)
    {
        if (state->rewritepat)
        {
            state->version ++;
            ServiceFilterPATRewrite(&state->patpacket, state->multiplex->tsid, state->version, state->service->id, state->service->pmtpid);
            state->rewritepat = FALSE;
        }

        TSPACKET_SETCOUNT(state->patpacket, state->packetcounter ++);
        packet = &state->patpacket;
    }
    return packet;
}

static void ServiceFilterPATRewrite(TSPacket_t *packet, int tsid, int version, int serviceid, int pmtpid)
{
    dvbpsi_pat_t pat;
    dvbpsi_psi_section_t* section;
    uint8_t *data;
    int len,i;
    dvbpsi_InitPAT(&pat, tsid, version, 1);
    dvbpsi_PATAddProgram(&pat, serviceid, pmtpid);

    section = dvbpsi_GenPATSections(&pat, 1);

    // Fill in header
    packet->header[0] = 0x47;
    packet->header[1] = 0x40; // Payload unit start set
    packet->header[2] = 0x00;
    packet->header[3] = 0x10;
    packet->payload[0] = 0;   // Pointer field

    data = section->p_data;
    len = section->i_length + 3;

    if (len > (sizeof(TSPacket_t) - 5))
    {
        printlog(LOG_ERROR, "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n"
							"! ERROR PAT too big to fit in 1 TS packet !\n"
							"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!\n");
    }

    for (i = 0; i < len; i ++)
    {
        packet->payload[1 + i] = data[i];
    }
    for (i = len + 1; i < 184; i ++)
    {
        packet->payload[i] = 0xff;
    }
    dvbpsi_DeletePSISections(section);
    dvbpsi_EmptyPAT(&pat);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本亚洲一区二区| 成人午夜在线免费| 成人看片黄a免费看在线| 欧美性大战久久| 国产精品视频一二三区| 日韩av在线播放中文字幕| 91视频在线看| 中文字幕免费不卡在线| 人禽交欧美网站| 欧美午夜精品久久久久久孕妇| 国产午夜一区二区三区| 蜜桃视频一区二区三区在线观看| 91网站最新地址| 中文字幕高清不卡| 国产成人精品综合在线观看| 欧美乱妇23p| 亚洲综合视频网| jvid福利写真一区二区三区| 久久精品水蜜桃av综合天堂| 另类的小说在线视频另类成人小视频在线| 色播五月激情综合网| 中文字幕一区二区三区在线不卡| 国产美女av一区二区三区| 日韩午夜在线观看| 日韩中文字幕麻豆| 欧美一区二区三区四区五区| 亚洲成人7777| 91精品国产色综合久久久蜜香臀| 亚洲无人区一区| 欧美日本国产视频| 日韩一区精品字幕| 51午夜精品国产| 免费看日韩精品| 欧美videossexotv100| 麻豆国产91在线播放| 日韩精品一区二区三区视频在线观看| 日韩电影在线一区二区| 91精品婷婷国产综合久久| 日韩黄色片在线观看| 欧美白人最猛性xxxxx69交| 日本va欧美va瓶| 欧美v国产在线一区二区三区| 免费观看在线色综合| 欧美精品日韩一本| 久久66热re国产| 国产无遮挡一区二区三区毛片日本| 国产成都精品91一区二区三| 日本一区二区三区在线不卡| 成人动漫一区二区在线| 亚洲欧洲精品一区二区精品久久久| 一本久久a久久精品亚洲| 亚洲综合色丁香婷婷六月图片| 欧美性一二三区| 捆绑调教美女网站视频一区| 久久久精品人体av艺术| 色偷偷久久一区二区三区| 五月婷婷久久综合| 国产亚洲一区二区三区在线观看| 成人禁用看黄a在线| 亚洲最色的网站| 日韩精品中午字幕| av网站免费线看精品| 亚洲大片精品永久免费| 亚洲精品一区二区三区香蕉| 不卡大黄网站免费看| 婷婷开心激情综合| 久久精品一区二区三区四区| 色婷婷亚洲精品| 久久成人综合网| 亚洲欧洲精品天堂一级| 91精品久久久久久蜜臀| 99麻豆久久久国产精品免费优播| 亚洲成av人**亚洲成av**| 国产清纯白嫩初高生在线观看91 | 岛国av在线一区| 亚洲免费资源在线播放| 欧美成人精品二区三区99精品| 国产黄色精品网站| 婷婷国产v国产偷v亚洲高清| 国产欧美日产一区| 欧美电影在线免费观看| 成人午夜免费av| 蜜臀精品一区二区三区在线观看| 国产精品久久毛片| 欧美成人一级视频| 欧美亚洲丝袜传媒另类| 国产成人在线免费观看| 日韩黄色免费电影| 一级女性全黄久久生活片免费| 久久只精品国产| 91精品国产麻豆国产自产在线| av一区二区三区黑人| 经典一区二区三区| 天天综合天天综合色| 亚洲精品乱码久久久久久日本蜜臀| 精品粉嫩超白一线天av| 欧美精品一卡二卡| 欧洲日韩一区二区三区| 成人国产一区二区三区精品| 精品一区二区国语对白| 日日夜夜免费精品| 亚洲成人动漫av| 一区二区三区蜜桃网| 国产精品系列在线| 国产亚洲美州欧州综合国| 精品久久五月天| 日韩一区二区三区免费看| 欧美日本在线播放| 欧美日韩高清影院| 欧美视频在线观看一区| 在线观看网站黄不卡| 日本电影欧美片| 国产suv精品一区二区883| 韩国av一区二区| 极品尤物av久久免费看| 狠狠网亚洲精品| 国产在线精品免费| 国产一区二区三区观看| 狠狠色丁香久久婷婷综合丁香| 久久精品国产在热久久| 蜜臀av一区二区在线免费观看| 日本va欧美va欧美va精品| 免费成人av在线| 美腿丝袜亚洲三区| 麻豆视频一区二区| 国产一区二区三区| 国产成a人亚洲精品| 暴力调教一区二区三区| 日本道精品一区二区三区| 欧美日韩中文另类| 日韩欧美色综合| 欧美国产一区在线| 日韩美女精品在线| 亚洲成人在线观看视频| 久久99精品久久久久婷婷| 国内精品视频一区二区三区八戒| 国产剧情一区二区| 99在线精品一区二区三区| 色婷婷精品大视频在线蜜桃视频| 欧美日韩精品一区二区三区 | 国产精品影视天天线| 成人av网站大全| 欧美调教femdomvk| 久久午夜国产精品| 亚洲日本免费电影| 欧美aⅴ一区二区三区视频| 国产精品一卡二卡在线观看| 91看片淫黄大片一级在线观看| 一本到高清视频免费精品| 精品污污网站免费看| 日韩欧美亚洲国产另类| 中文字幕av不卡| 亚洲国产婷婷综合在线精品| 久久99国产精品成人| 91国偷自产一区二区三区观看| 91精品国产乱码| 中文字幕视频一区| 久久精品国产亚洲aⅴ| av亚洲精华国产精华精| 欧美一级欧美一级在线播放| 国产精品欧美久久久久一区二区| 亚洲成人福利片| 成人深夜视频在线观看| 56国语精品自产拍在线观看| 国产精品美女久久久久久久久久久| 亚洲aⅴ怡春院| 成人激情免费视频| 日韩视频在线你懂得| 一区二区三区欧美日| 高清不卡一区二区| 日韩免费高清电影| 亚洲成人免费电影| 99国产一区二区三精品乱码| 日韩精品一区二区三区视频在线观看| 亚洲精品你懂的| 成人免费黄色大片| 久久夜色精品国产噜噜av| 丝袜a∨在线一区二区三区不卡| 不卡的看片网站| 国产视频在线观看一区二区三区| 日韩电影在线观看网站| 91国偷自产一区二区三区观看| 国产三级久久久| 久草在线在线精品观看| 91麻豆精品国产91久久久资源速度 | 成人免费视频caoporn| 精品捆绑美女sm三区| 图片区小说区区亚洲影院| 在线视频一区二区三| 自拍偷在线精品自拍偷无码专区| 青青草一区二区三区| 欧美日韩高清一区| 亚洲高清免费观看高清完整版在线观看| 成人99免费视频| 国产精品毛片久久久久久久| 国产在线国偷精品产拍免费yy | 午夜激情一区二区| 欧美日韩精品一区二区| 午夜久久久久久久久| 欧美日韩视频专区在线播放|