The Video Mixer supports two modes of operation, which require two different programming models.
• Auto Restart Mode (Default) – The driver initialization routine configures the Video Mixer for auto restart mode. In this mode, after the current frame is processed the core automatically triggers the start of the next frame processing. Consequently, the core can keep on processing frames without any software intervention, with settings applied when the core was started. This mode is used when there is no need to make frame synchronous changes to the core registers. This is the case if streaming layers are being used.
You can switch to Auto Restart Mode, at any time, by disabling the interrupts, using the XVMix_InterruptDisable API.
– When using memory layers, frame synchronous changes to the layer memory buffer address are key for the correct operation of the
, that is, reading from memory needs to be synchronized with writing to memory by for example a graphics engine. In this case, the interrupt mode should be used. In this mode, the interrupt (IRQ) port of the core needs to be connected to a system interrupt controller.
When an interrupt is triggered, the core interrupt service routine (ISR) checks to confirm if current frame processing is complete. It then calls a user programmable callback function, if a callback function has been registered. In the callback function, the register settings for the next frame should be programmed, that is, what layer buffer address a layer should read next from. Finally, the interrupt service routine triggers the core to start processing the next frame.
An application must perform the following tasks to configure the core for Interrupt mode.
° Register the core ISR routine XVMix_InterruptHandler with the system interrupt controller.
° Register the application callback function that should be called within the interrupt context. This can be done using the API XVMix_SetCallback .
° Enable the interrupts by calling provided API XVMix_InterruptEnable .