Condividi tramite


Compensazione movimento

La compensazione del movimento è il termine per una fase importante del processo di decodifica per il video digitale compresso. Molti dispositivi di acceleratore grafico offrono alcune funzionalità di accelerazione per supportare la decodifica video compressa. Poiché il processo di compensazione del movimento è la parte più frequentemente supportata della decodifica video, l'interfaccia del driver del dispositivo che supporta la decodifica video compressa è denominata DDI di compensazione del movimento. Oltre alla compensazione del movimento, alcuni dispositivi possono eseguire IDCT (Trasformazione cosine discreta inversa) e altre funzioni hardware che un decodificatore video software può usare per accelerare il processo di decodificazione. La compensazione del movimento DDI è abbastanza flessibile per gestire i dispositivi che forniscono anche queste altre funzionalità.

I dati di input per un decodificatore MPEG software sono ben definiti. Se il decodificatore è progettato per MPEG-2, l'input è in formato MPEG-2. L'output del decodificatore è anche ben definito. Si tratta di un frame non compresso in un'ampia gamma di formati. Tuttavia, i formati provvisori tra i decodificatori software e i dispositivi di visualizzazione non sono ben definiti, con molti dispositivi che richiedono i propri formati di dati proprietari. Pertanto, l'interfaccia del driver del dispositivo di compensazione del movimento è flessibile e i formati provvisori sono descritti come GUID. Il driver di visualizzazione segnala i GUID che rappresentano le funzionalità supportate e il decodificatore software sceglie il GUID che soddisfa meglio i propri requisiti.

Per abilitare la funzionalità di compensazione del movimento, il driver deve eseguire la procedura seguente:

  • Implementare una funzione DdGetDriverInfo e impostare il membro GetDriverInfo della struttura DD_HALINFO per puntare a questa funzione quando viene chiamato DrvGetDirectDrawInfo . La funzione DdGetDriverInfo del driver deve analizzare il GUID GUID_MotionCompCallbacks.

  • Compilare una struttura DD_MOTIONCOMPCALLBACKS con i puntatori di callback del driver appropriati e i flag di tipo di callback impostati quando viene chiamata la funzione DdGetDriverInfo con il GUID GUID_MotionCompCallbacks. Il driver deve quindi copiare questa struttura inizializzata nel buffer allocato da Microsoft DirectDraw in cui il membro lpvData dei punti struttura DD_GETDRIVERINFODATA e restituire il numero di byte scritti nel buffer in dwActualSize.