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

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

?? dvbsubtitlesfilter.h

?? Teletext module usually used in the DVB area.
?? H
字號(hào):
/* 

(C) Luke Paton 2004.

Copyright notice:

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., 675 Mass Ave, Cambridge, MA 02139, USA.

*/
extern const AMOVIESETUP_FILTER sudDVBTeletextSubtitles;

#include "TeletextInputPin.h"
#include "TeletextOutputPin.h"

#include <mpeg2data.h>
#include <mpeg2bits.h>


enum ts_status_t
{
	TS_WAITING,
	TS_ERROR,
	TS_IN_PAYLOAD
};

struct STeletextSubtitleLine
{
	int row;
	int column;
	colour_types m_Colour;
    colour_types m_BackgroundColour;
	char text[40];
};

typedef char SPage[25][40];

struct SMagazineLine
{
	bool m_bTransmitted;
	unsigned char m_Line[40];
};

struct SMagazine;
struct SMagazineSubPage
{
	// Construction
public :
    SMagazineSubPage(void);
    SMagazineSubPage(const SMagazineSubPage&);
    SMagazineSubPage& operator=(const SMagazineSubPage&);

// Attributes
public :
	bool m_Valid;
	unsigned char m_Language;
	int m_nValidLines;
	int m_nPage;
    int m_nSubPage;
	SMagazineLine m_PageBuffer[25];
    bool m_Displayed;
    __int64 m_StartMilliseconds;
    __int64 m_EndMilliseconds;

    bool m_bErasePage;
    bool m_bNewsflash;
    bool m_bSubtitle;
    bool m_bSupressHeader;
    bool m_bUpdateIndicator;
    bool m_bInterruptedSequence;
    bool m_bInhibitDisplay;
    bool m_bMagazineSerial;

// Operations
public :
	bool
	SetLine
	(
		int line,
		unsigned char* data,
		int mag,
		int last_line,
        SMagazine* magazine,
        unsigned __int64 program_time_ms
	);

	void ClearPageBuffer(void)
	{
		m_nValidLines = 0;
		for (int line = 0; line < 25; line++)
		{
			m_PageBuffer[line].m_bTransmitted = false;
			memset(m_PageBuffer[line].m_Line, ' ', 40);
		}
	}

    void Clear(void)
    {
		m_StartMilliseconds = 0;
		m_EndMilliseconds = 0;
        m_Displayed = false;
	    m_Valid = false;
	    m_Language = 0;
	    m_nPage = 0;
        m_nSubPage = 0;
        ClearPageBuffer();

        m_bErasePage = false;
        m_bNewsflash = false;
        m_bSubtitle = false;
        m_bSupressHeader = false;
        m_bUpdateIndicator = false;
        m_bInterruptedSequence = false;
        m_bInhibitDisplay = false;
        m_bMagazineSerial = false;
    }

	void GenerateIsoTextLines
	(
		vector<STeletextSubtitleLine>& texts,
        BOOL display_heading_line,
        int last_line
	) const;

	bool HasValidLines(void) const;
	bool operator <(const SMagazineSubPage& compare) const
	{
		if (m_StartMilliseconds == compare.m_StartMilliseconds)
		{
			return m_EndMilliseconds < compare.m_EndMilliseconds;
		}
		else
		{
			return m_StartMilliseconds < compare.m_StartMilliseconds;
		}
	}
};

typedef std::list<SMagazineSubPage> SMagazineSubPageInstances;

struct SMagazinePage
{
    std::map<int, SMagazineSubPageInstances> m_SubPages;

// Operations
public :
    void Clear(void);
    void AddSubPage(SMagazineSubPage& sub_page, int sub_page_number);
    bool HasValidSubPages(void);
    int GetPage(void);
};

struct SMagazine
{
    // Construction
public :
    SMagazine(void);
    SMagazine(const SMagazine& );
    SMagazine& operator=(const SMagazine&);

// Attributes
public :
	SMagazineSubPage m_SubPageUnderConstruction;
    std::map<int, SMagazinePage> m_Pages;

// Operations
public :
	bool 
	SetPageLine
	(
		int line,
		unsigned char* data,
        int desired_page,
		int mag
    );

