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
videoscale
with pitivi’s wonderfulsmartvideoscale
element. 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 (smartvideoscale
usesvideoscale
internally and is implemented in Python). - Implement an
encodebin
element 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.