Práce se snímky videa

[Funkce přidružená k této stránce DirectShow je starší funkce. Byla nahrazena MediaPlayer, MMFMediaEnginea Audio/Video Capture v Media Foundation. Tyto funkce jsou optimalizované pro Windows 10 a Windows 11. Microsoft důrazně doporučuje, aby nový kód používal MediaPlayer, MMFMediaEngine a Audio/Video Capture v Media Foundation místo DirectShow, pokud je to možné. Microsoft navrhuje, aby se stávající kód, který používá starší rozhraní API, přepsal, aby se nová rozhraní API používala, pokud je to možné.]

Nekomprimované video je posloupnost rastrových obrázků přehráných v rychlém sledu, obvykle s rychlostí přibližně 30 snímků za sekundu. Vzhledem k tomu, že většina videí zadává graf filtru DirectShow v komprimovaném formátu, datový proud videa obvykle prochází dekodérem pro dekompresi. Mnoho dekodérů generuje výstupní data ve formátu YUV a finální převod na RGB ponechává na videohardwaru těsně před zobrazením. Pokud dekodér používá akceleraci videa DirectX, hardware videa provede další práci pro dekódování obrázku. Proto nelze provést konečnou dekompresi rastrových obrázků, dokud data nedosáhne hardwaru videa.

Chcete-li však provádět mnoho typů analýzy, zpracování nebo úprav videa, je často nutné pracovat na nekomprimovaných bitmapách v určitém typu RGB nebo YUV formátu před vykreslením nebo zápisem do souboru. Tato práce se obvykle provádí v rámci filtru transformací založeném na základní třídě CTransformFilter, konkrétně v metodě Transform. Tato metoda obdrží ukazatel na objekt IMediaSample, který zapouzdřuje data videa. Metoda IMediaSample::GetPointer vrátí ukazatel na první bajt nezpracovaných dat. U nekomprimovaných snímků se tato data skládají z pixelů, ke kterým může přistupovat nebo je upravovat přímo filtr. Následující části obsahují základní informace, které vám pomůžou efektivně pracovat s daty DIB tímto způsobem.

Poznámka

Bity můžete také upravit pomocí funkcí GDI, GDI+, DirectDraw nebo Direct3D, ale tyto techniky jsou nad rámec tohoto článku.

 

Tato část obsahuje následující témata: