Hi All, Currently I am investigating how interesting OGG is for me. The most important requirements are: - Decoding on embedded hardware, ARM7 or ARM9. - Mixing multiple audio streams/files on embedded hardware First of all how difficult is it to decode OGG on an ARM7/9 processor? I read that OGG decoding needs floating point support? Secondly I would like to know how many MIPS are needed to decode OGG on average. Finally is it possible to mix OGG streams without first decoding them to PCM? I found a program that is mixing multiple OGG streams called "mixplayd", but I wasn't able to figure out if this program is first decoding and than mixing or if it is mixing native OGG and than decoding one mixed OGG stream. Thanks a lot in advance. Kind regards, Joost _________________________________________________________________ Via je PC gratis je vrienden hun PC bellen http://get.live.com/messenger/overview
Joost Meijles wrote:> Hi All, > > Currently I am investigating how interesting OGG is for me. > The most important requirements are: > - Decoding on embedded hardware, ARM7 or ARM9. > - Mixing multiple audio streams/files on embedded hardware > > First of all how difficult is it to decode OGG on an ARM7/9 processor? I read that OGG decoding needs floating point support?Just to be clear, Ogg is a container format (and is not written in all-caps since the name is not an acronym), with Vorbis being the most common audio codec used with Ogg. There is a fixed-point version of the Vorbis decoder, called Tremor. Check it out on <http://www.xiph.org/>. There's also a mailing list devoted to it. I'm not sure how much CPU it needs in absolute terms.> Finally is it possible to mix OGG streams without first decoding them to PCM? I found a program that is mixing multiple OGG streams called "mixplayd", but I wasn't able to figure out if this program is first decoding and than mixing or if it is mixing native OGG and than decoding one mixed OGG stream.Is there any commonly used lossy audio codec for which this is possible? It doesn't seem like the transformations used would lend themselves to the task, but I could easily be wrong. Cheers, Josh
On 11/6/07, Joost Meijles <joostmeijles@hotmail.com> wrote:> - Decoding on embedded hardware, ARM7 or ARM9.Tremor is well suited to ARM and even includes some of the most basic ARM asm needed to take better advantage of the hardware.> - Mixing multiple audio streams/files on embedded hardwareYou mean multiple concurrent streams? There's no accelerated software for that (just multiple stream decode and post-mix), not sure it would be worth it. You'd get to save at most the iMDCT....> First of all how difficult is it to decode OGG on an ARM7/9 processor?At last check on an ARM7TDMI, Tremor mainline required about 40-45MHz for stereo decode of one stream, assuming a setup using slow offboard DRAM at 7-14 wait states and using on-board fast SRAM as a random replacement cache.> Finally is it possible to mix OGG streams without first decoding them to PCM?I am unawareof any software that does it. Only about half the process (the final iMDCT) would be sharable, but that's in theory. I'm unaware of it having been done. Monty
Joost Meijles schrieb:> Finally is it possible to mix OGG streams without first decoding them > to PCM?Perhaps it would be possible to do the mixing in the frequency domain before completing the decoding process by converting to PCM - (i)MDCT, but it would be very difficult with the multiple window sizes used by Vorbis and not make much sense, since the convertion between time domain data (PCM) and frequency domain data is at least theoretically lossless. In any case, the psyco-accoustic model must be applied to the resulting mix when reencoding the data to achieve reasonable compression (rate and quality). Tor
Vamsi Mohan Reddy Pulagam
2007-Nov-06 22:13 UTC
[Vorbis] OGG decoding/multi-channel mixing
Hi, As far as Vorbis/Tremor codes show, I do not see any mixing operations. I only see a channel interleave operation. This means that for ex. if I encode two songs into an ogg stream like first song into the left and second song into the right channel, the decoded output will not be mixed output in both channels but interleaved output in respective channels, i.e., I hear first song in left and second song in right. So it all depends on how we encode the stream. One thing that could be done is, since we have individual channel outputs we can mix them to a single channel and call this a mixed output (in the above example after doing this operation we will hear both songs in both channels) And regarding mixing in frequency domain I am not sure about the feasability and complexity involved. But mixing in time domain is much simpler as far as I see. Someone please correct me if I am on the wrong path. Thank you, Vamsi ----- Original Message ----- From: "Tor-Einar Jarnbjo" <tor-einar@jarnbjo.name> Cc: <vorbis@xiph.org> Sent: Wednesday, November 07, 2007 3:21 AM Subject: Re: [Vorbis] OGG decoding/multi-channel mixing> Joost Meijles schrieb: >> Finally is it possible to mix OGG streams without first decoding them to >> PCM? > Perhaps it would be possible to do the mixing in the frequency domain > before completing the decoding process by converting to PCM - (i)MDCT, but > it would be very difficult with the multiple window sizes used by Vorbis > and not make much sense, since the convertion between time domain data > (PCM) and frequency domain data is at least theoretically lossless. In any > case, the psyco-accoustic model must be applied to the resulting mix when > reencoding the data to achieve reasonable compression (rate and quality). > > Tor > > > > _______________________________________________ > Vorbis mailing list > Vorbis@xiph.org > http://lists.xiph.org/mailman/listinfo/vorbis
Hi All, Thanks a lot for the many responses, they are very helpful to me (they made me enthousiastic about Ogg and the community).> > First of all how difficult is it to decode OGG on an ARM7/9 processor?> > At last check on an ARM7TDMI, Tremor mainline required about 40-45MHz> for stereo decode of one stream, assuming a setup using slow offboard> DRAM at 7-14 wait states and using on-board fast SRAM as a random> replacement cache.40-45 Mhz sounds like quite a lot, is this for optimized code? I know that for decoding MP3 around 9 Mhz is needed, when using optimized code. How does using mono, effects the CPU usage? Does it half the requirement to around 20 Mhz?> Summarizing from a number of replies: mixing multiple streams in the time domain seems to be easier (or at all possible) compared to > the frequency domainDoes anyone know of an implementation that has been created for Ogg (preferably capable of running on ARM) that provides mixing of multiple streams? I understood that somehow a Tremor implementation is available, but I did not quite understand that. Thanks a lot in advance. Kind regards, Joost _________________________________________________________________ Via je PC gratis je vrienden hun PC bellen http://get.live.com/messenger/overview -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.xiph.org/pipermail/vorbis/attachments/20071107/e7d984fc/attachment.html