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

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

?? strmctl.h

?? 用DirectX制作高級動畫-[Advanced.Animation.with.DirectX]
?? H
字號:
//------------------------------------------------------------------------------
// File: StrmCtl.h
//
// Desc: DirectShow base classes.
//
// Copyright (c) 1996-2002 Microsoft Corporation.  All rights reserved.
//------------------------------------------------------------------------------


#ifndef __strmctl_h__
#define __strmctl_h__

class CBaseStreamControl : public IAMStreamControl
{
public:
    // Used by the implementation
    enum StreamControlState
    { STREAM_FLOWING = 0x1000,
      STREAM_DISCARDING
    };

private:
    enum StreamControlState	m_StreamState;		// Current stream state
    enum StreamControlState	m_StreamStateOnStop;	// State after next stop
						// (i.e.Blocking or Discarding)

    REFERENCE_TIME	m_tStartTime;	    // MAX_TIME implies none
    REFERENCE_TIME	m_tStopTime;	    // MAX_TIME implies none
    DWORD		m_dwStartCookie;    // Cookie for notification to app
    DWORD		m_dwStopCookie;	    // Cookie for notification to app
    volatile BOOL       m_bIsFlushing;        // No optimization pls!
    volatile BOOL	m_bStopSendExtra;   // bSendExtra was set
    volatile BOOL	m_bStopExtraSent;   // the extra one was sent

    CCritSec		m_CritSec;	    // CritSec to guard above attributes

    // Event to fire when we can come
    // out of blocking, or to come out of waiting
    // to discard if we change our minds.
    //
    CAMEvent			m_StreamEvent;

    // All of these methods execute immediately.  Helpers for others.
    //
    void ExecuteStop();
    void ExecuteStart();
    void CancelStop();
    void CancelStart();

    // Some things we need to be told by our owning filter
    // Your pin must also expose IAMStreamControl when QI'd for it!
    //
    IReferenceClock *	m_pRefClock;	    // Need it to set advises
					    // Filter must tell us via
					    // SetSyncSource
    IMediaEventSink *   m_pSink;            // Event sink
					    // Filter must tell us after it
					    // creates it in JoinFilterGraph()
    FILTER_STATE	m_FilterState;	    // Just need it!
					    // Filter must tell us via
					    // NotifyFilterState
    REFERENCE_TIME	m_tRunStart;	    // Per the Run call to the filter

    // This guy will return one of the three StreamControlState's.  Here's what
    // the caller should do for each one:
    //
    // STREAM_FLOWING:		Proceed as usual (render or pass the sample on)
    // STREAM_DISCARDING:	Calculate the time 'til *pSampleStop and wait
    //				that long for the event handle
    //				(GetStreamEventHandle()).  If the wait
    //				expires, throw the sample away.  If the event
    //				fires, call me back - I've changed my mind.
    //
    enum StreamControlState CheckSampleTimes( const REFERENCE_TIME * pSampleStart,
					      const REFERENCE_TIME * pSampleStop );

public:
    // You don't have to tell us much when we're created, but there are other
    // obligations that must be met.  See SetSyncSource & NotifyFilterState
    // below.
    //
    CBaseStreamControl();
    ~CBaseStreamControl();

    // If you want this class to work properly, there are thing you need to
    // (keep) telling it.  Filters with pins that use this class
    // should ensure that they pass through to this method any calls they
    // receive on their SetSyncSource.

    // We need a clock to see what time it is.  This is for the
    // "discard in a timely fashion" logic.  If we discard everything as
    // quick as possible, a whole 60 minute file could get discarded in the
    // first 10 seconds, and if somebody wants to turn streaming on at 30 
    // minutes into the file, and they make the call more than a few seconds
    // after the graph is run, it may be too late!
    // So we hold every sample until it's time has gone, then we discard it.
    // The filter should call this when it gets a SetSyncSource
    //
    void SetSyncSource( IReferenceClock * pRefClock )
    {
	CAutoLock lck(&m_CritSec);
	if (m_pRefClock) m_pRefClock->Release();
	m_pRefClock = pRefClock;
	if (m_pRefClock) m_pRefClock->AddRef();
    }

    // Set event sink for notifications
    // The filter should call this in its JoinFilterGraph after it creates the
    // IMediaEventSink
    //
    void SetFilterGraph( IMediaEventSink *pSink ) {
        m_pSink = pSink;
    }

