William
07-22-2004, 01:59 AM
I have seen some posts in the past questioning whether H.264 actually gave better quality on certain endpoints. I was on a call today which demonstrated why this could be an issue, and really it’ was an underpowered endpoint which is to blame – not the codec.
Here is what I was doing…
I was on a video call from the states to Europe over IP. We were connected at 256k both ends had endpoints which supported H.264. One was from vendor A, which was underpowered, but still claimed to be able to do 30fps of H.264, and the other was from vendor B. I was using the endpoint B, which I had been very pleased with, but this call was just not very good. The video was really jerky and blocky, I was very disappointed, so I assumed that the connection was bad and continued with the call.
As we were wrapping up I asked the other people what they they thought about the video quality and they said they were amazed at how smooth and sharp the image was, well I was dumbfounded, because I always thought that endpoint A wasn’t very powerful. So we spent a little time looking into what was going on.
The product from Vendor B was producing very good H.264 at 30fps just as had been negotiated, and was sending it well within the allocated bandwidth. The endpoint from vendor A was receiving this stream, decoding it, and producing a lovely picture. This was using about 70% of its DSP power. (Remember endpoints cant cheat on the decode, they must decode every frame, since each frame depends on the one before).
The result of this is that endpoint A did not have enough DSP power left to do anything other than a pathetic 4fps of really shoddy video. Much worse than it would have been if we had connected using H.263, because in this case it would have used 30% of the DSP to decode leaving 70% for a good encode. (Degrading on the encode is allowable, its all an codec can do when getting overloaded). What irks me is that endpoint A negotiates 30fps, and it NEVER sends more than 15fps. The only way it can do that is when it connects to another endpoint A which only sends it 15fps.
So what was the result ?
I had a more powerful endpoint, but my video quality was worse because of it !
Do we put too much pressure on the vendors to implement features that are beyond the capabilities of their hardware, or should we expect vendors to be more specific about the limitations on features in their products?
Here is what I was doing…
I was on a video call from the states to Europe over IP. We were connected at 256k both ends had endpoints which supported H.264. One was from vendor A, which was underpowered, but still claimed to be able to do 30fps of H.264, and the other was from vendor B. I was using the endpoint B, which I had been very pleased with, but this call was just not very good. The video was really jerky and blocky, I was very disappointed, so I assumed that the connection was bad and continued with the call.
As we were wrapping up I asked the other people what they they thought about the video quality and they said they were amazed at how smooth and sharp the image was, well I was dumbfounded, because I always thought that endpoint A wasn’t very powerful. So we spent a little time looking into what was going on.
The product from Vendor B was producing very good H.264 at 30fps just as had been negotiated, and was sending it well within the allocated bandwidth. The endpoint from vendor A was receiving this stream, decoding it, and producing a lovely picture. This was using about 70% of its DSP power. (Remember endpoints cant cheat on the decode, they must decode every frame, since each frame depends on the one before).
The result of this is that endpoint A did not have enough DSP power left to do anything other than a pathetic 4fps of really shoddy video. Much worse than it would have been if we had connected using H.263, because in this case it would have used 30% of the DSP to decode leaving 70% for a good encode. (Degrading on the encode is allowable, its all an codec can do when getting overloaded). What irks me is that endpoint A negotiates 30fps, and it NEVER sends more than 15fps. The only way it can do that is when it connects to another endpoint A which only sends it 15fps.
So what was the result ?
I had a more powerful endpoint, but my video quality was worse because of it !
Do we put too much pressure on the vendors to implement features that are beyond the capabilities of their hardware, or should we expect vendors to be more specific about the limitations on features in their products?