    void AddPageUnderConstruction(void);
};

class CDVBTeletextSubtitles;

class CDVBTeletextPageEnumerator
:
    public CUnknown
    , public IEnumTeletextPages
{
public :
    CDVBTeletextPageEnumerator(CDVBTeletextSubtitles* filter)
    :
        CUnknown(_T("CDVBTeletextPageEnumerator"), NULL)
        , m_pFilter(filter)
    {
        m_nIndex = 0;
    }

    DECLARE_IUNKNOWN

    CComPtr<CDVBTeletextSubtitles> m_pFilter;
    int m_nIndex;

// 
// CUnknown overrides
//
protected :
	STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void** ppv);

    // IEnumTeletextPages methods
protected :
    STDMETHOD(Next)
    (
        /*[in]*/ ULONG cRequest,
        /* [size_is][out][in] */ int* pPage,
        /* [out] */ ULONG *pcReceived
    );

    STDMETHOD(Skip)(/*[in]*/ ULONG cRecords);
    STDMETHOD(Reset)(void);
    STDMETHOD(Clone)(/*[out]*/ IEnumTeletextPages** ppIEnumTeletextPages);
};


class CDVBTeletextSubPageEnumerator
:
    public CUnknown
    , public IEnumTeletextSubPages
{
public :
    CDVBTeletextSubPageEnumerator(int page, CDVBTeletextSubtitles* filter)
    :
        CUnknown(_T("CDVBTeletextSubPageEnumerator"), NULL)
        , m_nPage(page)
        , m_pFilter(filter)
    {
        m_nIndex = 0;
    }

    DECLARE_IUNKNOWN

    CComPtr<CDVBTeletextSubtitles> m_pFilter;
    int m_nPage;
    int m_nIndex;

// 
// CUnknown overrides
//
protected :
	STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void** ppv);

    // IEnumTeletextSubPages methods
protected :
    STDMETHOD(Next)
    ( 
        /*[in]*/ ULONG cRequest,
        /*[size_is][out][in]*/ int *pSubPage,
        /* [out] */ int* pOccurances,
        /*[out]*/ ULONG *pcReceived
    );

    STDMETHOD(Skip)(/*[in]*/ ULONG cRecords);
    STDMETHOD(Reset)(void);
    STDMETHOD(Clone)(/*[out]*/ IEnumTeletextSubPages** ppIEnumTeletextSubPages);
};

