natt
Junior Member
Posts: 248
Registered: 05-11 |
Catoptromancy said:
Do want. Options for picking quality and resolution? Into avi or multiple formats? Maybe an option for direct to youtube format. Looks to be most awesome.
Resolution and original rendering quality is entirely controlled through the game's settings interface. GL vs software mode, filtering, high res texture replacements, etc etc; all works exactly as you would expect. If you mean quality as far as compression quality, you control that through the compressor. Right now I have two video output setups:
1) Video for windows AVI writer. You can use any video codec you have installed and setup for VFW. I must say I don't particularly like this. It's windows only so I have to have a second setup available regardless, and while it's reasonably easy to use, an inexperienced user can easily choose bad settings or formats here (especially if he doesn't have any good VFW compressors installed) and make junk videos.
2) Raw output to file. RGB or YUV format. The file isn't seeked, so you can use mkfifo, pipe it to your compressor, and then there won't actually be any intermediate file on your hard disk. This is a pain on windows as there isn't actually a mkfifo. (I created one, but it's not quite a drop in replacement.)
I'm leaning towards 2) really. I don't want to create a lot of additional dependencies (like libavcodec or anything), but I want something flexible that's not arbitrarily limited. Just need to work on the "easy to use" bit.
entryway said:
Even if timidity is used?
I've been working with fluidsynth actually. (And yes, I have it looping properly). Honestly, it's mostly that I want the code to be clean enough for you to accept as a patch, because I don't have the energy to maintain a fork for very long. And it's kind of a mess right now. Anyway, here's sort of what I've been thinking about :
First of all, SDL_Mixer is gone. The only feature used is the midi/mp3/ogg play. For midi play, we need a soft synth in userspace (so not like bassmididrv, because there's no way to control its output). Bassmidi is incompatible with GPL so I can't bring it in. I'm using chocolate doom's OPL2 emulator right now, which works well enough. I haven't implemented it, but bringing in libfluidsynth as an option as well would be no problem.
For mp3/ogg play, SDL_Mixer does let you capture the data they output if you dump what comes into the Mix_SetPostMix callback, but you're restricted to having it come out at realtime speed (since it's actually being played to your audio system). I haven't done this yet, but libmad and libvorbis seem like the way to go.
There's one last feature that's missing at that point though. For when you're not recording video, you still want to be able to do system MIDI output right? Otherwise Rich Weeds won't be able to pipe output through a 30 year old yamaha synth he found in someone's garbage can. Add on libportmidi for that.
So that's 4 new libraries (fluidsynth, mad, vorbis, portmidi) as well as a dozen source files spliced in from another project (OPL emu). None of it is terribly difficult; the OPL emu is implemented in my current build, and I have test apps which implement both the portmidi and the fluidsynth correctly, but I'm still a bit apprehensive.
|