Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
[De functie die is gekoppeld aan deze pagina, DirectShow, is een verouderde functie. Het is vervangen door MediaPlayer, IMFMediaEngineen Audio/Video Capture in Media Foundation. Deze functies zijn geoptimaliseerd voor Windows 10 en Windows 11. Microsoft raadt ten zeerste aan om nieuwe code te gebruiken MediaPlayer, IMFMediaEngine en Audio/Video Capture in Media Foundation in plaats van DirectShow, indien mogelijk. Microsoft stelt voor dat bestaande code die gebruikmaakt van de verouderde API's, indien mogelijk opnieuw worden geschreven om de nieuwe API's te gebruiken.]
Met het DMO Wrapper-filter kan een DirectShow-toepassing een DirectX Media Object (DMO) in een filtergrafiek gebruiken. Het filter verpakt de DMO en verwerkt alle details van het gebruik van de DMO, zoals het doorgeven van gegevens naar en van de DMO. Het filter voegt ook de DMO samen, zodat de toepassing een query kan uitvoeren op het filter voor com-interfaces die door de DMO worden weergegeven.
| Etiket | Waarde |
|---|---|
| Filterinterfaces | IBaseFilter, IDMOWrapperFilter, IPersistStream- |
| Typen invoerpinmedia | Zie opmerkingen |
| Invoerpininterfaces | IMemInputPin, IPin, IQualityControl |
| Mediatypen voor vastmaken van uitvoer | Zie opmerkingen |
| Interfaces voor uitvoerpin | IAMStreamConfig, IAMVideoCompression, IMediaPosition, IMediaSeeking, IPin, IQualityControl |
| CLSID filteren | CLSID_DMOWrapperFilter |
| CLSID van eigenschappenpagina | Geen eigenschappenpagina |
| Uitvoerbaar | Qasf.dll |
| Zie opmerkingen | |
| filtercategorie | Zie opmerkingen |
Opmerkingen
Beperkingen
De DMO Wrapper heeft de volgende beperkingen:
- Het biedt geen ondersteuning voor DMO's met nulinvoer, meerdere ingangen of nul-uitvoer. (Het biedt wel ondersteuning voor DMO's met één invoer en meerdere uitvoer.)
- Het biedt geen ondersteuning voor aangepaste transporten. Alle gegevenstransporten worden uitgevoerd via de interface IMemInputPin.
- Er wordt geen gebruikgemaakt van de interface IMediaObjectInPlace; alle verwerking wordt uitgevoerd met behulp van IMediaObject methoden.
Spelden
Voor elke invoerstroom op de DMO maakt het filter een bijbehorende invoerpin. Voor elke uitvoerstroom wordt een bijbehorende uitvoerpin gemaakt. De mediatypen die elke pin ondersteunt, zijn afhankelijk van de DMO
Encoderinterfaces
Als de DMO een video-encoder of een audiocoderingsprogramma is, maakt de uitvoerpin de IAMStreamConfig-interface beschikbaar interface. Als de DMO een videocoderingsprogramma is, maakt de uitvoerpin ook de IAMVideoCompression interface beschikbaar. In beide gevallen, als de DMO de interface ondersteunt, de gedelegeerden aan de DMO. Anders biedt de pin een eigen implementatie.
Streaming
Het filter maakt gebruik van de IMemInputPin interface om alle streaming te verwerken. Het biedt geen ondersteuning voor IAsyncReader verbindingen. Het filter roept IMediaObject::P rocessOutput alleen op de DMO aan wanneer deze gegevens van upstream ontvangt (inclusief end-of-stream-meldingen). Daarom biedt het geen ondersteuning voor DMO's met nul invoerstromen.
Op zoek naar
Alle zoekaanvragen worden doorgegeven aan het upstream-filter, via de eerste invoerpin op de DMO Wrapper. Voor DMO's met meerdere uitvoer betekent dit dat het upstream-filter meerdere zoekaanvragen kan ontvangen wanneer de toepassing de grafiek zoekt.
Verdienen
DirectShow wijst alle DMO's een standaardwaarde toe van MERIT_NORMAL + 0x800. Deze waarde valt tussen MERIT_NORMAL en MERIT_PREFERRED. Decoderfilters hebben over het algemeen een waarde van MERIT_NORMAL. Daarom selecteert de manager van de filtergrafiek meestal een DMO-decoder boven een decoderfilter. Als u de standaardwaarde voor merites wilt overschrijven, voegt u een registervermelding toe aan de registersleutel van de DMO in HKEY_CLASSES_ROOT\CLSID. Neem een DWORD waarde met de naam 'Merit' op waarvan de waarde de waarde aangeeft.
Categorie
Het DMO Wrapper-filter wordt niet zelf weergegeven in een categorie. Wanneer een DMO wordt verpakt, wordt deze weergegeven in de Categorie DirectShow die overeenkomt met de categorie DMO, onder de naam van de DMO.
Buffers
Het DMO Wrapper-filter geeft mediabuffers door aan de DMO die de IMediaBuffer-interface beschikbaar maakt.
In Windows Vista of hoger maken de mediabuffers ook de IServiceProvider-interface beschikbaar. De DMO kan deze interface gebruiken om een aanwijzer te krijgen naar het mediavoorbeeld dat is gekoppeld aan de buffer. Gebruik de service-id IID_IMediaSample. Een video-DMO kan de IMediaSample2-interface van het mediavoorbeeld gebruiken om interlacevlaggen op het voorbeeld in te stellen. De volgende code laat zien hoe u de aanwijzer naar het mediavoorbeeld haalt:
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();
}
Zie AM_SAMPLE2_PROPERTIES Structuurvoor meer informatie over interlacevlaggen per steekproef.
Kwaliteitscontrole
Als de DMO de IDMOQualityControl interface beschikbaar maakt, wordt met het filter IQualityControl::Notify aanroepen van de uitvoerpin in IDMOQualityControl::SetNow aanroepen op de DMO omgezet. De parameter rtNow van SetNow wordt berekend als de som van de TimeStamp en leden van de Quality-structuur.
De fiter gebruiken in GraphEdit
In GraphEdit wordt het filter DMO Wrapper niet weergegeven onder de eigen naam. In plaats daarvan wordt elke geregistreerde DMO vermeld onder de juiste filtercategorie. Wanneer u een DMO toevoegt via het dialoogvenster Filters invoegen, maakt GraphEdit het DMO Wrapper-filter en configureert het voor het gebruik van die DMO.
Verwante onderwerpen