Hi everyone,
So for my OmniEncoder 2.0, I have a design requirement (internationalization support) that prevents me from passing file names as command-line arguments (because the console apps don't usually support UTF characters). This means that for every encoder, I need to either wrap the .dll in managed code, or use piped IO. Piped I/O is easy to implement, but I know that lame can't write the VBR header (Xing/lame tag) because it goes at the beginning of the stream but must be calculated afterwards.
So my question...
What is the (easiest) way to apply a lame tag? Can lame.exe do it after the fact? How does Foobar do it? Failing all that, how do I calculate the frame count / byte count of the stream? Should I just give up and use the DLL?
edit: I'm also using lame.exe as an MP1/2/3 decoder via piped IO... is there any way to build the mpglib component of lame as a DLL? I tried wrapping MAD in c#, but damn that is some convoluted code.