This is sort of a followup to my earlier post about gstreamer. To make it rock even more, I’d like to see the following enhancements:
- Integrate
videoscalewith pitivi’s wonderfulsmartvideoscaleelement. The main difference is that the latter keeps the aspect ration untouched by adding black stripes to the appropriate sides when scaling. The logic here is pretty straightforward so any gstreamer hacker should be able to merge these two (smartvideoscaleusesvideoscaleinternally and is implemented in Python). - Implement an
encodebinelement to allow applications to use pre-defined profiles for encoding. See below for details
The encodebin proposal
The way I see encodebin would make the element itself pretty simple. To make it useful, it should try to stay profile-agnostic and all specific details should be part of the profiles. Provided that queue can handle multiple streams, the profiles themselves could be as simple as that:
[gstreamer-profile] Name=PlayStation 3 console Name=Konsola PlayStation 3 Type=device Icon=computer-gaming-sony-ps3 Pipeline="queue name=input input. ! ffmpegcolorspace ! x264enc ! queue ! output. input. ! queue ! audioconvert ! faac ! queue ! output. queue name=output"
The element itself would only have to enumerate the profiles and use the one indicated by the profile property. Placing the profiles in a common %_datadir location would allow external packages to add profiles for both common container formats and for specific devices (gaming consoles that only handle certain formats, mobile devices that require lower resolutions etc.).
Ideally the encodebin element should accept video, audio and subtitle streams (as choosing a font size requires you to know the output resolution). This would allow one to build a re-muxing application while focusing on the GUI and not on all the devices to support.
All comments welcome. Disclaimer: I am certainly not a gstreamer hacker so I don’t know poo about gstreamer’s internals. Please be kind.



