PDA

View Full Version : Multiple bitrates in same channel


Adron
07-12-2003, 17:34
When dialup users and broadband users are in the same channel it would be advantageous to be able to have two different data rates set for the channel.

Any broadband user would generate two streams - say 19.5 kbps + 5.3 kbps speex. Adding the 5.3 kbps stream won't have a big effect on the broadband users connection.

Any dialup user would generate only the lower quality stream - 5.3 kbps, which will not kill their connection.

Broadband users will hear other broadband users in 19.5 kbps, excellent quality, and dialup users in 5.3 kbps.

Dialup users will hear everyone in 5.3 kbps.


I think this would make a lot of sense for channels with say 10 people, 1-3 of which are on a dialup. This way, the broadband users don't have to sacrifice their quality just because a dialup user joins, and dialup users won't overload their connections joining a high-bandwidth channel.

Dummer Sack
07-12-2003, 18:22
Hmm, nice idea. Only that the cpu usage for encoding on the client is doubled.
Maybe in addition with a client side option where you can specify if you want to generate both rates or only the lower one for dual rate channels.

I think it would be even better if the server would generate the lower rate stream by recoding (would increase delay for low rate joiners). Although this would place a higher load on the server it would only be necessary for low rate joiners and CPU power is cheaper than bandwidth today.

Adron
07-12-2003, 18:42
Actually from some short tests I did, it doesn't seem like the cpu use will be doubled. It seems to require more cpu to encode at a higher bandwidth, so possibly the cpu use will only increase in proportion to the increased bandwidth use - say 25-50%.

I also thought about having the recoding done at the server, but I read some about recoding at the Speex home page, and I'm afraid that recoding at the server might reduce quality. Quality at 5.3 kbps isn't that good from the start - if you start with data that has already been encoded (albeit to a higher bandwidth) it would get worse. It would also affect scalability - for a large server the cpu use for encoding could grow too much.

You're right that there should be client options for what rates to generate/receive. Generating the low bitrate should be mandatory, and generating the higher optional. And everyone can choose for themselves whether to receive the higher or lower bandwidth stream.

Dummer Sack
07-12-2003, 19:54
On the quality reduction: Yes that may be to much loss. I don't know how big the impact would be. But since the different bitrates of the same codecs may extract the same data but only more aggressively there is a chance that the impact is not so big.

Why I would like the server side recoding more:
Double encoding on the client will possibly increase the delay for braodband users (Which I am) since two streams are generated and sent (I don't know if that would be noticeable). Also I think that the number of modem users will reduce in the future so I want to put any possible quality loss on their end.
I know that they have enough problems anyway but I think planning for the future is better and even with the added delay they have an improvement in available bandwitdh over the current system if they go to high bandwidth channels.

On the CPU usage on the server:
CPU usage would only increase if you have many Dual Codec channels and many modem users in them (And as I said I think that you have more broadband users and that the modem users will die out in the future). Also the CPU load will only occure if a broadband user is speaking.
So if you have a BIG system available you can have more Dual Codec channels with more users. If you have CPU problems don't allow Dual Codec channels at all.

Peter
08-12-2003, 07:08
Hmm,

my idea of implementing this would be, to make it possible to specify the codec for whispering, and to allow multiple whispers at once. Then I could just make a "Broadband" subchannel and a "Modem" subchannel, instruct the users to setup their whispers....

Broadband users would have:
Key "x" whisper to channel Broadband (no codec, use the one of the channel).
Key "x" whisper to channel Narrowband (no codec, use the low qual. codec of that channel).

Modem users would have:
Key "x" whisper to channel Narrowband (use channel codec)
Key "x" whisper to channel Broadband, codec lowbandwidth.

Maybe not allow choosing any codec, but just make it possible to choose between "use target channel codec" vs "use originating channel codec".

Oh and of course a option to choose "default" instead of key, making it possible to use voice-activation for dual-whispers like this.

Adron
08-12-2003, 11:40
That is a possible solution, but I don't think it'd work well in my environment. A solution that requires users (game playing kids ;)) to try to bind keys correctly will cause a whole lot of "tech support". It's difficult enough already to get them to configure their mixer inputs, their mic level, and their voice activation level.

Having them select high or low codec wouldn't be nearly as difficult as guiding them through binding keys, and if they failed to select the right codec, it would still work although either at lower performance or lower quality for them.

Dummer Sack
08-12-2003, 15:48
I think the intention was that modem users not only send a lower bitrate stream but also resceive it. But with linux solution they only resceive a lower bitrate stream from a broadband user that whispers with lower bitrate (And why would a broadband user care anyway, most will always talk with the high bandwidth).

Or did I miss a thing somewhere?