CPosPassThru 類別

cpospassthru 基類階層

CPosPassThru類別會處理轉換篩選的搜尋命令,方法是將它們傳遞給下一個篩選準則。

當應用程式搜尋篩選圖形時,篩選圖形管理員會向轉譯器篩選提供搜尋命令。 此命令會透過每個篩選器的輸出釘選上游傳遞,直到達到可執行命令 (的篩選準則(如果有任何) )。 如需詳細資訊,請參閱 搜尋。 類別會將 CPosPassThru 所有搜尋命令傳遞至上游篩選器上的輸出圖釘,如下圖所示。

cpospassthru 類別會傳送上游的搜尋命令。

雖然此類別是在基類庫中提供的,但 DirectShow 也會在 Quartz.dll 中提供相同的類別。 使用 Quartz.dll 版本可以稍微減少篩選中的程式碼大小,因為類別是在執行時間從 DLL 載入的。 若要使用該版本,請呼叫 CreatePosPassThru 函數。

在輸出釘選的 NonDelegatingQueryInterface 方法中,每當要求的介面是 IMediaSeekingIMediaPosition時,委派給 CPosPassThru 物件,如下列程式碼所示:

// The following member variables are assumed:
IPin *m_pInput;    // Pointer to the input pin on your filter.
IUnknown *m_pPos;  // Pointer to the CPosPassThru object.

STDMETHODIMP CMyPin::NonDelegatingQueryInterface(REFIID riid, void **ppv)
{
    HRESULT hr
    if (riid == IID_IMediaPosition || riid == IID_IMediaSeeking) 
    {
        if (m_pPos == NULL) 
        {
            // We have not created the CPosPassThru object yet. Do so now.
            hr = CreatePosPassThru(GetOwner(), FALSE, m_pInput, &m_pPos);
            if (FAILED(hr)) return hr;
        }
        return m_pPos->QueryInterface(riid, ppv);
    } 
    else
    {
         // Other interfaces (not shown).
    }
}

~CMyPin::CMyPin() 
{
    // Release the CPosPassThruObject.
    if (m_pPos != NULL) m_pPos->Release();
}

除非有注明,否則這個類別中的所有 IMediaPositionIMediaSeeking 方法都會呼叫連接的釘選上的對應方法,並傳回結果。

公用方法 Description
CPosPassThru 函式方法。
ForceRefresh 已過時。
GetMediaTime 抓取目前樣本上的時間戳記。 虛擬。
IMediaPosition 方法 Description
取得 _ 持續時間 捕獲資料流程的持續時間。
put _ CurrentPosition 設定目前的位置,相對於資料流程的總持續時間。
取得 _ StopTime 抓取將停止播放的時間(相對於資料流程的持續時間)。
put _ StopTime 設定播放將停止的時間,相對於資料流程的持續時間。
取得 _ PrerollTime 抓取在開始位置之前將排入佇列的資料量。
put _ PrerollTime 設定要在開始位置之前排入佇列的資料量。
取得 _ 率 捕獲播放速率。
put _ 率 設定播放速率。
取得 _ CurrentPosition 抓取目前的位置,相對於資料流程的總持續時間。
CanSeekForward 判斷資料流程是否可以向後 seeked。
CanSeekBackward 判斷資料流程是否可以向前 seeked。
IMediaSeeking 方法 Description
CheckCapabilities 查詢資料流程是否已指定搜尋功能。
ConvertTimeFormat 從一種時間格式轉換成另一種格式。
GetAvailable 抓取搜尋有效的時間範圍。
GetCapabilities 抓取資料流程的所有搜尋功能。
GetCurrentPosition 抓取目前的位置,相對於資料流程的總持續時間。
GetDuration 捕獲資料流程的持續時間。
GetPositions 抓取目前的位置和停止位置,相對於資料流程的總持續時間。
GetPreroll 抓取在開始位置之前將排入佇列的資料量。
GetRate 捕獲播放速率。
GetStopPosition 抓取將停止播放的時間(相對於資料流程的持續時間)。
GetTimeFormat 抓取目前的時間格式。
IsFormatSupported 判斷是否支援指定的時間格式。
IsUsingTimeFormat 判斷指定的時間格式是否為目前使用中的格式。
QueryPreferredFormat 抓取資料流程的慣用時間格式。
SetPositions 設定目前的位置和停止位置。
SetRate 設定播放速率。
SetTimeFormat 設定時間格式。
輔助函式 Description
CreatePosPassThru 建立 CPosPassThruCRendererPosPassThru 物件。

規格需求

需求
標頭
Ctlutil (包含: .h)
程式庫
(零售組建的 Strmbase .lib) ;
Strmbasd (debug 組建)