I'm developing a VoIP application and I would like to use CELT as the audio codec. However, I'm running into a few issues. First, this application is cross platform, and my primary development environment is Windows. However, there is no config.h included with CELT, so I seem to have to make my own. I managed to get it to build after a lot of trial and error, but I'm not positive if I've configured everything exactly properly. I guess this is more of a complaint/request that an "official" config.h for Windows be included in future releases. Second, I started this project using Speex. I don't see any reason to get rid of Speex support (at least for now), so I'd like to keep that option. However, I can't link both Speex and CELT at the same time because the kiss_fft function is defined in both libraries, which causes the linker to be confused. I thought that I could simply remove one, but it looks like each implementation is very different and each library depends on its own implementation. Is there any way around this? Lastly, documentation is quite sparse for some of the parameters that I'd like to play around with. The biggest one is latency. The demo page shows a comparison of different latencies that CELT can run at, but I don't see anything in the API that has anything to do with that. Do I simply adjust the frame size? Also, what is input clipping? And what exactly does "complexity" control? Does it have any effect on latency or bit rate? How much effect on CPU usage does varying the complexity make? Thanks! Chris
On 14 August 2011 08:07, Chris Weiland <hobbiticus at gmail.com> wrote:> First, this application is cross platform, and my primary development > environment is Windows. ?However, there is no config.h included with > CELT, so I seem to have to make my own. ?I managed to get it to build > after a lot of trial and error, but I'm not positive if I've > configured everything exactly properly. ?I guess this is more of a > complaint/request that an "official" config.h for Windows be included > in future releases.FWIW, I've attached a config.h from a 32-bit linux system. This assumes gcc and glibc, of course, but might be helpful as a starting point. If you get one which works with msvc, feel free to post it for inclusion. -r -------------- next part -------------- A non-text attachment was scrubbed... Name: config_i686-pc-linux-gnu.h Type: text/x-chdr Size: 4911 bytes Desc: not available Url : http://lists.xiph.org/pipermail/opus/attachments/20110814/7cb2b518/attachment-0002.h
Hi Chris, On 11-08-14 11:07 AM, Chris Weiland wrote:> First, this application is cross platform, and my primary development > environment is Windows. However, there is no config.h included with > CELT, so I seem to have to make my own. I managed to get it to build > after a lot of trial and error, but I'm not positive if I've > configured everything exactly properly. I guess this is more of a > complaint/request that an "official" config.h for Windows be included > in future releases.Yeah, that's on the TODO list. In general, the main thing is that you'll need to: #define restrict and #define inline __inline or something like this.> Second, I started this project using Speex. I don't see any reason to > get rid of Speex support (at least for now), so I'd like to keep that > option. However, I can't link both Speex and CELT at the same time > because the kiss_fft function is defined in both libraries, which > causes the linker to be confused. I thought that I could simply > remove one, but it looks like each implementation is very different > and each library depends on its own implementation. Is there any way > around this?I just renamed the kiss-fft functions in the Opus code to avoid this. Though it will not be updated in the CELT repo.> Lastly, documentation is quite sparse for some of the parameters that > I'd like to play around with. The biggest one is latency. The demo > page shows a comparison of different latencies that CELT can run at, > but I don't see anything in the API that has anything to do with that. > Do I simply adjust the frame size? Also, what is input clipping? > And what exactly does "complexity" control? Does it have any effect > on latency or bit rate? How much effect on CPU usage does varying the > complexity make?The latency is simply (frame_size+2.5ms) for CELT and (frame_size+5ms) for Opus (though there will be a +2.5 option). As for the complexity parameter, I just suggest you play around with it. Cheers, Jean-Marc