    // Since we schedule in stream time, we need the tStart and must track the
    // state of our owning filter.
    // The app should call this ever state change
    //
    void NotifyFilterState( FILTER_STATE new_state, REFERENCE_TIME tStart = 0 );

    // Filter should call Flushing(TRUE) in BeginFlush,
    // and Flushing(FALSE) in EndFlush.
    //
    void Flushing( BOOL bInProgress );


    // The two main methods of IAMStreamControl

    // Class adds default values suitable for immediate
    // muting and unmuting of the stream.

    STDMETHODIMP StopAt( const REFERENCE_TIME * ptStop = NULL,
			 BOOL bSendExtra = FALSE,
			 DWORD dwCookie = 0 );
    STDMETHODIMP StartAt( const REFERENCE_TIME * ptStart = NULL,
		    	  DWORD dwCookie = 0 );
    STDMETHODIMP GetInfo( AM_STREAM_INFO *pInfo);

    // Helper function for pin's receive method.  Call this with
    // the sample and we'll tell you what to do with it.  We'll do a
    // WaitForSingleObject within this call if one is required.  This is
    // a "What should I do with this sample?" kind of call. We'll tell the
    // caller to either flow it or discard it.
    // If pSample is NULL we evaluate based on the current state
    // settings
    enum StreamControlState CheckStreamState( IMediaSample * pSample );

private:
    // These don't require locking, but we are relying on the fact that
    // m_StreamState can be retrieved with integrity, and is a snap shot that
    // may have just been, or may be just about to be, changed.
    HANDLE GetStreamEventHandle() const { return m_StreamEvent; }
    enum StreamControlState GetStreamState() const { return m_StreamState; }
    BOOL IsStreaming() const { return m_StreamState == STREAM_FLOWING; }
};

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区国产| 国产精品久久99| 91视频xxxx| 成人一区二区三区视频在线观看| 美女网站一区二区| 日日夜夜免费精品| 日韩国产高清在线| 日韩av电影一区| 日韩av在线发布| 日本视频在线一区| 国模少妇一区二区三区| 国产一区二区在线观看视频| 狠狠色丁香久久婷婷综| 久久99精品国产麻豆婷婷| 蜜臀av一区二区在线免费观看 | 国产成人日日夜夜| 国产**成人网毛片九色| 99在线视频精品| 在线观看精品一区| 在线成人高清不卡| 日韩欧美国产一区二区三区| 亚洲精品在线免费观看视频| 日本一区二区综合亚洲| 1024国产精品| 亚洲va国产天堂va久久en| 免费看欧美美女黄的网站| 国产很黄免费观看久久| 色综合久久88色综合天天6| 欧美在线三级电影| 久久蜜桃av一区精品变态类天堂| 中文字幕av资源一区| 亚洲一区电影777| 国产一区二区视频在线| 一本一道波多野结衣一区二区| 欧美色手机在线观看| 日韩精品一区二区三区视频| 国产精品久久久久久久久动漫 | 丰满亚洲少妇av| 欧美性感一类影片在线播放| 精品久久久久一区| 一区二区在线看| 国产一本一道久久香蕉| 欧美视频完全免费看| 久久综合九色综合久久久精品综合| 国产精品蜜臀av| 看片网站欧美日韩| 色综合天天综合在线视频| 欧美不卡123| 亚洲国产精品一区二区尤物区| 国产一区二区三区精品视频| 欧美视频一二三区| 自拍偷自拍亚洲精品播放| 紧缚奴在线一区二区三区| 日本韩国精品一区二区在线观看| 亚洲精品在线免费观看视频| 亚洲国产精品久久艾草纯爱| 成熟亚洲日本毛茸茸凸凹| 日韩午夜电影av| 亚洲电影一区二区| 成人亚洲一区二区一| www久久久久| 丝袜诱惑亚洲看片| 日本丶国产丶欧美色综合| 国产欧美视频一区二区三区| 麻豆精品新av中文字幕| 欧美日本乱大交xxxxx| 亚洲视频免费看| 成人免费视频一区二区| 国产无一区二区| 国产尤物一区二区| 欧美v国产在线一区二区三区| 亚洲h在线观看| 欧美三区在线观看| 亚洲国产日韩在线一区模特| 一本大道久久a久久综合| 国产精品高潮呻吟久久| 国产mv日韩mv欧美| 欧美国产成人精品| 高清不卡一区二区| 国产嫩草影院久久久久| 国产福利一区二区三区视频| 久久亚洲影视婷婷| 国产sm精品调教视频网站| 欧美高清在线视频| eeuss影院一区二区三区| 国产精品大尺度| 一本久道久久综合中文字幕| 一区二区三区在线影院| 欧美日韩免费电影| 日本中文字幕一区二区有限公司| 91精品在线观看入口| 麻豆成人在线观看| 国产色产综合产在线视频| 成人性生交大片免费看视频在线| 日韩一区在线看| 欧美丝袜自拍制服另类| 免费美女久久99| 中文字幕国产一区| 在线精品视频一区二区| 性做久久久久久久免费看| 日韩欧美国产三级电影视频| 激情丁香综合五月| 中文字幕亚洲在| 欧美日韩国产综合视频在线观看| 麻豆精品久久久| 国产三区在线成人av| 欧洲国内综合视频| 韩国视频一区二区| 亚洲免费观看视频| 日韩欧美一区二区视频| 国产不卡视频在线观看| 亚洲国产一区视频| 国产喂奶挤奶一区二区三区| 欧美中文字幕一区二区三区亚洲| 男女性色大片免费观看一区二区 | 国产成人av电影在线播放| 中文字幕一区二区三区乱码在线 | 久久精品亚洲麻豆av一区二区| 成人开心网精品视频| 亚洲18色成人| 国产日韩三级在线| 8x8x8国产精品| 福利电影一区二区| 蜜桃一区二区三区在线| 亚洲久本草在线中文字幕| 欧美精品一区二区三| 色哟哟日韩精品| 高清在线观看日韩| 奇米777欧美一区二区| 亚洲精品亚洲人成人网| 欧美高清在线一区| 日韩一区二区在线播放| 欧美中文字幕亚洲一区二区va在线| 国产精品香蕉一区二区三区| 日日夜夜精品视频天天综合网| 亚洲激情自拍偷拍| 国产精品欧美一区二区三区| 日韩欧美高清dvd碟片| 欧美日韩免费一区二区三区 | 欧美日韩午夜在线| 91在线porny国产在线看| 丁香桃色午夜亚洲一区二区三区| 奇米888四色在线精品| 香蕉影视欧美成人| 亚洲国产乱码最新视频 | 欧美伦理电影网| 色婷婷综合久久| 91在线观看视频| av不卡免费在线观看| 国产大陆精品国产| 国产一区二区伦理片| 精品无人区卡一卡二卡三乱码免费卡 | 在线观看日韩av先锋影音电影院| 成人一区二区三区视频| 成人午夜激情影院| 丁香桃色午夜亚洲一区二区三区| 国产精品一区二区久激情瑜伽| 国内不卡的二区三区中文字幕| 韩国精品主播一区二区在线观看 | 激情综合五月天| 老司机精品视频线观看86| 蜜桃视频免费观看一区| 久久99精品国产麻豆不卡| 黑人巨大精品欧美黑白配亚洲| 久99久精品视频免费观看| 韩国午夜理伦三级不卡影院| 狠狠狠色丁香婷婷综合久久五月| 国产一区二区调教| 成人午夜在线播放| 91最新地址在线播放| 91福利资源站| 777色狠狠一区二区三区| 日韩三级电影网址| 国产三级精品在线| 综合婷婷亚洲小说| 亚洲高清免费视频| 韩国精品在线观看| av午夜精品一区二区三区| 91首页免费视频| 欧美一区二区精品| 国产欧美一区二区三区在线看蜜臀| 欧美国产精品一区二区| 一区二区三区四区在线免费观看| 亚洲成人精品影院| 国产在线日韩欧美| 一本在线高清不卡dvd| 91精品午夜视频| 中文字幕乱码亚洲精品一区| 亚洲午夜在线电影| 国产在线精品视频| 欧美最新大片在线看| 精品国产精品一区二区夜夜嗨| 中文字幕一区二区日韩精品绯色| 一区二区三区在线看| 激情小说亚洲一区| 欧美影院精品一区| 亚洲国产精品精华液ab| 无吗不卡中文字幕| 99久久99久久久精品齐齐| 欧美一区二区三区在线电影|