Page 1 of 1

Modifying VLC to play two video streams on one output screen

Posted: 16 Feb 2023 17:20
by I_use_VLC_btw
Hello!

I'm arriving with a rather strange idea. I want to display two video streams simultaneously, side by side (if possible, timesynced). The streams will be served via MPEG-DASH and additionally, both will be 360° videos. I have already done this using a website with videojs + videojs-vr, but the performance is so low that I started looking in different directions. The solution doesn't need to be of good quality, I need if for a proof of concept showcase.

VLC seems like a great choice - first, unlike videojs it can properly utilize HW acceleration and barely uses any CPU while playing these videos. Second, the codebase is super clean and I have already achieved some success in just a few hours: Image
(the video in the screenshot is a random monoscopic one downloaded from YouTube, I made VLC open the same stream twice).

I was able to achieve this by creating my own version of `picture_CopyPixels` function which copies half of the frame from one rendering thread to the other one (surprisingly, no deadlock nor crashes). This of course doesn't work when I'm using acceleration (VAAPI/opengl in my case) - I need to use the Xvideo output which doesn't support 360° videos.

I experimented with the VAAPI calls a bit, but so far have no idea how to tackle this problem. Do you have any hints how this could be replicated with VAAPI pipeline?