<div dir="ltr">Hi everyone! I'm part of an open-source project called Phoenix (<a href="http://phoenix.vg" target="_blank">phoenix.vg</a>). I've talked to people on IRC (#gstreamer) around two months ago about this idea of mine but I thought I'd post here to get a more formal conversation going.<div><br></div><div>Phoenix is a multi-system emulator for classic game consoles. It's powered by Qt 5 and Libretro (an API for emulators, in Libretro-speak they're called cores) and written in C++, QML and a bit of Objective-C and Python.</div><div><br></div><div>No need to get into too much detail here, but I'm planning on a massive variety of features in the future which behooves me to make it as easy as possible to play around with new ideas. One way to make this possible is to have a flexible pipeline system. During my research this project came on my radar early on along with Microsoft's Media Foundation, though it was obvious which was the more open-source friendly choice!</div><div><br></div><div>As I got further into developing my own custom pipeline system I started to get lost in its complexity. I was starting to do metaprogramming in C++, mostly to get elements to register themselves at compile time without having to explicitly register themselves in the pipeline manager. At this point I decided that I should stop and check out existing solutions to see if I could accomplish what I wanted much faster. Right now, the only actively maintained choice is GStreamer so here I am!<br><div><br></div><div>The way I see it, running a game emulator isn't too far removed from playing video. You have a stream of audio/video data that's been "decoded" and presented to the user. In the case of games you'll also have input to deal with. </div><div><br></div><div>The plan is to develop a series of new elements and include them with each release. They're so domain-specific that I don't think it's worth getting them included into any of the gst-plugins-* repos. I imagine I'll either place the shared libraries near the executable or statically link them. Is the latter possible? What considerations should I have for the former?</div><div><br></div><div>I've noticed that there's a project called gstreamer-qt that's no longer maintained. What are my options for getting video output into the QML scene?</div><div><br></div><div>My project uses CMake and GStreamer uses automake. Is there any work being done on compiling GStreamer with CMake? Official FindGStreamer.cmake modules?</div></div><div><br></div><div>Lastly, I have the issue of input. I'm going to use SDL2 to manage connected controllers. I need to get controller input polled each frame before the Libretro element can emulate a frame. What approaches do I have? Another element before the Libretro element? I was told a while ago on IRC that I could maybe use something meant for DVD menu navigation? What is that?</div><div><br></div><div>Thanks!</div></div>