View Full Version : Skype and h.264 compression?
Atak_Snajpera
29th May 2009, 12:31
I was wondering why Skype chose VP7 compression instead of h.264 (x264)? Moreover VP7 codec in skype uses only one core on my Q6600@3Ghz. I found a way to force 640x480@30fps in config. Then I noticed that I have less fps (versus 320x240). At the begining I was blaming my upload speed
http://www.speedtest.net/result/483974327.png (http://www.speedtest.net)
But then I realized that single-threaded codec is real bottleneck :(
I'm sure that x264 would be alot better choice for multi-core systems!
kunkie
29th May 2009, 14:22
Patent licensing.
Skype has hundreds of millions of client installs. They'd have to pay a fee for each one...
Chengbin
29th May 2009, 15:30
Patent licensing.
Skype has hundreds of millions of client installs. They'd have to pay a fee for each one...
x264 is free...
saint-francis
29th May 2009, 15:48
I was wondering why Skype chose VP7 compression instead of h.264 (x264)? Moreover VP7 codec in skype uses only one core on my Q6600@3Ghz. I found a way to force 640x480@30fps in config. Then I noticed that I have less fps (versus 320x240). At the begining I was blaming my upload speed
But then I realized that single-threaded codec is real bottleneck :(
I'm sure that x264 would be alot better choice for multi-core systems!
You do know that you can specify the FPS in that .xml hack, don't you? Works fine for me on a Q6600. 640 x 480 30 fps.
J_Darnley
29th May 2009, 15:51
x264 is free...
Patent licensing not software licensing
Comatose
29th May 2009, 16:36
You're right, but doesn't VP7 cost them too? It's probably just a typical stupid corporate decision.
You're right, but doesn't VP7 cost them too?
Probably, but we don't know the terms of the deal so it's hard to say if it's stupid or not.
Dark Shikari
29th May 2009, 17:28
If you thought H.264 licenses cost a lot of money, you better not look at what On2 charges... :p
I suspect they just got suckered by marketing.
(and H.264 licensing caps out at only a few million dollars per year, so it's really not that bad for a very widely-installed product.)
SeeMoreDigital
29th May 2009, 17:35
Would it be possible to "upgrade" Skype to use MPEG-4 AVC instead of VP7?
Comatose
29th May 2009, 17:36
How much does a H.264 license cost? If you buy them in volume, do they cost less?
Atak_Snajpera
29th May 2009, 17:44
I did small test. I used VirtualDub to capture 640x480@30fps from my cheap Logitech E3500 webcam. I added GPU denoiser...
LoadPlugin("C:\Users\Dawidos\Documents\Delphi_Projects\RipBot264\Tools\AviSynth plugins\fft3dgpu\fft3dgpu.dll")
LoadPlugin("C:\Users\Dawidos\Documents\Delphi_Projects\RipBot264\Tools\AviSynth plugins\gradfun2db\gradfun2db.dll")
video=FFT3DGPU(video,sigma=5).gradfun2db
...and encoded using these settings
--bitrate 384 --filter 0,0 --ref 3 --mixed-refs --bframes 3 --b-adapt 1 --weightb --direct auto --subme 7 --trellis 1 --partitions all --8x8dct --me umh --threads auto --thread-input --progress --no-psnr --no-ssim --output "F:\temp\RipBot264temp\video.264"
encoding speed was two times faster than real time (56 fps -> Q6600@3ghz)
...and quality was extremely good ! A lot better than on2's.
I cannot show screenshots for obvious reasons :)
Comatose
29th May 2009, 17:47
I think you have to include VBV there, since it's streaming. Your encode probably has bitrate spikes that the VP7 video doesn't.
Atak_Snajpera
29th May 2009, 17:57
I repeated test and it looks the same :)
CruNcher
30th May 2009, 12:15
B-frames for real time video conferencing is insane (same for networked surveillance systems) VP7 for sure uses no B-frames in Skype so comparing with those is not really fair :D
for a good comparison you have to chose the tools the way you reach the same delay as with VP7 also error resilience plays a big role here.
Btw Dark do you know which entity contributed the most Research into H.264 Sony, HHI, Bosch or someone else so to speak the top contributers, even if for sure the most impacting contributions are more important like CABAC (HHI) or High Profile (FRExt) (if i remember correctly TCR's method was chosen same as for FGM/FGT) ? Real Networks tried to contribute their Inloop Deblocking but then a better one was chosen whose was it ?)
Dark Shikari
30th May 2009, 12:30
B-frames for real time video conferencing is insane (same for networked surveillance systems) :D1 B-frame only adds 1 frame of delay, or about 30ms for 30fps video. It's really not a big deal to have a few hundred ms of delay in a videoconferencing system.
CruNcher
30th May 2009, 13:36
surely i would agree with you under perfect conditions but Skype is Internet P2P so any additional delay that can be avoided is beneficial in the end users experience of it, most of the time some 100 ms can decide about that sure the network itself should be optimized but it's not always predictable and so the less delay on any side of the whole chain the better it is and the more head room you have before it becomes ugly imo.
SeeMoreDigital
30th May 2009, 16:51
1 B-frame only adds 1 frame of delay, or about 30ms for 30fps video. It's really not a big deal to have a few hundred ms of delay in a videoconferencing system.And why use 30fps video, when 24fps would be perfectly adequate?
Sharktooth
30th May 2009, 16:55
15FPS are more than enough for video conferencing.
Dark Shikari
30th May 2009, 17:20
And why use 30fps video, when 24fps would be perfectly adequate?Because if you have the bandwidth to get away with it, smoother motion is better.
Real-time 30fps 640x480 is quite possible with reasonable quality even on a relatively low-end DSL connection.
scharfis_brain
30th May 2009, 17:40
also most consumer grade cameras won't allow 24fps capturing.
fields_g
30th May 2009, 19:27
For most realtime 2 way apps, many people attempt to keep total latency under 150ms. This includes all encoding, networking, and decoding latencies. B frames could be used, but takes away the margins of the rest of the system.
SeeMoreDigital
30th May 2009, 20:23
also most consumer grade cameras won't allow 24fps capturing.Surely this is only due to a software limitation.
The more devices that can capture at 24p (ie: film speed), the better - I say :)
Comatose
30th May 2009, 21:37
Most (if not all) consumer webcams capture at 30 fps.
Atak_Snajpera
30th May 2009, 22:01
And why use 30fps video, when 24fps would be perfectly adequate?
Why should i limit my self to weird 24fps? We are not talking about recording movies. I like to see other person as smooth as it possible. I see huge difference between 25 fps and 30 fps!
15FPS are more than enough for video conferencing.
I cannot agree with you. It is like saying that 640kb of memory is more than enough :)
SeeMoreDigital
30th May 2009, 22:26
Most (if not all) consumer webcams capture at 30 fps.And I wonder who came up with that frame rate when the majority of the worlds population use (PAL/SECAM) 25fps :eek:
Atak_Snajpera
30th May 2009, 22:59
And I wonder who came up with that frame rate when the majority of the worlds population use (PAL/SECAM) 25fps
Pc world does not have to be limited in any way. 30fps is a lot smoother. 25fps looks like movie.
roozhou
31st May 2009, 05:24
I did small test. I used VirtualDub to capture 640x480@30fps from my cheap Logitech E3500 webcam. I added GPU denoiser...
...and encoded using these settings
encoding speed was two times faster than real time (56 fps -> Q6600@3ghz)
...and quality was extremely good ! A lot better than on2's.
I cannot show screenshots for obvious reasons :)
You were not doing realtime encoding, were you? Average fps makes no sense. You should capture, encode and decode at the same time.
Also your GPU denoiser was a sort of cheating. fft3dgpu has significant speed difference between a NVidia 9600GT and a Intel integerated chipset.
Comatose
31st May 2009, 18:44
Yes, but Skype most likely does not do any denoising at all...
Chengbin
31st May 2009, 19:08
You can run fft3dgpu on an integrated chipset???
SeeMoreDigital
31st May 2009, 20:14
Pc world does not have to be limited in any way. 30fps is a lot smoother. 25fps looks like movie.Smoother.... For doing/viewing what?
And lets not forget, Skype can also be used without a PC. Even for making video phone calls: -
http://shop.skype.com/intl/en-gb/phones/new-asus-aiguru-sv1.html
If you thought H.264 licenses cost a lot of money, you better not look at what On2 charges... :p
I suspect they just got suckered by marketing.
(and H.264 licensing caps out at only a few million dollars per year, so it's really not that bad for a very widely-installed product.)
Few Millions dollar per year is a lot for Skype.
Dark Shikari
1st June 2009, 05:50
Few Millions dollar per year is a lot for Skype.As I said, you better not look at what On2 charges if you think that's a lot... :p
Atak_Snajpera
1st June 2009, 18:06
You can run fft3dgpu on an integrated chipset???
Yes as long as it supports pixel shader 2.0.
Also your GPU denoiser was a sort of cheating. fft3dgpu has significant speed difference between a NVidia 9600GT and a Intel integerated chipset.
So what was I supposed to do? Use CPU version?!?! It would be slow as hell.
You should capture, encode and decode at the same time.
Decoding 640x480@30fps 384kbps does not eat cpu cycles like 1080p@10MBps!
Yes, but Skype most likely does not do any denoising at all...
They should add denoiser because majority of people has cheap webcams. It really improves quality.
Smoother.... For doing/viewing what?
For chating with my family in Poland. I want to see them (and they want see me) in the best possible quality. 15fps sucks. end of story. Vp7 sucks as well. I have 512kbps+ upload speed and I send only 15fps! I checked webcam's settings and I forced 30fps in config as well.
roozhou
1st June 2009, 18:21
So what was I supposed to do? Use CPU version?!?! It would be slow as hell.
Yes, try hqdn3d. It gives good result and is not that damned slow.
Decoding 640x480@30fps 384kbps does not eat cpu cycles like 1080p@10MBps!
Yes, but your encoder and denoiser are running simultaneously.
Try to build a directshow graph w/ your webcamera and try encoding the graph w/ x264 and piping raw H264 stream to MPlayer.
Gokumon
2nd June 2009, 02:09
Few Millions dollar per year is a lot for Skype.
Their net revenue has been over 140 million for the last few years. A couple of million isn't a lot for them.
10L23r
2nd June 2009, 06:25
30fps is a lot smoother. 25fps looks like movie.
i think that's because of your screen's refresh rate. cus 24 fps looks smoother to me than 25 lol.
Gabriel_Bouvigne
2nd June 2009, 12:24
And I wonder who came up with that frame rate when the majority of the worlds population use (PAL/SECAM) 25fps :eek:
It comes from the NTSC standard (about 29.97Hz), which is based on the AC power frequency available within USA (60Hz). NTSC is still based on some legacy issues dating back from 70 years ago.
SeeMoreDigital
2nd June 2009, 17:09
It comes from the NTSC standard (about 29.97Hz), which is based on the AC power frequency available within USA (60Hz). NTSC is still based on some legacy issues dating back from 70 years ago.Indeed yes, you're right - I was attempting to be sarcastic (but failed).
Provide your ISP's uplink is fast and stable and the camera is up-to the mark. 24p should be more than enough for web streaming.
Anyway... enough said. Cheers all.
saint-francis
3rd June 2009, 00:34
I have 512kbps+ upload speed and I send only 15fps! I checked webcam's settings and I forced 30fps in config as well.
If Skype thinks the receiving PC can't cope with 640x480 30 fps Skype will drop the frame rate from time to time to accommodate it.
Atak_Snajpera
3rd June 2009, 11:08
If Skype thinks the receiving PC can't cope with 640x480 30 fps Skype will drop the frame rate from time to time to accommodate it.
They have real 1.5 Mbps. CPU is also fast enough (quad core 2.33Ghz)
roozhou
3rd June 2009, 11:23
If Skype thinks the receiving PC can't cope with 640x480 30 fps Skype will drop the frame rate from time to time to accommodate it.
This results in variable frame rate, which requires time-based rate control.
x264 uses frame-based rate control, thus it is not competent for such real-time streaming.
shark37
3rd June 2009, 14:12
For chating with my family in Poland. I want to see them (and they want see me) in the best possible quality. 15fps sucks. end of story. Vp7 sucks as well. I have 512kbps+ upload speed and I send only 15fps! I checked webcam's settings and I forced 30fps in config as well.
You can try yet another free PC to PC VoIP solution
http://www.oovoo.com/
"What is ooVoo?
ooVoo is FREE video calling.
See up to six friends, family or colleagues at the same time –
with video quality that’s like being face-to-face the same room!"
They also chose On2 codec :D
vBulletin® v3.8.5, Copyright ©2000-2012, Jelsoft Enterprises Ltd.