Megosztás a következőn keresztül:


DMO burkolószűrő

[A laphoz társított funkció, DirectShowegy régi funkció. MediaPlayer, IMFMediaEngineés Audio/Video Capture a Media Foundation. Ezek a funkciók Windows 10-hez és Windows 11-hez lettek optimalizálva. A Microsoft határozottan javasolja, hogy az új kód MediaPlayer, IMFMediaEngine és Audio/Video Capture eszközt használja a Media FoundationDirectShowhelyett, ha lehetséges. A Microsoft javasolja, hogy az örökölt API-kat használó meglévő kódot át kell írni az új API-k használatára, ha lehetséges.]

A DMO Burkoló szűrő lehetővé teszi, hogy egy DirectShow-alkalmazás egy DirectX Media Object (DMO) használjon egy szűrőgráfon belül. A szűrő körbefuttatja a DMO-t, és kezeli a DMO használatának minden részletét, például adatokat továbbít a DMO-nak és onnan. Emellett a szűrő összesíti a DMO-t, így az alkalmazás lekérdezheti a szűrőt a DMO által elérhetővé tetsző COM-felületekhez.

Címke Érték
Szűrőfelületek IBaseFilter, IDMOWrapperFilter, IPersistStream
Beviteli adathordozó-típusok Megjegyzések megtekintése
Bemeneti pin-illesztők IMemInputPin, IPin, IQualityControl
Kimeneti kitűző médiatípusai Megjegyzések megtekintése
Kimeneti pin-adapterek IAMStreamConfig, IAMVideoCompression, IMediaPosition, IMediaSeeking, IPin, IQualityControl
CLSID szűrése CLSID_DMOWrapperFilter
Tulajdonságlap CLSID azonosítója Nincs tulajdonságlap
Végrehajtható Qasf.dll
Merit Megjegyzések megtekintése
Kategória szűrése Megjegyzések megtekintése

 

Megjegyzések

Korlátozások

A DMO Burkolóra a következő korlátozások vonatkoznak:

  • Nem támogatja a nulla bemenettel, több bemenettel vagy nulla kimenettel rendelkező DMO-kat. (Támogatja a DMO-kat egy bemenettel és több kimenettel.)
  • Nem támogatja az egyéni átviteleket. Minden adatátvitel az IMemInputPin interfészen keresztül történik.
  • Nem használja az IMediaObjectInPlace felületet; minden feldolgozás IMediaObject metódussal történik.

Csapok

A DMO minden bemeneti adatfolyamához a szűrő létrehoz egy megfelelő bemeneti pin-kódot. Minden kimeneti streamhez létrehoz egy megfelelő kimeneti pin-kódot. Az egyes tűk által támogatott médiatípusok a DMO-tól függnek

Kódoló interfészek

Ha a DMO videokódoló vagy hangkódoló, a kimeneti pin elérhetővé teszi a IAMStreamConfig felületet. Ha a DMO egy videokódoló, a kimeneti pin a IAMVideoCompression felületet is elérhetővé teszi. Ha a DMO mindkét esetben támogatja a felületet, a pin-kód delegálva lesz a DMO-nak. Ellenkező esetben a csap saját megvalósítást biztosít.

Streaming

A szűrő az IMemInputPin felületet használja az összes stream kezeléséhez. Nem támogatja IAsyncReader kapcsolatokat. A szűrő csak akkor hívja meg IMediaObject::P rocessOutput a DMO-n, ha adatokat fogad a felsőbb rétegből (beleértve a streamvégi értesítéseket is). Ezért nem támogatja a nulla bemeneti streammel rendelkező DMO-kat.

Keresek

A rendszer az összes keresési kérelmet a DMO Burkoló első bemeneti tűjén keresztül továbbítja a felsőbb rétegbeli szűrőnek. A többkimenetes DMO-k esetében ez azt jelenti, hogy a felsőbb rétegbeli szűrő több keresési kérést is kaphat, amikor az alkalmazás a gráfot keresi.

Érdem

A DirectShow az összes DMO-t a MERIT_NORMAL + 0x800 alapértelmezett érdemértékeként rendeli hozzá. Ez az érték MERIT_NORMAL és MERIT_PREFERREDközé esik. A dekóderszűrők általában MERIT_NORMALérdemi értékkel rendelkeznek. Ezért a szűrőgráf-kezelő általában egy dekóderszűrőn keresztül választ ki egy DMO-dekódert. Az alapértelmezett érték felülbírálásához adjon hozzá egy beállításjegyzék-bejegyzést a DMO beállításkulcsához a HKEY_CLASSES_ROOT\CLSID. Adjon meg egy "Merit" nevű DWORD értéket, amelynek értéke az érdemet határozza meg.

Kategória

A DMO Burkoló szűrő önmagában egyetlen kategóriában sem jelenik meg. Amikor körbefuttat egy DMO-t, a DMO neve alatt megjelenik a DMO kategóriájának megfelelő DirectShow kategóriában.

Pufferek

A DMO Burkoló szűrő adathordozó-puffereket ad át a DMO-nak, amely elérhetővé teszi az IMediaBuffer felületet.

Windows Vista vagy újabb rendszereken a médiapufferek az IServiceProvider felületet is elérhetővé teszik. A DMO ezen az interfészen keresztül mutatót kaphat a pufferhez társított médiamintához. Használja a szolgáltatásazonosítót IID_IMediaSample. A videós DMO a médiaminta IMediaSample2 felületével állíthat be interlace jelzőket a mintán. Az alábbi kód bemutatja, hogyan lehet az egérmutatót a médiamintához lekérni:

IServiceProvider *pSp = NULL;
IMediaSample2 *pSample2 = NULL;
HRESULT hr = S_OK;

hr = pBuffer->QueryInterface(IID_IServiceProvider, (void**)&pSp);
if (SUCCEEDED(hr))
{
    hr = pSp->QueryService(
        IID_IMediaSample,  // Service identifier.
        IID_IMediaSample2, // Interface identifier.
        (void**)&pSample2
        );
    if (SUCCEEDED(hr))
    {
        // Set flags (not shown).
        pSample2->Release();
    }
    pSp->Release();
}

A mintafüzet-jelölőkről további információt a AM_SAMPLE2_PROPERTIES Structurecímű témakörben talál.

Minőségellenőrzés

Ha a DMO elérhetővé teszi az IDMOQualityControl felületet, a szűrő lefordítja IQualityControl::Notify calls on its output pin into IDMOQualityControl::SetNow calls on the DMO. A SetNowrtNow paraméterének kiszámítása a TimeStamp és Minőségi szerkezet késői tagjainak összegeként történik.

A Fiter használata a GraphEditben

A GraphEditben a DMO Burkoló szűrő nem a saját neve alatt jelenik meg. Ehelyett minden regisztrált DMO a megfelelő szűrőkategória alatt van felsorolva. Amikor hozzáad egy DMO-t a Szűrők beszúrása párbeszédpanelen keresztül, a GraphEdit létrehozza a DMO Burkoló szűrőt, és konfigurálja a DMO használatára.

DirectShow-szűrők

DirectX Media Objects