I've a touch screen application built using WPF running at HD resolution (1920 x 1080) and i have a looping background video that is also in HD. The background video runs as long as the lifetime of the app. The UI is placed "above" (in z order). However the UI's rendering seems jerky and laggy and I want to improve this performance. When i run the app without the video running, my UI runs smoother as expected. Can anyone suggest a way to improve my UI responsiveness? Below is the details of my looping video file.
EDIT: Some investigations I did: On slower computers, the video and UI becomes laggy. However, when running the video alone, the video runs very smoothly. When running the UI without the video, it also runs very smoothly. The problem arises when we have the video and the UI running together, somehow the rendering becomes sluggish. I am using MediaUriElement control from WPFMediaKit. I tried to use the Win7DSFilterTweaker to change the Windows 7 default decoder but to no avail. Any suggestions?
EDIT 2: The bottleneck seems to be from the WPF rendering engine. When I ran the video, the FPS drops to ~34fps. When I paused the video, it is running at 60fps again. So any suggestions here?
Video
ID : 0
Format : MPEG-4 Visual
Codec ID : DIV3
Codec ID/Hint : DivX 3 Low
Duration : 12s 12ms
Bit rate : 8 558 Kbps
Width : 1 920 pixels
Height : 1 080 pixels
Display aspect ratio : 16:9
Frame rate : 29.970 fps
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Compression mode : Lossy
Bits/(Pixel*Frame) : 0.138
Stream size : 12.3 MiB (100%)