Hi everyone, While 1.1.0 is progressing slowly but steadly, I've also restarted working on HEAD, thanks to some extra time kindly provided by Magic & Miracles dept. ;)
The plan, which hopefully will lead to 1.2.0 in reasonnable time, is roughly the following: 1. complete the port to existing export modules to NMS 2. disable export layer by default, then remove it if noone complains (too loudly) for some time (something like a few months, 6-8 weeks). 3. add some new modules (full-featured xiph first stack due to real-life requests. mkv and mp4 are planned as well): - theora/vorbis/schroedinger/speex/flac encoders. - ogg multiplexor. 4. power up import_ffmpeg (this will boost transcode's import capabilities _without_ mplayer :)) - use libavformat as demuxer - add support for audio 5. Start to plan next Module System revision - configure() operation is messy. - we would like to have open()/close() operations. - having explicit flush() for encoders (decoders) would be sweet too. 6. Start to plan next core changes (my pet peeve: drop the memcpy count, reusing double buffer in our *frame_list_t) 7. Continue to port more filters to NMS, and outline the requisites for new filter layer. Well, point 2 is pretty straightforward, points 1 & 4 is ongoing, for points 5,6,7 I'm already collecting some thoughts, point 3 is scheduled after 1 is completed. So, I'd like to summarize the status of NMS porting of export modules. Let's see what we have in 1.1.0: old module new module done? Notes -------------------------------------------------------------------------- export_ac3.c N/A yes replaced by encode_lavc export_divx5.c missing yes anyone volunteering? export_dv.c encode_dv + almost no audio yet multiplex_avi export_dvraw.c encode_dv + almost no audio yet multiplex_raw export_ffmpeg.c encode_lavc almost no audio yet export_im.c encode_im yes export_jpg.c N/A yes replaced by encode_im export_lame.c encode_lame yes export_lzo.c encode_lzo yes export_mov.c missing NO see below export_mp2.c N/A yes replaced by? export_mp2enc.c missing NO see below export_mpeg2enc.c missing NO see below export_null.c encode_null yes export_ogg.c forthcoming NO planned full-featured stack. export_pcm.c N/A partly will be merged in multiplex_raw export_ppm.c N/A yes replaced by encode_im export_pvm.c N/A NO requires deep architectural review export_pvn.c multiplex_pvn partly work in progress, easy to port export_raw.c multiplex_raw yes export_tcaud.c N/A yes useless with NMS. export_toolame.c N/A yes replaced by? export_wav.c multiplex_wav yes export_xvid4.c encode_xvid yes export_yuv4mpeg.c multiplex_y4m yes Some modules deserve a few more details. * export_mov I don't want to drop libquicktime support unless forced, but I'm doubtful about the placement a NMS-module. Should we drop the encoding part and let libquicktime handle the muxing only? At *first* glance libquicktime's API doesn't look so friendly for our purposes. Further investigation is needed (and volunteers welcome ;) ) * export_mp2enc I would like *really* much to preserve support for this encoder, but integrating it in NMS isn't trivial (well, the existing module isn't exactly brilliant anyway :( ). In a few words, the problem is that using a private pipe like we do now raises some eyebrows: - using pipes for r/w will be slow. Transcode is already slow enough for my own taste ;) - using a write-only pipe, aka letting mp2enc writing the output file, will violate both the design and the purpose of an encoder module. I'll do an exception, but I don't like so. Feel free to ask more if interested. * export_mpeg2enc Same as above, with the notable addition that is theorically feasible (but this sounds nasty looking at the API) to code a native module. Feel free to ask more if interested. Chapter PVM. I'll be laconic: current code works by pure luck. Period. I'm *HIGHLY* interested to preserve explicit and well-integrated clustering support in transcode, but I simply cannot afford it right now because - I've no time to learn nor to experiment. - I've different development priorities. - Current code is NOT a good starting point. Conclusion: patches *VERY* welcome, otherwise the only solution is to get stuck to 1.0.x for a quite long time. NMS revision. Ok, I've done some design mistakes with first revision of NMS. They say "it happens". It happened. So, _after_ NMS released and _after_ a few new modules ported (especially some import modules) I'd like to get back to design table and propose a new NMS version. I would and will work as hard as I can to change _the minimum_ amount of code especially in modules. Next NMS revision will be something like 1.5, not 2.0 Documentation. I'll be laconic again. We lack on this. And we lack time to improve this. :( New stuff (FAR FAR future, something like futurama...). Since our infrastructure is slowly getting in place, I'm starting to plan to add new features, most notably filters. I'm interested in scenechage detection algorhytms, deringing, denoising and deblocking filters. A scriptable testframe generator will be sweet. Improving socket interface (new commands) and maybe adding a scripting interface would be a very interesting move. Final words. Thanks for reading this. Sorry for the typos that I'll surely spot just AFTER clicking 'send'. :) Any comment is of course warmly welcome. Best regards, -- Francesco Romani // Ikitt [ Out of memory. ~ We wish to hold the whole sky, ~ But we never will. ]