class CDVBTeletextSubtitles
:
	public CSource
	, public IDVBTeletextSubtitles
    , public ISpecifyPropertyPages
    , public CPersistStream
{
private : // construction is through CreateInstance
    // Constructor
    CDVBTeletextSubtitles( LPUNKNOWN punk, HRESULT *phr );

public :
    ~CDVBTeletextSubtitles( );

public :
    DECLARE_IUNKNOWN;

//
// DirectShow filter management
//
// Attributes
protected :
    CCritSec m_csFilter;
	CComPtr<IFilterGraph> m_pFilterGraph;
    CComBSTR m_FilePath;

// Operations
protected :
	STDMETHOD(Run)(REFERENCE_TIME tStart);
	CBasePin* GetPin(int n);
	int GetPinCount();

public :
    static CUnknown * WINAPI CreateInstance(LPUNKNOWN punk, HRESULT *phr);

//
// Input pin management
//
// Attributes
protected :
    CTeletextPIDInputPin* m_pTeletextPIDInput;
    CTeletextOutputPin* m_pTeletextOutput;

public :
	int m_nTeletextPid;

	// Mapping from video PID to teletext PID.
	// If there is only one, we use that one.
	std::map<int, int> m_TeletextPids;
	bool m_ConnectedToInputPID;
	int m_ThreadId;

// Operations
protected :
    HRESULT PrintMpeg2Section(IMpeg2Data* pMpeg2Data, SECTION *pSection, DWORD dwPacketLength);
    HRESULT PrintMpeg2Table(IMpeg2Data* pMpeg2Data, PID pid, TID tid, DWORD dwTimeout);

	static void FindTeletextPidThread(void* pParam);

public :
	void StartFixTeletextInputPinThread(void);

//
// DirectShow video output management
//
// Attributes
protected :
	long m_TransparencyPercent;
    COLORREF m_Colours[Colour_Max];
	CComPtr<IVMRMixerBitmap9> m_pVMRMixerBitmap9;

// Operations
protected :

//
// Full page display management
//
// Attributes
protected :

// Operations
protected :

//
// Subtitle management
//
// Attributes
protected :
	int m_nSubtitlesDecimalPage;
	int m_nSubtitlesDecimalSubPage;
    BOOL m_DisplayHeadingLine;
	int m_nLastLine;
    unsigned __int64 m_FirstEventMilliseconds;
	DWORD m_SubtitleDelayTime;
	DWORD m_SubtitleDelayRange;

// Operations
protected :
	void GetSubPagesAt(__int64 sub_page_time, std::vector<SMagazineSubPage*>& results);
	void GetSubPageInstances(std::vector<SMagazineSubPage*>& results);
    DWORD GetIntervalToNextEvent(void);
    void ClearSubPages(void);

//
// Magazine management
//
// Attributes
public :
	std::map<int, SMagazine> m_Magazines;

// Operations
protected :

//
// Pes packet management
//
// Attributes
protected :
	bool m_PesPacketDirty;
	int m_PesPacketLength;
	unsigned char m_PesPacketBuffer[1265536];

// Operations
protected :
    bool CheckPesPacket(void);
	bool ProcessPesPacket(void);

// ts packet management
// Attributes
protected :
	int m_tsPacketCounter;
	ts_status_t m_tsStatus;

// Operations
protected :
	bool ReadTeletextTransportStreamPacket(unsigned char* ts_buf);

public :
	bool ReadTeletextTransportStreamSample(IMediaSample * pSample);

// 
// CUnknown overrides
//
protected :
	STDMETHODIMP NonDelegatingQueryInterface(REFIID riid, void ** ppv);

    STDMETHODIMP GetClassID(OUT CLSID* pCLSID);

protected :
    // ISpecifyPropertyPages methods
    STDMETHODIMP GetPages(CAUUID *pPages);

protected :
    // IDVBTeletextSubtitles methods
public:

	STDMETHOD(set_SubtitlesDecimalPage)(LONG subtitles_page);
	STDMETHOD(get_SubtitlesDecimalPage)(LONG* subtitles_page);
	STDMETHOD(set_SubtitlesDecimalSubPage)(LONG subtitles_subpage);
	STDMETHOD(get_SubtitlesDecimalSubPage)(LONG* subtitles_subpage);
	STDMETHOD(set_SubtitleDelayTime)(/* [in] */ DWORD subtitle_delay_time);
    STDMETHOD(get_SubtitleDelayTime)(/* [out] */ DWORD *subtitle_delay_time);
	STDMETHOD(set_SubtitleDelayRange)(/* [in] */ DWORD subtitle_delay_range);
	STDMETHOD(get_SubtitleDelayRange)(/* [out] */ DWORD *subtitle_delay_range);
	STDMETHOD(set_TeletextPid)(LONG teletext_pid);
	STDMETHOD(get_TeletextPid)(LONG* teletext_pid);
	STDMETHOD(ReadTeletextTransportStreamFile)(BSTR file_path);
	STDMETHOD(get_InputPidMap)(IEnumPIDMap** enum_map);
    STDMETHOD(get_Pages)(IEnumTeletextPages** enum_pages);
    STDMETHOD(get_SubPages)(int page, IEnumTeletextSubPages** enum_subpages);
	STDMETHOD(set_LastLine)(LONG last_line);
	STDMETHOD(get_LastLine)(LONG* last_line);
	STDMETHOD(RefreshDisplay)(void);
	STDMETHOD(ClearDisplay)(void);
	STDMETHOD(set_Colour)(colour_types colour_index, LONG colour);
	STDMETHOD(get_Colour)(colour_types colour_index, LONG* colour);
	STDMETHOD(set_TextMode)(BOOL opaque);
	STDMETHOD(get_TextMode)(BOOL* opaque);
	STDMETHOD(set_TransparencyPercent)(LONG transparency_percent);
	STDMETHOD(get_TransparencyPercent)(LONG* transparency_percent);
	STDMETHOD(set_DisplayHeadingLine)(BOOL display_heading_line);
	STDMETHOD(get_DisplayHeadingLine)(BOOL* display_heading_line);
    STDMETHOD(set_File)(BSTR file_path);
    STDMETHOD(get_File)(BSTR* file_path);
    STDMETHOD(FindTeletextPid)(void);

protected :
    // CPersistStream methods
    
    HRESULT WriteToStream(IStream* stream);
    HRESULT ReadFromStream(IStream* stream);
    int SizeMax(void);
    void LockFilter() { m_csFilter.Lock(); }
    void UnlockFilter() { m_csFilter.Unlock(); }

    friend class CTeletextOutputPin;
public:
};

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91精品福利在线一区二区三区 | 国产91清纯白嫩初高中在线观看 | 欧美日韩三级视频| 国产精品久久久久永久免费观看| 麻豆精品一区二区三区| 久久亚洲综合av| 国产又粗又猛又爽又黄91精品| 日韩一级黄色大片| 国产精一区二区三区| 久久久91精品国产一区二区三区| 精品在线视频一区| 国产精品久久久久久久久免费相片 | 一区二区中文字幕在线| 成人午夜免费电影| 亚洲一区视频在线观看视频| 欧美午夜电影一区| 日韩在线a电影| 日韩精品在线看片z| 精品一区二区免费在线观看| 欧美成人aa大片| jizz一区二区| 亚洲网友自拍偷拍| 7777女厕盗摄久久久| 亚洲综合视频在线| 欧美日韩国产大片| 麻豆成人久久精品二区三区红| 欧美一区二区三区四区五区 | 亚洲一区二区中文在线| 欧美一级理论片| 日韩一区二区三区高清免费看看| 全部av―极品视觉盛宴亚洲| 国产日本欧洲亚洲| 91久久国产最好的精华液| 日日骚欧美日韩| 国产精品美女久久久久高潮| 色综合久久中文字幕| 天天色综合成人网| 中文字幕欧美一区| 欧美剧情片在线观看| 日本欧美一区二区在线观看| 国产精品久久久久国产精品日日| 色狠狠综合天天综合综合| 亚洲一区二区三区视频在线播放 | 日韩免费性生活视频播放| 国产99久久久国产精品潘金网站| 亚洲一区在线视频| 精品久久99ma| 欧美久久婷婷综合色| 国产91精品久久久久久久网曝门| 一区二区三区日本| 一区视频在线播放| 日韩欧美国产午夜精品| 国产成人午夜视频| 麻豆国产欧美日韩综合精品二区 | 久久久久久久久一| 一本色道久久综合狠狠躁的推荐| 美日韩一区二区三区| 成人免费在线视频观看| 亚洲精品在线观看视频| 在线观看一区二区视频| www.亚洲色图| 国产一区二区免费视频| 五月婷婷久久丁香| 亚洲午夜精品一区二区三区他趣| 精品盗摄一区二区三区| 欧美色手机在线观看| 99热99精品| 国产91精品精华液一区二区三区| 看片的网站亚洲| 亚洲成人动漫在线免费观看| 亚洲一区二区高清| 亚洲欧美日韩成人高清在线一区| 国产精品午夜在线| 国产欧美中文在线| 2023国产精品自拍| 2欧美一区二区三区在线观看视频| 欧美亚洲国产一区在线观看网站| 成人av电影在线播放| 成人久久久精品乱码一区二区三区| 免费观看日韩电影| 亚洲h精品动漫在线观看| 亚洲成av人片在线观看无码| 亚洲精品免费在线播放| 亚洲欧洲三级电影| 亚洲视频免费在线观看| 综合久久久久综合| 久久色在线观看| 国产片一区二区| 国产片一区二区| 久久午夜老司机| 欧美精品一区二区三区很污很色的 | 久久久国产一区二区三区四区小说| 91精品久久久久久久99蜜桃| 日本高清不卡视频| 欧美综合一区二区| 欧美日韩国产影片| 欧美一区二区三区日韩| 制服丝袜成人动漫| 欧美一区二区三区公司| 精品女同一区二区| 日韩欧美123| 久久久午夜电影| 国产精品久久午夜夜伦鲁鲁| 亚洲色大成网站www久久九九| 亚洲一区二区三区不卡国产欧美| 婷婷开心激情综合| 日韩高清在线不卡| 成人av网站在线观看免费| 成人免费看片app下载| 欧美视频在线播放| 欧美一区二区三区在线观看| 久久综合中文字幕| 亚洲最新视频在线播放| 日本欧美在线看| 国产九色sp调教91| 欧美日韩国产高清一区二区三区 | 国产精品私人影院| 日韩美女啊v在线免费观看| 亚洲欧美日韩中文播放| 老司机免费视频一区二区三区| 国产综合色视频| a亚洲天堂av| 精品国产乱码久久久久久久| 国产精品福利一区二区三区| 一区二区三区欧美亚洲| 国产福利一区二区| 色偷偷成人一区二区三区91 | 欧美日本一道本在线视频| 欧美视频精品在线观看| 精品国产伦一区二区三区免费 | 久久一留热品黄| **性色生活片久久毛片| 日韩毛片精品高清免费| 激情综合色综合久久| av电影天堂一区二区在线观看| 色94色欧美sute亚洲线路二 | 26uuu国产日韩综合| 久久久精品一品道一区| 免费精品视频最新在线| 99久久久久免费精品国产 | 亚洲午夜日本在线观看| 菠萝蜜视频在线观看一区| 91精品福利在线一区二区三区 | 制服视频三区第一页精品| 国产欧美一区二区三区在线看蜜臀 | 日韩午夜精品电影| 国产欧美一区二区在线| 日韩成人一级大片| 99在线视频精品| 精品久久国产老人久久综合| 一级特黄大欧美久久久| 国产91精品一区二区麻豆网站| 9191成人精品久久| 亚洲欧美在线aaa| 国产91精品露脸国语对白| 制服丝袜av成人在线看| 国产网站一区二区三区| 国产在线精品一区二区不卡了 | 午夜精品一区二区三区三上悠亚| 国产成人日日夜夜| 国产亚洲午夜高清国产拍精品| 亚洲成人av中文| av不卡免费电影| 国产精品夫妻自拍| 国产成人精品免费| 国产亚洲精品福利| 老司机午夜精品99久久| 69精品人人人人| 麻豆国产欧美日韩综合精品二区| 色婷婷综合久久久久中文一区二区| 国产精品三级av| 粉嫩aⅴ一区二区三区四区| 日韩欧美在线观看一区二区三区| 日本aⅴ免费视频一区二区三区 | 欧美日韩一区二区三区视频| 亚洲综合在线五月| av不卡免费在线观看| 中文字幕欧美国产| bt欧美亚洲午夜电影天堂| 中文字幕精品在线不卡| 97精品电影院| 亚洲欧美激情插| 91美女在线看| 日韩在线一区二区三区| 91精品中文字幕一区二区三区| 国产婷婷一区二区| 99视频在线精品| 国产精品理论片在线观看| 色又黄又爽网站www久久| 亚洲免费av观看| 欧美在线一二三| 免费高清视频精品| 日韩欧美国产一区二区在线播放| 韩国中文字幕2020精品| 欧美精品一区二区三区在线播放| 韩国女主播一区| 欧美韩国日本综合| 91丨porny丨国产入口| 一区二区激情小说| 91精品黄色片免费大全|